更新时间:2024-04-07 GMT+08:00
跨VPC访问Kafka实例
背景描述
Kafka客户端和Kafka实例在同一区域的不同VPC中,由于VPC之间逻辑隔离,Kafka客户端和Kafka实例不能直接通信。您可以通过以下任意一个方式实现跨VPC访问:
- 创建VPC对等连接,将两个VPC的网络打通,实现跨VPC访问。具体步骤请参考《虚拟私有云 用户指南》的“VPC对等连接”章节。
- 利用VPC终端节点在不同VPC间建立跨VPC的连接通道,实现Kafka客户端通过内网访问Kafka实例。
操作场景
本章节主要介绍通过VPC终端节点实现跨VPC访问的方法。
VPC终端节点由“终端节点服务”和“终端节点”两种资源实例组成。
- 终端节点服务:将Kafka实例配置为VPC终端节点支持的服务,可以被终端节点连接和访问。
- 终端节点:用于在VPC和终端节点服务之间建立便捷、安全、私密的连接通道。
图1 跨VPC访问Kafka实例原理图
![点击放大](https://support.huaweicloud.com/intl/zh-cn/eu-west-0-usermanual-kafka/zh-cn_image_0000001376864660.png)
操作流程
图2 跨VPC访问Kafka实例流程图
![](https://support.huaweicloud.com/intl/zh-cn/eu-west-0-usermanual-kafka/zh-cn_image_0000001382159745.png)
创建终端节点服务
- 登录管理控制台。
- 在管理控制台左上角单击
,选择区域。
请选择Kafka实例所在的区域。
- 在管理控制台左上角单击
,选择“应用服务 > 分布式消息服务 Kafka”,进入分布式消息服务Kafka专享版页面。
- 单击Kafka实例名称,进入实例详情页面。
- 在“基本信息”页面的“高级配置”区域,获取Kafka实例的网卡地址(listeners IP)和对应的Port ID。
图3 Kafka实例的网卡地址(listeners IP)和对应的Port ID
- 在“基本信息”页面的“网络”区域,查看Kafka实例所在的VPC名称。
图4 查看Kafka实例所在的VPC名称
- 单击VPC名称,进入VPC基本信息页签,获取VPC ID。
图5 获取VPC ID
- 调用VPC终端节点的API创建终端节点服务,API详情请参考《VPC终端节点 接口参考》的“创建终端节点服务”章节。
curl -i -k -H 'Accept:application/json' -H 'Content-Type:application/json;charset=utf8' -X POST -H "X-Auth-Token:$token" -d '{"port_id":"38axxxeac","vpc_id":"706xxx888","ports":[{"protocol":"TCP","client_port":9011,"server_port":9011 }],"approval_enabled":false,"service_type":"interface","server_type":"VM"}' https://{endpoint}/v1/{project_id}/vpc-endpoint-services
参数说明如下:
- token:Token是系统颁发给IAM用户的访问令牌,承载用户的身份、权限等信息,获取方法请参考获取用户Token。
- port_id:输入5中获取的其中一个Port ID。
- vpc_id:输入7中获取的VPC ID。
- endpoint:获取VPC终端节点的终端节点,区域必须与Kafka实例保持一致。
- project_id:获取VPC终端节点的项目ID,区域必须与Kafka实例保持一致。
记录响应信息中的“service_name”参数值,此参数表示终端节点服务的名称。
- 参考8,为5中其他Port ID创建终端节点服务,并记录终端节点服务的名称。
(可选)添加白名单
Kafka客户端和Kafka实例属于不同账号时,将Kafka客户端所在账号的ID添加到终端节点服务的白名单中,完成跨账号终端节点的访问授权,具体操作步骤请参考添加白名单。
创建终端节点
- 在管理控制台左上角单击
,选择“网络 > VPC终端节点”,进入终端节点页面。
- 单击“创建终端节点”,进入“创建终端节点”页面。
- 设置如下参数。
- 区域:与Kafka实例保持一致。
- 服务类别:选择“按名称查找服务”。
- 服务名称:输入8中记录的终端节点服务名称,单击“验证”。显示“已找到服务”后,继续后续操作。
- 虚拟私有云:选择Kafka客户端所属的VPC。
- 子网:选择Kafka客户端所属的子网。
- 节点IP:选择“自动分配”。
其他参数保持默认,如果想要了解更多的参数信息,请参考创建终端节点。
图6 终端节点参数设置 - 单击“立即申请”,进入规格确认页面。
- 确认无误后,提交请求。
- 创建成功后,返回终端节点页面,查看终端节点状态是否为“已接受”,“已接受”表示终端节点已成功连接至终端节点服务。
图7 查看终端节点状态
- 单击终端节点ID,在“基本信息”页签,查看并记录节点IP。
您可以使用节点IP访问终端节点服务,进行跨VPC资源通信。
图8 查看节点IP - 参考1~7,为9中创建的终端节点服务创建终端节点,查看并记录节点IP。
修改advertised.listeners IP
验证接口连通性
参考连接未开启SASL的Kafka实例或者连接已开启SASL的Kafka实例,测试是否可以生产和消费消息。
测试接口连通性时,注意以下几点:
- 连接Kafka实例的地址为“advertised.listeners IP:9011”,以图9为例,连接Kafka实例的地址为“192.168.0.92:9011,192.168.0.93:9011,192.168.0.94:9011”。
- 在Kafka实例安全组的入方向规则中放通9011端口,以及198.19.128.0/17网段的地址。
- 如果Kafka实例的子网配置了网络ACL功能,需要在网络ACL的入方向规则中放通198.19.128.0/17网段的地址,以及VPC终端节点涉及的子网。
![](https://support.huaweicloud.com/intl/zh-cn/eu-west-0-usermanual-kafka/public_sys-resources/note_3.0-zh-cn.png)
198.19.128.0/17是为VPC终端节点分配的网段,使用VPC终端节点需要放通此网段。
父主题: 连接Kafka