使用DNAT实现公网访问Kafka
您可以通过以下任意一个方式实现公网访问:
- 在Kafka实例控制台开启公网访问,使用弹性IP地址连接Kafka实例,具体请参考配置Kafka实例的公网访问。
- 使用DNAT通过端口映射方式,将弹性IP地址映射到Kafka实例指定端口,实现Kafka实例对公网提供服务。
本章节主要介绍使用DNAT实现公网访问Kafka。
前提条件
已购买弹性公网IP,弹性公网IP的数量与Kafka实例中代理个数相同。购买弹性IP地址的操作指导请参考申请弹性公网IP。
步骤一:获取Kafka实例的信息
- 登录Kafka控制台。
- 在管理控制台左上角单击
,选择Kafka实例所在的区域。
- 单击Kafka实例名称,进入实例详情页面。
- 在“概览”页面的“连接信息”区域,获取并记录Kafka实例的内网连接地址。在“网络”区域,获取并记录Kafka实例所在的虚拟私有云和子网。
图1 Kafka实例信息
步骤二:购买公网NAT网关
- 在管理控制台左上角单击
,选择“网络 > NAT网关”,进入“公网NAT网关”页面。
- 单击“购买公网NAT网关”,进入“购买公网NAT网关”页面。
- 参考表1设置参数,其他参数请根据实际情况填写,如果想要了解更多的参数信息,请参考购买公网NAT网关。
图2 购买公网NAT网关
表1 创建公网NAT网关参数说明 参数名称
说明
区域
公网NAT网关所在的区域。与Kafka实例保持一致。
名称
您自定义的公网NAT网关名称。最大支持64个字符,仅支持中文、数字、字母、_(下划线)、-(中划线)、.(点号)。
虚拟私有云
公网NAT网关所属的VPC。选择获取Kafka实例的信息中记录的虚拟私有云。
子网
公网NAT网关所属VPC中的子网。选择获取Kafka实例的信息中记录的子网。
企业项目
公网NAT网关归属的企业项目。根据实际情况选择。
- 单击“立即购买”,进入规格确认页面。
- 确认规格无误后,如果“计费模式”选择“包年/包月”,单击“去支付”。根据界面提示信息,支付费用。如果“计费模式”选择“按需付费”,单击“提交”。
步骤三:添加DNAT规则
- 在“公网NAT网关”页面,在新购买的公网NAT网关后,单击“设置规则”,进入公网NAT网关详情页。
- 在“DNAT规则”页签,单击“添加DNAT规则”,弹出“添加DNAT规则”对话框。
图3 公网NAT网关详情页
- 参考表2设置参数,如果想要了解更多的参数信息,请参考添加DNAT规则。
图4 添加DNAT规则
表2 添加DNAT规则 参数名称
说明
使用场景
选择“虚拟私有云”,表示虚拟私有云中的云主机将通过DNAT的方式共享弹性公网IP,为公网提供服务。
端口类型
选择“具体端口”,公网NAT网关会将以指定协议和端口访问该弹性公网IP的请求转发到目标云主机实例的指定端口上。
支持协议
选择“TCP”。
公网IP类型
用来提供互联网访问的公网IP的类型。
选择“弹性公网IP”,在下拉框中选择已购买的弹性公网IP。
公网端口
弹性公网IP的端口,输入“9011”。
实例类型
对外部公网提供服务的实例类型,选择“自定义”。
私网IP
输入获取Kafka实例的信息中记录的Kafka实例的一个内网连接地址。
私网端口
私网IP的端口,输入“9011”。
- 单击“确定”,完成DNAT规则的添加。
DNAT规则添加成功后,在DNAT规则列表中查看此规则的状态,若“状态”为“运行中”,表示创建成功。
- 为获取Kafka实例的信息中记录的其他内网连接地址创建DNAT规则,每个DNAT规则需要设置不同的弹性公网IP。
- DNAT规则全部创建成功后,在“DNAT规则”页签,查看已创建的DNAT规则,并记录私网IP对应的弹性公网IP。
图5 DNAT规则列表
步骤四:将弹性公网IP地址映射到内网IP地址的9011端口
- 在管理控制台左上角单击
,选择“应用中间件 > 分布式消息服务Kafka版”,进入Kafka总览页面。
- 在左侧导航栏单击“Kafka实例”,进入Kafka实例列表页面。
- 单击Kafka实例名称,进入实例详情页面。
- 在“概览”页面的“高级配置”区域,单击“修改”。
- 将“advertised.listeners IP/域名”改为DNAT规则中的弹性公网IP,内网连接地址和弹性公网IP的对应关系与添加DNAT规则中记录的对应关系保持一致,单击“保存”。
步骤五:验证接口连通性
参考使用客户端连接Kafka(明文接入)或者使用客户端连接Kafka(密文接入),测试是否可以生产和消费消息。
测试接口连通性时,注意以下几点:
- 连接Kafka实例的地址为“advertised.listeners IP:9011”,以图6为例,连接Kafka实例的地址为“124.xxx.xxx.167:9011,124.xxx.xxx.174:9011,124.xxx.xxx.57:9011”。
- 在Kafka实例安全组的入方向规则中放通9011端口。
- 连接Kafka实例的客户端已开启公网访问功能。