首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带有3个zookepers的docker-compose.yml和与公共IP代理建立的一个代理程序未能从没有有意义的日志开始(但与1个动物园管理员一起工作)

带有3个zookepers的docker-compose.yml和与公共IP代理建立的一个代理程序未能从没有有意义的日志开始(但与1个动物园管理员一起工作)
EN

Stack Overflow用户
提问于 2021-10-27 14:39:02
回答 2查看 1.9K关注 0票数 0

我有以下docker-compose.yml文件:

代码语言:javascript
复制
version: '3.7'

services:
  zookeeper-1:
    image: confluentinc/cp-zookeeper:6.2.1
    hostname: zookeeper-1
    container_name: zookeeper-1
    ports:
      - "2181:2181"
      - "2888:2888"
      - "3888:3888"
    environment:
      ZOOKEEPER_SERVER_ID: 1
      ZOOKEEPER_CLIENT_PORT: 2181
      ZOOKEEPER_PEER_PORT: 2888
      ZOOKEEPER_LEADER_PORT: 3888
      ZOOKEEPER_TICK_TIME: 2000
      ZOOKEEPER_INIT_LIMIT: 5
      ZOOKEEPER_SYNC_LIMIT: 2
      ZOOKEEPER_SERVERS: "localhost:2888:3888;192.168.100.14:12888:13888;192.168.100.14:22888:23888"
    volumes:
      - ./kafka-data/zookeeper-1:/var/lib/zookeeper/data
      - ./kafka-data/zookeeper-logs-1:/var/lib/zookeeper/log
    networks:
      - mynet

  zookeeper-2:
    image: confluentinc/cp-zookeeper:6.2.1
    hostname: zookeeper-2
    container_name: zookeeper-2
    ports:
      - "12181:12181"
      - "12888:12888"
      - "13888:13888"
    environment:
      ZOOKEEPER_SERVER_ID: 2
      ZOOKEEPER_CLIENT_PORT: 12181
      ZOOKEEPER_PEER_PORT: 12888
      ZOOKEEPER_LEADER_PORT: 13888
      ZOOKEEPER_TICK_TIME: 2000
      ZOOKEEPER_INIT_LIMIT: 5
      ZOOKEEPER_SYNC_LIMIT: 2
      ZOOKEEPER_SERVERS: "192.168.100.14:2888:3888;localhost:12888:13888;192.168.100.14:22888:23888"
    volumes:
      - ./kafka-data/zookeeper-2:/var/lib/zookeeper/data
      - ./kafka-data/zookeeper-logs-2:/var/lib/zookeeper/log
    networks:
      - mynet

  zookeeper-3:
    image: confluentinc/cp-zookeeper:6.2.1
    hostname: zookeeper-3
    container_name: zookeeper-3
    ports:
      - "22181:22181"
      - "22888:22888"
      - "23888:23888"
    environment:
      ZOOKEEPER_SERVER_ID: 3
      ZOOKEEPER_CLIENT_PORT: 22181
      ZOOKEEPER_PEER_PORT: 22888
      ZOOKEEPER_LEADER_PORT: 23888
      ZOOKEEPER_TICK_TIME: 2000
      ZOOKEEPER_INIT_LIMIT: 5
      ZOOKEEPER_SYNC_LIMIT: 2
      ZOOKEEPER_SERVERS: "192.168.100.14:2888:3888;192.168.100.14:12888:13888;localhost:22888:23888"
    volumes:
      - ./kafka-data/zookeeper-3:/var/lib/zookeeper/data
      - ./kafka-data/zookeeper-logs-3:/var/lib/zookeeper/log
    networks:
      - mynet

  broker-1:
    image: confluentinc/cp-kafka:6.2.1
    hostname: broker-1
    container_name: broker-1
    depends_on:
      - zookeeper-1
      - zookeeper-2
      - zookeeper-3
    ports:
      - "9092:9092"
    environment:
      KAFKA_BROKER_ID: 1
      KAFKA_LISTENERS: OUTSIDE://0.0.0.0:9092
      KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: OUTSIDE:PLAINTEXT
      KAFKA_ADVERTISED_LISTENERS: OUTSIDE://192.168.100.14:9092
      KAFKA_INTER_BROKER_LISTENER_NAME: OUTSIDE
      KAFKA_ZOOKEEPER_CONNECT: "192.168.100.14:2181,192.168.100.14:12181,192.168.100.14:22181"
      KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1
      KAFKA_LOG_MESSAGE_TIMESTAMP_TYPE: 'LogAppendTime'
      KAFKA_GROUP_INITIAL_REBALANCE_DELAY_MS: 0
      KAFKA_CONNECTIONS_MAX_IDLE_MS: 31536000000 # 1 year
    volumes:
      - ./kafka-data/kafka-1:/var/lib/kafka/data
    networks:
      - mynet

  # PORT 8081 reserved for Schema Registry

  kafka-rest-1:
    image: confluentinc/cp-kafka-rest:6.2.1
    hostname: kafka-rest-1
    container_name: kafka-rest-1
    depends_on:
      - broker-1
    ports:
      - "8082:8082"
    environment:
      KAFKA_REST_HOST_NAME: 192.168.100.14
      KAFKA_REST_LISTENERS: http://0.0.0.0:8082
      KAFKA_REST_BOOTSTRAP_SERVERS: 192.168.100.14:9092
    networks:
      - mynet

  # PORT 8083 reserved for Kafka-Connect REST API

  kafka-ui-1:
    image: provectuslabs/kafka-ui:0.2.1
    hostname: kafka-ui-1
    container_name: kafka-ui-1
    depends_on:
      - broker-1
    ports:
      - "8084:8080"
    environment:
      KAFKA_CLUSTERS_0_NAME: lab
      KAFKA_CLUSTERS_0_BOOTSTRAPSERVERS: 192.168.100.14:9092
      KAFKA_CLUSTERS_0_ZOOKEEPER: "192.168.100.14:2181;192.168.100.14:12181;192.168.100.14:22181"
    networks:
      - mynet

  kafdrop-1:
    image: obsidiandynamics/kafdrop:3.27.0
    hostname: kafrop-1
    container_name: kafdrop-1
    depends_on:
      - broker-1
    ports:
      - "8085:9000"
    environment:
      KAFKA_BROKERCONNECT: 192.168.100.14:9092
      JVM_OPTS: "-Xms32M -Xmx64M"
      SERVER_SERVLET_CONTEXTPATH: "/"
    networks:
      - mynet

networks:
  mynet:
    driver: bridge

在堆栈溢出中还发现,zookeper ZOOKEEPER_SERVERS本身不应该有外部IP (应该是“localhost”),所以我的3个动物园管理员开始一起工作。

但是,我的broker-1无法使用“Exit 1”代码和日志启动和退出,始终是:

代码语言:javascript
复制
# docker-compose up broker-1
zookeeper-1 is up-to-date
Starting broker-1 ... done
Attaching to broker-1
broker-1        | ===> User
broker-1        | uid=1000(appuser) gid=1000(appuser) groups=1000(appuser)
broker-1        | ===> Configuring ...
broker-1        | ===> Running preflight checks ...
broker-1        | ===> Check if /var/lib/kafka/data is writable ...
broker-1        | ===> Check if Zookeeper is healthy ...
broker-1        | SLF4J: Class path contains multiple SLF4J bindings.
broker-1        | SLF4J: Found binding in [jar:file:/usr/share/java/cp-base-new/slf4j-log4j12-1.7.30.jar!/org/slf4j/impl/StaticLoggerBinder.class]
broker-1        | SLF4J: Found binding in [jar:file:/usr/share/java/cp-base-new/slf4j-simple-1.7.30.jar!/org/slf4j/impl/StaticLoggerBinder.class]
broker-1        | SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
broker-1        | SLF4J: Actual binding is of type [org.slf4j.impl.Log4jLoggerFactory]
broker-1        | log4j:WARN No appenders could be found for logger (io.confluent.admin.utils.cli.ZookeeperReadyCommand).
broker-1        | log4j:WARN Please initialize the log4j system properly.
broker-1        | log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.

broker-1 exited with code 1

但是,如果我注释掉额外的动物园管理员,那么broker-1开始的很好,这是一个有效的配置:

代码语言:javascript
复制
version: '3.7'

services:
  zookeeper-1:
    image: confluentinc/cp-zookeeper:6.2.1
    hostname: zookeeper-1
    container_name: zookeeper-1
    ports:
      - "2181:2181"
      - "2888:2888"
      - "3888:3888"
    environment:
      ZOOKEEPER_SERVER_ID: 1
      ZOOKEEPER_CLIENT_PORT: 2181
      ZOOKEEPER_PEER_PORT: 2888
      ZOOKEEPER_LEADER_PORT: 3888
      ZOOKEEPER_TICK_TIME: 2000
      ZOOKEEPER_INIT_LIMIT: 5
      ZOOKEEPER_SYNC_LIMIT: 2
      ZOOKEEPER_SERVERS: "localhost:2888:3888" #;192.168.100.14:12888:13888;192.168.100.14:22888:23888"
    volumes:
      - ./kafka-data/zookeeper-1:/var/lib/zookeeper/data
      - ./kafka-data/zookeeper-logs-1:/var/lib/zookeeper/log
    networks:
      - mynet

#  zookeeper-2:
#    image: confluentinc/cp-zookeeper:6.2.1
#    hostname: zookeeper-2
#    container_name: zookeeper-2
#    ports:
#      - "12181:12181"
#      - "12888:12888"
#      - "13888:13888"
#    environment:
#      ZOOKEEPER_SERVER_ID: 2
#      ZOOKEEPER_CLIENT_PORT: 12181
#      ZOOKEEPER_PEER_PORT: 12888
#      ZOOKEEPER_LEADER_PORT: 13888
#      ZOOKEEPER_TICK_TIME: 2000
#      ZOOKEEPER_INIT_LIMIT: 5
#      ZOOKEEPER_SYNC_LIMIT: 2
#      ZOOKEEPER_SERVERS: "192.168.100.14:2888:3888;localhost:12888:13888;192.168.100.14:22888:23888"
#    volumes:
#      - ./kafka-data/zookeeper-2:/var/lib/zookeeper/data
#      - ./kafka-data/zookeeper-logs-2:/var/lib/zookeeper/log
#    networks:
#      - mynet
#
#  zookeeper-3:
#    image: confluentinc/cp-zookeeper:6.2.1
#    hostname: zookeeper-3
#    container_name: zookeeper-3
#    ports:
#      - "22181:22181"
#      - "22888:22888"
#      - "23888:23888"
#    environment:
#      ZOOKEEPER_SERVER_ID: 3
#      ZOOKEEPER_CLIENT_PORT: 22181
#      ZOOKEEPER_PEER_PORT: 22888
#      ZOOKEEPER_LEADER_PORT: 23888
#      ZOOKEEPER_TICK_TIME: 2000
#      ZOOKEEPER_INIT_LIMIT: 5
#      ZOOKEEPER_SYNC_LIMIT: 2
#      ZOOKEEPER_SERVERS: "192.168.100.14:2888:3888;192.168.100.14:12888:13888;localhost:22888:23888"
#    volumes:
#      - ./kafka-data/zookeeper-3:/var/lib/zookeeper/data
#      - ./kafka-data/zookeeper-logs-3:/var/lib/zookeeper/log
#    networks:
#      - mynet

  broker-1:
    image: confluentinc/cp-kafka:6.2.1
    hostname: broker-1
    container_name: broker-1
    depends_on:
      - zookeeper-1
#      - zookeeper-2
#      - zookeeper-3
    ports:
      - "9092:9092"
    environment:
      KAFKA_BROKER_ID: 1
      KAFKA_LISTENERS: OUTSIDE://0.0.0.0:9092
      KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: OUTSIDE:PLAINTEXT
      KAFKA_ADVERTISED_LISTENERS: OUTSIDE://192.168.100.14:9092
      KAFKA_INTER_BROKER_LISTENER_NAME: OUTSIDE
      KAFKA_ZOOKEEPER_CONNECT: "192.168.100.14:2181" #,192.168.100.14:12181,192.168.100.14:22181"
      KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1
      KAFKA_LOG_MESSAGE_TIMESTAMP_TYPE: 'LogAppendTime'
      KAFKA_GROUP_INITIAL_REBALANCE_DELAY_MS: 0
      KAFKA_CONNECTIONS_MAX_IDLE_MS: 31536000000 # 1 year
    volumes:
      - ./kafka-data/kafka-1:/var/lib/kafka/data
    networks:
      - mynet

  # PORT 8081 reserved for Schema Registry

  kafka-rest-1:
    image: confluentinc/cp-kafka-rest:6.2.1
    hostname: kafka-rest-1
    container_name: kafka-rest-1
    depends_on:
      - broker-1
    ports:
      - "8082:8082"
    environment:
      KAFKA_REST_HOST_NAME: 192.168.100.14
      KAFKA_REST_LISTENERS: http://0.0.0.0:8082
      KAFKA_REST_BOOTSTRAP_SERVERS: 192.168.100.14:9092
    networks:
      - mynet

  # PORT 8083 reserved for Kafka-Connect REST API

  kafka-ui-1:
    image: provectuslabs/kafka-ui:0.2.1
    hostname: kafka-ui-1
    container_name: kafka-ui-1
    depends_on:
      - broker-1
    ports:
      - "8084:8080"
    environment:
      KAFKA_CLUSTERS_0_NAME: lab
      KAFKA_CLUSTERS_0_BOOTSTRAPSERVERS: 192.168.100.14:9092
      KAFKA_CLUSTERS_0_ZOOKEEPER: "192.168.100.14:2181" #;192.168.100.14:12181;192.168.100.14:22181"
    networks:
      - mynet

  kafdrop-1:
    image: obsidiandynamics/kafdrop:3.27.0
    hostname: kafrop-1
    container_name: kafdrop-1
    depends_on:
      - broker-1
    ports:
      - "8085:9000"
    environment:
      KAFKA_BROKERCONNECT: 192.168.100.14:9092
      JVM_OPTS: "-Xms32M -Xmx64M"
      SERVER_SERVLET_CONTEXTPATH: "/"
    networks:
      - mynet

networks:
  mynet:
    driver: bridge

3动物园管理员配置有什么问题,为什么1-zookeerper配置对卡夫卡经纪人来说是可以的?

UPD:当然,我知道在同一个主机上有3个动物园管理员和3个代理(现在一个)是没有意义的:-)我需要在我拥有的单个主机上模拟几个主机环境,方法是使用码头容器。计划是关闭一些码头容器,然后模拟不同的“主机”(zookeper,broker)故障。这就是为什么我使用"public“IP地址192.168.100.14 (从容器的角度来看是”public“)和不同的端口来进行这种模拟。码头桥接网络的使用,即它是np访问网络主机,甚至通过IP从容器内访问互联网主机-我测试了。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-10-28 16:08:23

问题为我完全解决了!:-)

看来,Docker容器桥接网络增加了连接集群中所有内容的问题。

ZOOKEEPER_QUORUM_LISTEN_ON_ALL_IPS:'true'添加到zookeper和extra_hosts:到所有容器中解决了我的所有问题!

因此,我在每个服务的每个配置中添加了以下几行extra_hosts

代码语言:javascript
复制
    extra_hosts:
      - "kafka-1:192.168.1.11"
      - "kafka-2:192.168.1.12"
      - "kafka-3:192.168.1.13"

此外,在zookeper环境中添加ZOOKEEPER_QUORUM_LISTEN_ON_ALL_IPS:'true'也很重要。

完整的例子:

代码语言:javascript
复制
version: '3.7'

x-zoo: &zoo "kafka-1:2888:3888;kafka-2:2888:3888;kafka-3:2888:3888"
x-kafkaZookeepers: &kafkaZookeepers "kafka-1:2181,kafka-2:2181,kafka-3:2181"
x-kafkaBrokers: &kafkaBrokers "kafka-1:9092"

services:
  zookeeper:
    image: confluentinc/cp-zookeeper:6.2.1
    hostname: zookeeper
    container_name: zookeeper
    ports:
      - "2181:2181"
      - "2888:2888"
      - "3888:3888"
    extra_hosts:
      - "kafka-1:192.168.1.11"
      - "kafka-2:192.168.1.12"
      - "kafka-3:192.168.1.13"
    environment:
      ZOOKEEPER_SERVER_ID: 1
      ZOOKEEPER_QUORUM_LISTEN_ON_ALL_IPS: 'true'
      ZOOKEEPER_CLIENT_PORT: 2181
      ZOOKEEPER_PEER_PORT: 2888
      ZOOKEEPER_LEADER_PORT: 3888
      ZOOKEEPER_TICK_TIME: 2000
      ZOOKEEPER_INIT_LIMIT: 5
      ZOOKEEPER_SYNC_LIMIT: 2
      ZOOKEEPER_SERVERS: *zoo
    volumes:
      - ./kafka-data/zookeeper:/var/lib/zookeeper/data
      - ./kafka-data/zookeeper-logs:/var/lib/zookeeper/log
    networks:
      - mynet

  broker:
    image: confluentinc/cp-kafka:6.2.1
    hostname: broker
    container_name: broker
    depends_on:
      - zookeeper
    ports:
      - "9092:9092"
    extra_hosts:
      - "kafka-1:192.168.1.11"
      - "kafka-2:192.168.1.12"
      - "kafka-3:192.168.1.13"
    environment:
      KAFKA_BROKER_ID: 1
      KAFKA_LISTENERS: OUTSIDE://0.0.0.0:9092
      KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: OUTSIDE:PLAINTEXT
      KAFKA_ADVERTISED_LISTENERS: OUTSIDE://192.168.1.11:9092
      KAFKA_INTER_BROKER_LISTENER_NAME: OUTSIDE
      KAFKA_ZOOKEEPER_CONNECT: *kafkaZookeepers
      KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1
      KAFKA_LOG_MESSAGE_TIMESTAMP_TYPE: 'LogAppendTime'
      KAFKA_GROUP_INITIAL_REBALANCE_DELAY_MS: 0
      KAFKA_CONNECTIONS_MAX_IDLE_MS: 31536000000 # 1 year
    volumes:
      - ./kafka-data/kafka:/var/lib/kafka/data
    networks:
      - mynet

  kafka-ui:
    image: provectuslabs/kafka-ui:0.2.1
    hostname: kafka-ui
    container_name: kafka-ui
    depends_on:
      - broker
    ports:
      - "8084:8080"
    extra_hosts:
      - "kafka-1:192.168.1.11"
      - "kafka-2:192.168.1.12"
      - "kafka-3:192.168.1.13"
    environment:
      KAFKA_CLUSTERS_0_NAME: local_kafka
      KAFKA_CLUSTERS_0_BOOTSTRAPSERVERS: *kafkaBrokers
      KAFKA_CLUSTERS_0_ZOOKEEPER: *kafkaZookeepers
    networks:
      - mynet

networks:
  mynet:
    driver: bridge

其他VM上的docker-compose.yml文件看起来类似(我现在只设置了3个动物园管理员),在第二个VM上:

代码语言:javascript
复制
version: '3.7'

x-zoo: &zoo "kafka-1:2888:3888;kafka-2:2888:3888;kafka-3:2888:3888"
x-kafkaZookeepers: &kafkaZookeepers "kafka-1:2181,kafka-2:2181,kafka-3:2181"
x-kafkaBrokers: &kafkaBrokers "kafka-1:9092"

services:
  zookeeper:
    image: confluentinc/cp-zookeeper:6.2.1
    hostname: zookeeper
    container_name: zookeeper
    ports:
      - "2181:2181"
      - "2888:2888"
      - "3888:3888"
    extra_hosts:
      - "kafka-1:192.168.1.11"
      - "kafka-2:192.168.1.12"
      - "kafka-3:192.168.1.13"
    environment:
      ZOOKEEPER_SERVER_ID: 2
      ZOOKEEPER_QUORUM_LISTEN_ON_ALL_IPS: 'true'
      ZOOKEEPER_CLIENT_PORT: 2181
      ZOOKEEPER_PEER_PORT: 2888
      ZOOKEEPER_LEADER_PORT: 3888
      ZOOKEEPER_TICK_TIME: 2000
      ZOOKEEPER_INIT_LIMIT: 5
      ZOOKEEPER_SYNC_LIMIT: 2
      ZOOKEEPER_SERVERS: *zoo
    volumes:
      - ./kafka-data/zookeeper:/var/lib/zookeeper/data
      - ./kafka-data/zookeeper-logs:/var/lib/zookeeper/log
    networks:
      - mynet

networks:
  mynet:
    driver: bridge

在第三阶段:

代码语言:javascript
复制
version: '3.7'

x-zoo: &zoo "kafka-1:2888:3888;kafka-2:2888:3888;kafka-3:2888:3888"
x-kafkaZookeepers: &kafkaZookeepers "kafka-1:2181,kafka-2:2181,kafka-3:2181"
x-kafkaBrokers: &kafkaBrokers "kafka-1:9092"

services:
  zookeeper:
    image: confluentinc/cp-zookeeper:6.2.1
    hostname: zookeeper
    container_name: zookeeper
    ports:
      - "2181:2181"
      - "2888:2888"
      - "3888:3888"
    extra_hosts:
      - "kafka-1:192.168.1.11"
      - "kafka-2:192.168.1.12"
      - "kafka-3:192.168.1.13"
    environment:
      ZOOKEEPER_SERVER_ID: 3
      ZOOKEEPER_QUORUM_LISTEN_ON_ALL_IPS: 'true'
      ZOOKEEPER_CLIENT_PORT: 2181
      ZOOKEEPER_PEER_PORT: 2888
      ZOOKEEPER_LEADER_PORT: 3888
      ZOOKEEPER_TICK_TIME: 2000
      ZOOKEEPER_INIT_LIMIT: 5
      ZOOKEEPER_SYNC_LIMIT: 2
      ZOOKEEPER_SERVERS: *zoo
    volumes:
      - ./kafka-data/zookeeper:/var/lib/zookeeper/data
      - ./kafka-data/zookeeper-logs:/var/lib/zookeeper/log
    networks:
      - mynet

networks:
  mynet:
    driver: bridge

根据日志,所有的码头集装箱现在可以互相连接,好的。

我还在VM上添加了我的主机kafka-1、kafka-2、kafka-3到/etc/host文件:

代码语言:javascript
复制
test@kafka-1:~/Kafka-Docker$ cat /etc/hosts
127.0.0.1       localhost
127.0.1.1       kafka-1

192.168.1.11    kafka-1
192.168.1.12    kafka-2
192.168.1.13    kafka-3

# The following lines are desirable for IPv6 capable hosts
::1     localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters

希望它能节省某人的时间和神经,这是我一直在等待的答案!

还请注意,我使用的是最新的自动取款机(参见日期)对接图片( confluent,cp等) 6.2.1来自dockerhub的官方合流出版商。

UPD: i在每个动物园管理员上转发端口4888->8080,并获得简单的REST管理页面( zkCommands ),其中我可以看到谁是“领导者”和谁是“追随者”,示例:在这里输入图像描述 在这里输入图像描述

票数 0
EN

Stack Overflow用户

发布于 2021-10-27 14:48:05

你似乎误解了码头工人的人际关系。您应该始终使用服务名称,而不是IP地址。

如果您使用一个动物园管理员服务器,ZOOKEEPER_SERVERS什么也不做。这用于连接群集。

所以,你在找这个

代码语言:javascript
复制
services:
  zookeeper-1:
    image: confluentinc/cp-zookeeper:6.2.1
    hostname: zookeeper-1
    container_name: zookeeper-1
    ports:
      - "2181:2181"
      - "2888:2888"
      - "3888:3888"
    environment:
      ZOOKEEPER_SERVER_ID: 1
      ZOOKEEPER_CLIENT_PORT: 2181
      ZOOKEEPER_PEER_PORT: 2888
      ZOOKEEPER_LEADER_PORT: 3888
      ...
      ZOOKEEPER_SERVERS: "localhost:2888:3888;zookeeper-1:12888:13888;zookeeper-2:22888:23888"
    ...

  zookeeper-2:
    image: confluentinc/cp-zookeeper:6.2.1
    hostname: zookeeper-2
    container_name: zookeeper-2
    ports:
      - "12181:12181"
      - "12888:12888"
      - "13888:13888"
    environment:
      ZOOKEEPER_SERVER_ID: 2
      ZOOKEEPER_CLIENT_PORT: 12181
      ZOOKEEPER_PEER_PORT: 12888
      ZOOKEEPER_LEADER_PORT: 13888
      ...
      ZOOKEEPER_SERVERS: "zookeeper-1:2888:3888;localhost:12888:13888;zookeeper-2:22888:23888"
    ...

  zookeeper-3:
    image: confluentinc/cp-zookeeper:6.2.1
    hostname: zookeeper-3
    container_name: zookeeper-3
    ports:
      - "22181:22181"
      - "22888:22888"
      - "23888:23888"
    environment:
      ZOOKEEPER_SERVER_ID: 3
      ZOOKEEPER_CLIENT_PORT: 22181
      ZOOKEEPER_PEER_PORT: 22888
      ZOOKEEPER_LEADER_PORT: 23888
      ...
      ZOOKEEPER_SERVERS: "zookeeper-1:2888:3888;zookeeper-2:12888:13888;localhost:22888:23888"
    ...

  broker-1:
    image: confluentinc/cp-kafka:6.2.1
    hostname: broker-1
    container_name: broker-1
    depends_on:
      - zookeeper-1
      - zookeeper-2
      - zookeeper-3
    # ports removed because the listener is internal to the docker network only
    environment:
      KAFKA_BROKER_ID: 1
      KAFKA_LISTENERS: INSIDE://0.0.0.0:9092
      KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: INSIDE:PLAINTEXT
      KAFKA_ADVERTISED_LISTENERS: INSIDE://broker-1:9092
      KAFKA_INTER_BROKER_LISTENER_NAME: INSIDE
      KAFKA_ZOOKEEPER_CONNECT: "zookeeper-1:zookeeper-2:12181,zookeeper-3:22181"
      ...

..。等等..。

还对其他容器的引导服务器使用broker-1:9092

请记住,您使用的是单个主机,这是一个单一的故障点,因此不止一个ZK服务器是没有意义的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69740701

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档