Windows 上连接虚拟机上docker的kafka报错unknown host
Kafka Listeners - Explained
https://rmoff.net/2018/08/02/kafka-listeners-explained/
The key thing is that when you run a client, the broker you pass to it is just where it’s going to go and get the metadata about brokers in the cluster from. The actual host & IP that it will connect to for reading/writing data is based on the data that the broker passes back in that initial connection—even if it’s just a single node and the broker returned is the same as the one connected to.
You need to set advertised.listeners
(or KAFKA_ADVERTISED_LISTENERS
if you’re using Docker images) to the external address (host/IP) so that clients can correctly connect to it. Otherwise they’ll try to connect to the internal host address–and if that’s not reachable then problems ensue.
Put another way, courtesy of Spencer Ruport:
LISTENERS
are what interfaces Kafka binds to. ADVERTISED_LISTENERS
are how clients can connect.
HOWTO: Connecting to Kafka on Docker
1 2 3 4 | listeners=INTERNAL: //0 .0.0.0:19092,EXTERNAL: //0 .0.0.0:9092 listener.security.protocol.map=INTERNAL:PLAINTEXT,EXTERNAL:PLAINTEXT advertised.listeners=INTERNAL: //ip-172-31-18-160 .us-west-2.compute.internal:19092,EXTERNAL: //ec2-54-191-84-122 .us-west-2.compute.amazonaws.com:9092 inter.broker.listener.name=INTERNAL |
错误
1 2 3 4 5 6 7 8 9 10 11 12 | public override void ConfigureServices(ServiceConfigurationContext context) { Configure<AbpKafkaOptions>(options => { //options.Connections.Default.BootstrapServers = "127.0.0.1:9092"; options.Connections.Default.BootstrapServers = "kafka1:9092,kafka2:9093,kafka3:9094" ; }); Configure<AbpKafkaEventBusOptions>(options => { options.GroupId = "MyGroupId2" ; options.TopicName = "MyTopicName" ; |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 | version: '3.7' networks: br17219: external: name: br17219 services: zk1: image: zookeeper hostname : zk1 container_name: zk1 ports: - 2181:2181 - 8181:8080 environment: ZOO_MY_ID: 1 ZOO_SERVERS: server.1=0.0.0.0:2888:3888;2181 server.2=zk2:2888:3888;2181 server.3=zk3:2888:3888;2181 volumes: - /usr/local/zookeeper/zk1/data : /data - /usr/local/zookeeper/zk1/datalog : /datalog networks: br17219: ipv4_address: 172.20.0.11 zk2: image: zookeeper hostname : zk2 container_name: zk2 ports: - 2182:2181 - 8182:8080 environment: ZOO_MY_ID: 2 ZOO_SERVERS: server.1=zk1:2888:3888;2181 server.2=0.0.0.0:2888:3888;2181 server.3=zk3:2888:3888;2181 volumes: - /usr/local/zookeeper/zk2/data : /data - /usr/local/zookeeper/zk2/datalog : /datalog networks: br17219: ipv4_address: 172.20.0.12 zk3: image: zookeeper hostname : zk3 container_name: zk3 ports: - 2183:2181 - 8183:8080 environment: ZOO_MY_ID: 3 ZOO_SERVERS: server.1=zk1:2888:3888;2181 server.2=zk2:2888:3888;2181 server.3=0.0.0.0:2888:3888;2181 volumes: - /usr/local/zookeeper/zk3/data : /data - /usr/local/zookeeper/zk3/datalog : /datalog networks: br17219: ipv4_address: 172.20.0.13 kafka1: image: wurstmeister /kafka depends_on: - zk1 - zk2 - zk3 restart: always hostname : kafka1 container_name: kafka1 ports: - 9092:9092 environment: KAFKA_ADVERTISED_HOST_NAME: kafka1 KAFKA_ADVERTISED_PORT: 9092 KAFKA_ZOOKEEPER_CONNECT: zk1:2181,zk2:2181,zk3:2181 KAFKA_ADVERTISED_LISTENERS: PLAINTEXT: //kafka1 :9092 KAFKA_LISTENERS: PLAINTEXT: //kafka1 :9092 volumes: - /usr/local/kafka/kafka1/logs : /kafka external_links: - zk1 - zk2 - zk3 networks: br17219: ipv4_address: 172.20.0.14 extra_hosts: - kafka1:172.20.0.14 kafka2: image: wurstmeister /kafka depends_on: - zk1 - zk2 - zk3 restart: always hostname : kafka2 container_name: kafka2 ports: - 9093:9093 environment: KAFKA_ADVERTISED_HOST_NAME: kafka2 KAFKA_ADVERTISED_PORT: 9093 KAFKA_ZOOKEEPER_CONNECT: zk1:2181,zk2:2181,zk3:2181 KAFKA_ADVERTISED_LISTENERS: PLAINTEXT: //kafka2 :9093 KAFKA_LISTENERS: PLAINTEXT: //kafka2 :9093 volumes: - /usr/local/kafka/kafka2/logs : /kafka external_links: - zk1 - zk2 - zk3 networks: br17219: ipv4_address: 172.20.0.15 extra_hosts: - kafka2:172.20.0.15 kafka3: image: wurstmeister /kafka depends_on: - zk1 - zk2 - zk3 restart: always hostname : kafka3 container_name: kafka3 ports: - 9094:9094 environment: KAFKA_ADVERTISED_HOST_NAME: kafka3 KAFKA_ADVERTISED_PORT: 9094 KAFKA_ZOOKEEPER_CONNECT: zk1:2181,zk2:2181,zk3:2181 KAFKA_ADVERTISED_LISTENERS: PLAINTEXT: //kafka3 :9094 KAFKA_LISTENERS: PLAINTEXT: //kafka3 :9094 volumes: - /usr/local/kafka/kafka3/logs : /kafka external_links: - zk1 - zk2 - zk3 networks: br17219: ipv4_address: 172.20.0.16 extra_hosts: - kafka3:172.20.0.16 kafka-manager: image: sheepkiller /kafka-manager :latest restart: always container_name: kafka-manager hostname : kafka-manager ports: - "9010:9000" links: - kafka1 - kafka2 - kafka3 external_links: - zk1 - zk2 - zk3 environment: ZK_HOSTS: zk1:2181,zk2:2181,zk3:2181 TZ: CST-8 networks: br17219: ipv4_address: 172.20.0.20 efak: image: ydockerp /efak :2.0.8 restart: always container_name: efak-manager hostname : efak ports: - "8048:8048" depends_on: - kafka1 - kafka2 - kafka3 environment: ZK_HOSTS: zk1:2181,zk2:2181,zk3:2181 networks: br17219: ipv4_address: 172.20.0.21 |

【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!