kafkaec2:adverted.listeners和listeners的配置问题

4dbbbstv  于 2021-06-04  发布在  Kafka
关注(0)|答案(1)|浏览(274)

我们在ec2示例中使用以下server.properties运行kafka:


# The id of the broker. This must be set to a unique integer for each broker.

broker.id=10

# A comma seperated list of directories under which to store log files

log.dirs=/tmp/kafka-logs
log.dirs=/tmp/kafka-logs

# add all 3 zookeeper instances ip here

zookeeper.connect=ip1:2181,ip2:2181,ip3:2181,ip4:2181,ip5:2181
zookeeper.connection.timeout.ms=6000

# Addition of listeners

listeners=EXTERNAL://0.0.0.0:36379,INTERNAL://0.0.0.0:9092
listener.security.protocol.map=INTERNAL:PLAINTEXT,EXTERNAL:PLAINTEXT
advertised.listeners=EXTERNAL://our-external-endpoint:36379,INTERNAL://ec2-hostname:9092
inter.broker.listener.name=INTERNAL

我们必须从ec2网络外部访问代理,因为每个代理都有一个端点(配置NLB以指向实际代理)。我们可以从端点远程登录到实际代理。甚至我们可以使用外部端点作为引导服务器获取元数据,如下所示:

kafkacat -b our-external-endpoint:36379 -L 
Metadata for all topics (from broker -1: our-external-endpoint:36379/bootstrap):
 6 brokers:
  broker 10 at compute1.internal:9092
  broker 20 at compute2.internal:9092 (controller)
  broker 40 at compute3.internal:9092
  broker 30 at compute4.internal:9092
  broker 50 at compute5.internal:9092
  broker 60 at compute6.internal:9092
 4 topics:
  topic "from_ec2" with 1 partitions:
  ...

但是我们得到的是实际的内部主机名,而不是外部主机名。在zkcli中,我们可以看到以下数据:

get /brokers/ids/10
{"listener_security_protocol_map":{"EXTERNAL":"PLAINTEXT","INTERNAL":"PLAINTEXT"},"endpoints":["EXTERNAL://our-external-endpoint:36379","INTERNAL://compute1.internal:9092"],"jmx_port":-1,"host":"our-external-endpoint","timestamp":"1575456980136","port":36379,"version":4}

因此,我们的端点配置没有问题,因为我们可以使用端点获取元数据。那么,一定是配置有问题,我们尝试了组合,例如在中只有一个值 listeners=PLAINTEXT://0.0.0.0:9092) 以及 advertised.listeners=PLAINTEXT://our-external-endpoint:36379 但是运气不好。要从外部ec2网络生成/使用,我认为在元数据中应该返回外部点,因为外部网络无法访问内部ec2主机名。我们缺少什么?

w6lpcovy

w6lpcovy1#

你的问题是:
[负载平衡器的]目标组指向实际的ec2代理ip和端口(9092)
实际上,您正在将外部流量转发给内部(9092)侦听器。有了lb,你可以有任何外部端口,如果你想的话-这里的关键是网络流量到达kafka代理的点。如果来自lb的流量正在9092上访问代理,那么代理使用的内部侦听器超出了您的定义。
更改lb以将流量路由到外部侦听器端口 36379 裁判:https://rmoff.net/2018/08/02/kafka-listeners-explained/ (我知道你已经看到了,但会帮助其他人发现这个答案)

相关问题