跨区私有连接新方案:满足网络安全隔离要求,还能支持跨区 MSK 访问!

1312dda984b9a430d2b07a4eaa84bf0b.gif

背景

在实际生产环境中,有时会出现 Amazon MSK 服务集群和 Kafka 客户端应用不在同一个组织内部,基于安全考虑二者不能直接建立 Amazon VPC 对等连接,需要使用私有网络进行互联的情况。

例如:分析服务提供商需要从客户侧的 Amazon MSK 集群中抽取数据或者让客户将数据注入到自己的 Amazon MSK 集群中,通常的解决方案是使用 Amazon PrivateLink 或者 Amazon MSK Managed VPC Connection 将两个环境进行打通,但如果两个环境分布在不同的 Region 地区里,那么这两种私有连接方式都无法满足客户的需求。

本方案结合 MSK Managed VPC Connection 和 VPC Peering 为用户提供跨 Region 的私有连接方式,既满足网络安全隔离的要求,也能实现跨 Region 的 Amazon MSK 访问。

架构

outside_default.png

架构图

a6f37229eb1eefaa0e49c929f82637e4.png

outside_default.png

架构描述

假设 Account A 中的 Amazon 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 所在Amazon VPC 也要与 Proxy VPC 建立 Peering Connection。

在 Account B 中创建 Route53 Private Host Zone 关联到 Kafka Client 所在 Amazon VPC,并将 MSK Broker Domain 映射到 Proxy VPC 的 MSK Connection ENI 上,使得 Kafka Client 可以在本地 Amazon VPC 能够解析 MSK Broker Domain。

部署

outside_default.png

前提条件

Account A 中的 MSK Cluster 已经部署完成(Managed MSK Connection 要求 Kafka 版本必须大于 2.7.1,且集群必须开启 Amazon IAM 认证方式)

outside_default.png

部署步骤

1.在 Account B 中的 Oregon Region 创建基础 VPC 作为 Proxy VPC。在 Virginia Region 发起 Kafka Client 所在 Amazon VPC 与 Proxy VPC 的 Peering Connection 请求。

334ab48e77127e03308a681250d515cd.png

5276d4938c825ffcf5ed889db6e92c6e.png

2.在 Account A 的 Amazon MSK 集群中开启 Muti-VPC Connectivity 功能,并配置 Cluster Policy,允许 Account B 连接此 MSK Cluster。

Cluster Policy:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::Account-B:root"
      },
      "Action": [
        "kafka:CreateVpcConnection",
        "kafka:GetBootstrapBrokers",
        "kafka:DescribeCluster",
        "kafka:DescribeClusterV2"
      ],
      "Resource": "arn:aws:kafka:us-west-2:Account-A:cluster/BHPoc/4f2146b2-6c76-4069-99db-7d053f48d08a-14"
    }
  ]
}

左右滑动查看完整示意

3.在 Account B 的 Oregon Region 的 Amazon MSK 服务中创建 Managed VPC Connection 连接到 Account A 中的 Amazon MSK 集群,并关联 Proxy VPC。

0e8774c1392c476ce14eb7905d3ebb70.png

创建完成后会在 Account B 的 Oregon Region 自动生成一个 VPC Endpoint。

d2a009d9db5092cf6a4e068c417aff6e.png

4.在 Account B 为 Domain name kafka.us-west-2.amazonaws.com 创建一个 Route53 Private Host Zone,关联 Kafka Client 所在的 Amazon VPC。

3ee82d90129da87bbbb8d55126afe255.png

0865f57e7a1c9914171406aab921149c.png

5在这个 Private Host Zone 中创建 records,将 MSK Broker 的泛域名(*.iam.bhpoc.38qbl5.c14.kafka.us-west-2.amazonaws.com)与 VPC Endpoint 进行绑定。这样做的好处是每个 MSK Broker 域名都可以解析多个 ENI 地址,如果一个 ENI 故障,不会影响某一个 Broker 访问。

f1934f8a0c428cde1a178d2d8a72c18d.png

outside_default.png

验证测试

  1.  验证网络连通性

dig +short b-1.iam.bhpoc.38qbl5.c14.kafka.us-west-2.amazonaws.com
dig +short b-2.iam.bhpoc.38qbl5.c14.kafka.us-west-2.amazonaws.com
dig +short b-3.iam.bhpoc.38qbl5.c14.kafka.us-west-2.amazonaws.com

左右滑动查看完整示意

输出结果

9f845eed4bbd0f79959bce701a39e145.png

2. 验证 Amazon MSK 客户端创建 Topic

./kafka-topics.sh --create --bootstrap-server b-2.iam.bhpoc.38qbl5.c14.kafka.us-west-2.amazonaws.com:14002,b-1.iam.bhpoc.38qbl5.c14.kafka.us-west-2.amazonaws.com:14001,b-3.iam.bhpoc.38qbl5.c14.kafka.us-west-2.amazonaws.com:14003 --command-config ./client.properties --replication-factor 2 --partitions 1 --topic topic10

左右滑动查看完整示意

输出结果

ebbcdc6609310ccbff1b7955b05ff908.png

总结

与 Amazon PrivateLink 相比,MSK Managed VPC Connection 提供了托管的私有访问方式,让用户不用自建 VPC Endpoint 和 NLB,简化了网络互连难度,但两者都不能支持跨 Region 的访问。

虽然 VPC Peering 可以提供简单跨 Region 的私有网络连接,但两个 Amazon VPC 环境完全打通会增加网络安全隔离难度,而且如果是跨组织的访问很难保证两个 Amazon VPC 网络不重叠的情况发生。

本篇作者

ce330f694122f7114d2cd683e9ea7805.png

刘欣然

亚马逊云科技解决方案架构师,目前负责互联网媒体行业云端应用的架构设计与技术咨询,专注于 Devops 与边缘计算领域。

8fb4c3fd24d2cdd0e642f784736b67a8.png

薛佳庆

亚马逊云科技解决方案架构师,负责为互联网出海客户提供云上服务的解决方案,在无服务器,容器技术,数据分析等方面有丰富的经验。

593dfd0c9f6e6e1b73f9d92ac14861bc.png

韩宇光

亚马逊云科技解决方案架构师,熟悉互联网业务的大数据业务场景,深入理解云架构设计,对云上的运维、Devops、大数据解决方案有丰富的实践经验。

b76e99ef89ee7e8308baa422f87d3528.png

8a16a2e98ec186419900ef400e1ddaa5.gif

星标不迷路,开发更极速!

关注后记得星标「亚马逊云开发者」

听说,点完下面4个按钮

就不会碰到bug了!

2ae4de4726b7c132ef48acd03254d888.gif

点击阅读原文查看博客!获得更详细内容!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值