为了使我们的 Kafka 集群既可以从 Internet 也可以从我们的专用网络使用,我们认为可以这样配置 Kafka:
Private VIP:9000 => All brokers:9092 (topology query only)
Private VIP:9001 => Broker #1:9092
Private VIP:9002 => Broker #2:9092
...
Public VIP:9000 => All brokers:9092 (topology query only)
Public VIP:9001 => Broker #1:9092
Public VIP:9002 => Broker #2:9092
...
我们以这种方式配置了负载均衡器,然后是我们的代理:
listeners=PLAINTEXT://<server_priv_ip>:9092
advertised.listeners=INTERNAL://<private_VIP>:9001,EXTERNAL://<public_vip>:9001
listener.security.protocol.map=INTERNAL:PLAINTEXT,EXTERNAL:PLAINTEXT
inter.broker.listener.name=INTERNAL
现在,正如您所料,Kafka 代理不会启动:
ERROR Exiting Kafka due to fatal exception (kafka.Kafka$)
java.lang.IllegalArgumentException: requirement failed: Each listener must have a different port, listeners: INTERNAL://<private_VIP>:9001,EXTERNAL://<public_vip>:9001
从我的管理员的角度来看,我的方法是完全合乎逻辑的,尽管我预计生产者/消费者会从他们联系经纪人的任何地方获得两个地址的问题。在 2 个不同的地址上使用相同的端口似乎是合乎逻辑的,并且可以提高清晰度……
第一个问题:为什么这是错误的?
第二个问题:如果不是这样,我怎样才能实现我的目标?(大多数选项都在桌面上)
我们已经与 Kafka 专家进行了交谈,这就是结果。
简而言之,虽然 kafka 在其知识中具有侦听器名称来区分 2 个侦听器,但他需要知道连接的客户端想要到达哪个侦听器,并且只能使用传入端口这样做。
如果侦听器和广播的侦听器具有相同的端口,它们也会相互映射,因此您需要它们匹配。
最后,这就是我们所做的:
其中“N”是经纪人 ID(从 1 开始计数)
在负载均衡器上,我们将 VIP 的每个端口映射到代理的 IP 地址以及端口 9000(内部网络)和 9100(外部网络)上的虚拟 IP,它们映射到每个代理的相关侦听器。
这有点矫枉过正,但它可以按预期工作(只要
__consumer_offset
复制 kafka 内部元数据主题)在kafka中有一种情况是无法实现的。
现在我想通过断开 KAFKA VPN 来连接公共 IP。那可能吗 ?网络工作正常。我检查了 Trace Route 和 Reversed Trace Route。
我认为生产者/kafka 服务器/消费者配置存在一些问题
NAT 配置:: 10.XX.XX.XX:9092 -> AA.XX.XX.XX:9095 10.XX.XX.XY:9092 -> AA.XX.XX.XX:9093 10.XX.XX。 XZ:9092 -> AA.XX.XX.XX:9094
生产者配置::bootstrap-servers=10.XX.XX.XX:9092,10.XX.XX.XY:9092,10.XX.XX.XZ:9092
Kafka 配置:: listeners=SASL_SSL://0.0.0.0:9092,EXTERNAL://0.0.0.0:9095 广告.listeners=SASL_SSL://10.XX.XX.XX:9092,EXTERNAL://AA.XX .XX.XX:9095 listener.security.protocol.map=SASL_SSL:SASL_SSL,EXTERNAL:SASL_SSL
消费者配置:: sh kafka-console-consumer.sh --bootstrap-server AA.XX.XX.XX:9093,AA.XX.XX.XX:9094,AA.XX.XX.XX:9095 --topic test --consumer.config 消费者.properties
未连接到 KAFKA VPN 时出现的错误:: [2022-03-02 17:35:58,236] WARN [Consumer clientId=consumer-test_group-1, groupId=test_group] 连接到节点 2147483646 (10.XX .XX.XX/10.XX.XX.XX:9092) 无法建立。经纪人可能不可用。(org.apache.kafka.clients.NetworkClient) [2022-03-02 17:36:26,421] WARN [Consumer clientId=consumer-test_group-1, groupId=test_group] 连接到节点 2 (10.XX.XX.XY /10.XX.XX.XY:9092) 无法建立。经纪人可能不可用。(org.apache.kafka.clients.NetworkClient) [2022-03-02 17:36:47,467] WARN [Consumer clientId=consumer-test_group-1, groupId=test_group] 连接到节点 3 (10.XX.XX.XZ /10.XX.XX.XZ:9092) 无法建立。经纪人可能不可用。(org.apache.kafka.clients.NetworkClient
现在一些问题是::
如果有人在这方面帮助我,那就太好了
谢谢,米兰K