Mac OSX下如何将主机名流量转发至SSH隧道?Kafka集群配置求助
通过跳板机连接Kafka集群:SSH隧道+本地主机名解析方案
我之前也碰到过一模一样的问题——要通过跳板机访问三台监听9092端口的Kafka Broker,直接搭隧道不难,但Broker返回的advertised hostname在本地根本解析不了,折腾了好久终于在Ubuntu上搞定了,分两步走:
第一步:配置SSH隧道(编辑~/.ssh/config)
首先编辑你的SSH配置文件,把跳板机和三个Broker的隧道转发规则写进去,这样本地就能把指定端口转发到对应Broker的9092端口:
# 跳板机配置,给它起个方便的别名 Host jump-server HostName 跳板机IP或域名 User 你的跳板机用户名 Port 跳板机SSH端口(默认22的话可以不写) # Kafka Broker 1的隧道转发,本地用9093端口映射到Broker1的9092 Host kafka-broker-1-tunnel HostName Broker1的内部IP或hostname User 跳板机用户名(因为要通过跳板机中转) Port 22 ProxyJump jump-server LocalForward 9093 localhost:9092 # Kafka Broker 2的隧道转发,本地用9094端口映射到Broker2的9092 Host kafka-broker-2-tunnel HostName Broker2的内部IP或hostname User 跳板机用户名 Port 22 ProxyJump jump-server LocalForward 9094 localhost:9092 # Kafka Broker 3的隧道转发,本地用9095端口映射到Broker3的9092 Host kafka-broker-3-tunnel HostName Broker3的内部IP或hostname User 跳板机用户名 Port 22 ProxyJump jump-server LocalForward 9095 localhost:9092
保存配置后,你只需要分别执行这三条命令启动隧道(或者把它们加到后台自动启动):
ssh -Nf kafka-broker-1-tunnel ssh -Nf kafka-broker-2-tunnel ssh -Nf kafka-broker-3-tunnel
解释下参数:-N表示只建立隧道不执行远程命令,-f表示后台运行。
第二步:配置本地主机名映射(编辑/etc/hosts)
这是解决advertised hostname问题的关键!Kafka Broker会把自己的advertised hostname返回给客户端,如果这个hostname在本地解析不了,客户端就会连不上。我们需要把这些hostname映射到localhost,同时对应到刚才配置的本地转发端口:
打开/etc/hosts文件(需要sudo权限):
sudo nano /etc/hosts
添加下面的内容(把kafka-broker-xxx替换成实际的advertised hostname):
127.0.0.1 kafka-broker-1 127.0.0.1 kafka-broker-2 127.0.0.1 kafka-broker-3
然后在你的Kafka客户端配置里,把bootstrap servers写成:
bootstrap.servers=kafka-broker-1:9093,kafka-broker-2:9094,kafka-broker-3:9095
额外注意事项
- 如果你用的是Kafka命令行工具,确保客户端的
client.properties里配置了正确的bootstrap servers,并且本地能解析这些hostname - 要是Broker的advertised hostname是内部IP而不是域名,那直接把这些IP也映射到localhost就行
- 隧道启动后可以用
netstat -tulpn | grep 909[3-5]检查端口是否正常监听
内容的提问来源于stack exchange,提问作者MDThunder
相关产品推荐
相关产品推荐

