Hello frens,
I want to run kafka cluster with docker compose. It should consist of 3 kafka brokers.
This is how it looks like
version: '3.8'
services:
zookeeper-1:
image: confluentinc/cp-zookeeper:latest
container_name: zookeeper-1
ports:
- '12181:2181'
environment:
ZOOKEEPER_CLIENT_PORT: 2181
ZOOKEEPER_TICK_TIME: 2000
zookeeper-2:
image: confluentinc/cp-zookeeper:latest
container_name: zookeeper-2
ports:
- '22181:2181'
environment:
ZOOKEEPER_CLIENT_PORT: 2181
ZOOKEEPER_TICK_TIME: 2000
zookeeper-3:
image: confluentinc/cp-zookeeper:latest
container_name: zookeeper-3
ports:
- '32181:2181'
environment:
ZOOKEEPER_CLIENT_PORT: 2181
ZOOKEEPER_TICK_TIME: 2000
kafka-1:
image: confluentinc/cp-kafka:latest
container_name: kafka-1
ports:
- '19092:19092'
environment:
KAFKA_BROKER_ID: 1
KAFKA_ZOOKEEPER_CONNECT: zookeeper-1:2181,zookeeper-2:2181,zookeeper-3:2181
KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://kafka-1:9092,PLAINTEXT_HOST://localhost:19092
KAFKA_INTER_BROKER_LISTENER_NAME: PLAINTEXT
KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: PLAINTEXT:PLAINTEXT,PLAINTEXT_HOST:PLAINTEXT
KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1
BOOTSTRAP_SERVERS: kafka1:19092,kafka2:29092,kafka3:39092
depends_on:
- zookeeper-1
- zookeeper-2
- zookeeper-3
kafka-2:
image: confluentinc/cp-kafka:latest
container_name: kafka-2
ports:
- '29092:29092'
environment:
KAFKA_BROKER_ID: 2
KAFKA_ZOOKEEPER_CONNECT: zookeeper-1:2181,zookeeper-2:2181,zookeeper-3:2181
KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://kafka-2:9092,PLAINTEXT_HOST://localhost:29092
KAFKA_INTER_BROKER_LISTENER_NAME: PLAINTEXT
KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: PLAINTEXT:PLAINTEXT,PLAINTEXT_HOST:PLAINTEXT
KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1
BOOTSTRAP_SERVERS: kafka1:19092,kafka2:29092,kafka3:39092
depends_on:
- zookeeper-1
- zookeeper-2
- zookeeper-3
kafka-3:
image: confluentinc/cp-kafka:latest
container_name: kafka-3
ports:
- '39092:39092'
environment:
KAFKA_BROKER_ID: 3
KAFKA_ZOOKEEPER_CONNECT: zookeeper-1:2181,zookeeper-2:2181,zookeeper-3:2181
KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://kafka-3:9092,PLAINTEXT_HOST://localhost:39092
KAFKA_INTER_BROKER_LISTENER_NAME: PLAINTEXT
KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: PLAINTEXT:PLAINTEXT,PLAINTEXT_HOST:PLAINTEXT
KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1
BOOTSTRAP_SERVERS: kafka1:19092,kafka2:29092,kafka3:39092
depends_on:
- zookeeper-1
- zookeeper-2
- zookeeper-3
now when I try to create topic with 3 partitions on it I get error:
INFO [Admin Manager on Broker 1]: Error processing create topic request
CreatableTopic(name='__transaction_state', numPartitions=50, replicationFactor=3,
assignments=[], configs=[CreateableTopicConfig(name='compression.type',
value='uncompressed'), CreateableTopicConfig(name='cleanup.policy', value='compact'),
CreateableTopicConfig(name='min.insync.replicas', value='2'),
CreateableTopicConfig(name='segment.bytes', value='104857600'),
CreateableTopicConfig(name='unclean.leader.election.enable', value='false')])
(kafka.server.ZkAdminManager)
kafka-1 |
org.apache.kafka.common.errors.InvalidReplicationFactorException:
Replication factor: 3 larger than available brokers: 2.
Why it sees only 2 brokers, not 3? And sometimes the error message indicates it sees only 1 broker.