репликация кафки в docker compose - PullRequest
       129

репликация кафки в docker compose

0 голосов
/ 07 августа 2020

Я пытаюсь использовать кафку с несколькими репликами в docker - compose. Ниже мой составной файл. Я выполняю развертывание стека docker.

version: "3.5"
services:
zookeeper:
image: wurstmeister/zookeeper
hostname: zookeeper    
ports:
- "2181:2181"
networks:
  - network
  - api  
  
kafka1:
image: wurstmeister/kafka

environment:
 KAFKA_BROKER_ID: 1
 KAFKA_ADVERTISED_LISTENERS: INSIDE://kafka1:19092
 KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: INSIDE:PLAINTEXT
 KAFKA_LISTENERS: INSIDE://0.0.0.0:19092
 KAFKA_INTER_BROKER_LISTENER_NAME: INSIDE    
 KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181

deploy:
  mode: replicated
  replicas: 3    
  update_config:
     parallelism: 1
     delay: 10s
  restart_policy:
    condition: on-failure
    delay: 5s
    max_attempts: 1
    window: 120s
  

networks:
  - network
  - api
volumes:      
  - /mnt/dockershare/kafka/:/kafka  
 networks:
  network:
    driver: overlay    
  api:
     external: true

Я получаю ошибку ниже при развертывании в docker. На момент развертывания этого файла compose не было запущено других экземпляров zookeeper или kafka. Может кто-нибудь помочь с этой проблемой?

[2020-08-05 16:15:05,049] ERROR Error while creating ephemeral at /brokers/ids/1, node already exists and owner '72086588934062081' does not match current session '72086588934062126' (kafka.zk.KafkaZkClient$CheckedEphemeral)
dms-2020sep_kafka.0.jgjvlffc6kp3@pmdocker04d    | [2020-08-05 16:15:05,059] ERROR [KafkaServer id=1] Fatal error during KafkaServer startup. Prepare to shutdown (kafka.server.KafkaServer)
dms-2020sep_kafka.0.jgjvlffc6kp3@pmdocker04d    | org.apache.zookeeper.KeeperException$NodeExistsException: KeeperErrorCode = NodeExists
dms-2020sep_kafka.0.jgjvlffc6kp3@pmdocker04d    |       at org.apache.zookeeper.KeeperException.create(KeeperException.java:126)
dms-2020sep_kafka.0.jgjvlffc6kp3@pmdocker04d    |       at kafka.zk.KafkaZkClient$CheckedEphemeral.getAfterNodeExists(KafkaZkClient.scala:1819)
dms-2020sep_kafka.0.jgjvlffc6kp3@pmdocker04d    |       at kafka.zk.KafkaZkClient$CheckedEphemeral.create(KafkaZkClient.scala:1757)
dms-2020sep_kafka.0.f2orh7wpbydo@pmdocker02d    |       kafka.metrics.polling.interval.secs = 10
dms-2020sep_kafka.0.jgjvlffc6kp3@pmdocker04d    |       at kafka.zk.KafkaZkClient.checkedEphemeralCreate(KafkaZkClient.scala:1724)
dms-2020sep_kafka.0.jgjvlffc6kp3@pmdocker04d    |       at kafka.zk.KafkaZkClient.registerBroker(KafkaZkClient.scala:95)
dms-2020sep_kafka.0.jgjvlffc6kp3@pmdocker04d    |       at kafka.server.KafkaServer.startup(KafkaServer.scala:273)
dms-2020sep_kafka.0.f2orh7wpbydo@pmdocker02d    |       kafka.metrics.reporters = []
dms-2020sep_kafka.0.f2orh7wpbydo@pmdocker02d    |       leader.imbalance.check.interval.seconds = 300
dms-2020sep_kafka.0.jgjvlffc6kp3@pmdocker04d    |       at kafka.server.KafkaServerStartable.startup(KafkaServerStartable.scala:44)
dms-2020sep_kafka.0.jgjvlffc6kp3@pmdocker04d    |       at kafka.Kafka$.main(Kafka.scala:82)
dms-2020sep_kafka.0.jgjvlffc6kp3@pmdocker04d    |       at kafka.Kafka.main(Kafka.scala)

1 Ответ

0 голосов
/ 07 августа 2020

/brokers/ids/1, node already exists

Вы не можете масштабировать один контейнер, потому что переменные env с идентификатором брокера, слушателями и портами будут одинаковыми.

Вам нужно будет использовать 3 отдельных сервиса или использовать Helm Charts + k8s, которые могут формировать отдельную информацию для каждой службы

...