亚马逊AWS官方博客

VPC CIDR 冲突的情况下如何实现 EC2 和 OpenSearch 的网络互通

AWS OpenSearch 是一种托管的开源搜索和分析引擎,它基于 Elasticsearch 构建而成。它提供了强大的搜索和分析功能,可以帮助客户在大规模数据集中实现快速的搜索、聚合和分析。

AWS OpenSearch 可以用于多种应用场景,包括:

  1. 日志和指标分析:客户可以使用 AWS OpenSearch 对大量的日志和指标数据进行实时搜索和分析。通过创建索引和执行复杂的查询,可以发现和诊断潜在的问题、监控系统性能和进行趋势分析。
  2. 搜索引擎:AWS OpenSearch 可以用作全文搜索引擎,支持高度可定制的搜索和过滤功能。它可以用于构建电子商务网站、内容管理系统、文档存档等需要快速搜索和检索大量数据的应用程序。
  3. 实时数据分析:AWS OpenSearch 可以与实时数据流配合使用,例如使用 Amazon Kinesis Firehose 或 AWS Lambda 将数据推送到 OpenSearch 中。这样,客户可以实时分析和可视化数据,从而获得实时洞察和决策支持。
  4. 安全事件监控:通过将安全事件数据(例如日志、网络流量信息)发送到 AWS OpenSearch,客户可以实时监控和分析潜在的安全威胁和异常活动。这有助于提高安全性,并及时采取措施来应对安全事件。
  5. 业务智能和报告:使用 AWS OpenSearch,您可以构建自定义的仪表盘和报告,以支持业务智能和数据驱动的决策。通过搜索、聚合和可视化数据,您可以发现关键趋势、洞察客户行为和优化业务流程。

总之,AWS OpenSearch 是一个功能强大的搜索和分析引擎,适用于各种应用场景,包括日志分析、全文搜索、实时数据分析、安全事件监控以及业务智能和报告。它提供了丰富的功能和灵活的部署选项,使客户能够快速构建高性能的搜索和分析解决方案。

越来越多的客户选择了 OpenSearch 实现大规模数据集中快速的搜索、聚合和分析的需求。在一般情况下,如果应用和 OpenSearch 在同一个 VPC 内,则不需要特殊的网络配置;如果应用和 OpenSearch 之间存在跨 VPC 访问的情况,则一般可以采用 VPC peering 来解决不同 VPC 中数据互通的问题;但是如果 2 个需要相互访问的 VPC 存在 CIDR 块冲突的情况,则 VPC Peering 将无法建立。因为 VPC peering 有一个硬性要求,那就是 peering 的两端不能包含重叠的 CIDR 块。

为了解决上述应用和 OpenSearch 不在同一个 VPC,又存在 CIDR 块冲突的场景,我们提供了以下解决方案。

概述

现在有 VPC-A(应用所在的 VPC)和 VPC-B(OpenSearch 所在的 VPC)存在 CIDR 块冲突,如果 VPC-A 需要访问 VPC-B 中的 OpenSearch 集群:

  1. 创建一个 CIDR 块与 VPC-A 和 VPC-B 均不冲突的 VPC-C 来中转
  2. VPC-C 中创建 OpenSearch 的 VPC Endpoint
  3. VPC-AVPC-C 之间建立对等连接

架构图

配置过程

1. 公有域名绑定验证

使用公开域名 youqf.com 配置 Route 53 关联到 OpenSearch Endpoint。

连通测试

集群设置

Route 53 设置

2. 创建 OpenSearch VPC Endpoint

3. 选择需要允许访问的 VPC(架构图中的 VPC-C)

4. 选择合适的子网推荐至少 2 个子网(分布在 2 个 AZ 内)

5. 配置相应的安全组策略

6. 查看创建成功后的 VPC Endpoint

7. 创建 VPC-A 和 VPC-C 之间的对等连接(VPC Peering),并更新 2 个 VPC 的路由表

对等连接

VPC-C 路由表

VPC-A 路由表

8. 在 VPC-A 中创建 EC2 进行访问测试网络连通性

至此,我们可以看到,网络联通性已经解决,但是还有资源权限问题,我们会在后续的博客中详细介绍权限相关的配置。

总结

本文介绍的方案,通过创建一个全新的,且与应用所在的 VPC-A 和大数据所在的 VPC-B 都不存在 CIDR 块冲突的 VPC-C 作为中转,并在其中创建 OpenSearch 的 endpoint,然后创建 VPC-A 与 VPC-C 之间的 VPC peering,即可实现应用与大数据的网络通路。需要强调的是,这其实只能算作一个 workaround,AWS 最佳实践,还是建议客户在做最初的网络规划时,就尽可能避免 CIDR 块的冲突。

实际上本方案也同样适用于其他托管服务和应用之间,2 个 VPC CIDR 块冲突情况下的访问设置。通过新 VPC 中创建其他托管服务 endpoint 办法即可实现,再在应用 VPC 和新 VPC 之间建立 VPC Peering,其他网络配置同样可以参考本文。

本篇作者

林业

AWS 资深解决方案架构师,负责基于 AWS 的云计算方案的咨询与架构设计。拥有超过 14 年研发经验,曾打造千万级用户 APP,多项 Github 开源项目贡献者。在游戏、IoT、智慧城市、汽车、电商等多个领域都拥有丰富的实践经验。

任田田

AWS 解决方案架构师,负责基于 AWS 云计算方案架构的咨询和设计,推广 AWS 云平台技术和各种解决方案。