亚马逊AWS官方博客
跨 AWS Region 建立 Amazon MSK 私有连接
背景
在实际生产环境中,有的时候会面对 Amazon MSK 服务集群和 Kafka 客户端应用不在同一个组织内部,双方基于安全考虑不能直接建立 VPC 对等连接,需要使用私有网络进行互联。例如:分析服务提供商需要从客户侧的 Amazon MSK 集群中抽取数据或者让客户将数据注入到自己的 Amazon MSK 集群中,通常的解决方案是使用 PrivateLink 或者 MSK Managed VPC connection 将两个环境进行打通,但如果两个环境分布在不同的 AWS Region 里,那么这两种私有连接方式都无法满足客户的需求。本方案结合 MSK Managed VPC connection 和 VPC Peering 为用户提供跨 Region 的私有连接方式,既满足网络安全隔离的要求,也能实现跨 Region 的 MSK 访问。
架构
- 架构图
- 架构描述
假设 Account A 中的 MSK 集群部署在 Oregon region 中,而 Account B 的 Kafka Client 应用部署在 Virginia region 中。由于托管的 MSK Connection 不能跨 Region 建连,所以该方案中我们会在 Oregon 为 Account B 部署 Proxy VPC。在 Proxy VPC 中向 Account A 的 MSK Cluster 发起 MSK Connection 申请,Kafka Client 所在 VPC 也要与 Proxy VPC 建立 Peering Connection。在 Account B 中创建 Route53 Private Host Zone 关联到 Kafka Client 所在 VPC,并将 MSK Broker Domain 映射到 Proxy VPC 的 MSK Connection ENI 上,使得 Kafka Client 可以在本地 VPC 能够解析 MSK Broker Domain。
部署
- 前提条件
- Account A 中的 MSK Cluster 已经部署完成(managed MSK Connection 要求 Kafka 版本必须大于 2.7.1,且集群必须开启 IAM 认证方式)
- 部署步骤
- 在 Account B 中的 Oregon Region 创建基础 VPC 作为 Proxy VPC。在 Virginia Region 发起 Kafka Client 所在 VPC 与 Proxy VPC 的 Peering Connection 请求。
- 在 Account A 的 MSK 集群中开启 Muti-VPC Connectivity 功能,并配置 Cluster Policy,允许 Account B 连接此 MSK Cluster。
Cluster Policy:
- 在 Account B 的 Oregon Region 的 MSK 服务中创建 managed VPC connection 连接到 Account A 中的 MSK 集群,并关联 Proxy VPC。
创建完成后会在 Account B 的 Oregon Region 自动生成一个 VPC Endpoint。
- 在 Account B 为 Domain name kafka.us-west-2.amazonaws.com 创建一个 Route53 Private Host Zone,关联 Kafka Client 所在的 VPC。
- 在这个 Private Host Zone 中创建 records,将 MSK Broker 的泛域名(*.iam.bhpoc.38qbl5.c14.kafka.us-west-2.amazonaws.com)与 VPC Endpoint 进行绑定。这样做的好处是每个 MSK Broker 域名都可以解析多个 ENI 地址,如果一个 ENI 故障,不会影响某一个 Broker 访问。
- 验证测试
1. 验证网络连通性
输出结果
2. 验证 MSK 客户端创建 Topic
输出结果
总结
与 PrivateLink 相比,MSK Managed VPC connection 提供了托管的私有访问方式,让用户不用自建 VPC Endpoint 和 NLB,简化了网络互连难度,但两者都不能支持跨 Region 的访问。虽然 VPC Peering 可以提供简单跨 Region 的私有网络连接,但两个 VPC 环境完全打通会增加网络安全隔离难度,而且如果是跨组织的访问很难保证两个 VPC 网络不重叠的情况发生。本方案结合 MSK Managed VPC connection 和 VPC Peering 为用户提供跨 Region 的私有访问方式,既满足网络安全隔离的要求,也能实现跨 Region 的 MSK 访问。