亚马逊AWS官方博客
VPC CIDR 冲突的情况下如何实现 EC2 和 OpenSearch 的网络互通
AWS OpenSearch 是一种托管的开源搜索和分析引擎,它基于 Elasticsearch 构建而成。它提供了强大的搜索和分析功能,可以帮助客户在大规模数据集中实现快速的搜索、聚合和分析。
AWS OpenSearch 可以用于多种应用场景,包括:
- 日志和指标分析:客户可以使用 AWS OpenSearch 对大量的日志和指标数据进行实时搜索和分析。通过创建索引和执行复杂的查询,可以发现和诊断潜在的问题、监控系统性能和进行趋势分析。
- 搜索引擎:AWS OpenSearch 可以用作全文搜索引擎,支持高度可定制的搜索和过滤功能。它可以用于构建电子商务网站、内容管理系统、文档存档等需要快速搜索和检索大量数据的应用程序。
- 实时数据分析:AWS OpenSearch 可以与实时数据流配合使用,例如使用 Amazon Kinesis Firehose 或 AWS Lambda 将数据推送到 OpenSearch 中。这样,客户可以实时分析和可视化数据,从而获得实时洞察和决策支持。
- 安全事件监控:通过将安全事件数据(例如日志、网络流量信息)发送到 AWS OpenSearch,客户可以实时监控和分析潜在的安全威胁和异常活动。这有助于提高安全性,并及时采取措施来应对安全事件。
- 业务智能和报告:使用 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 集群:
- 创建一个 CIDR 块与 VPC-A 和 VPC-B 均不冲突的
VPC-C
来中转 - 在
VPC-C
中创建 OpenSearch 的 VPC Endpoint - 在
VPC-A
和VPC-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,其他网络配置同样可以参考本文。