如何使用Docker compose在Kafka Docker中添加更多代理
我在经营汇合码头。我正在尝试使用docker compose添加更多代理 (我尝试了如何使用Docker compose在Kafka Docker中添加更多代理,docker,apache-kafka,docker-compose,Docker,Apache Kafka,Docker Compose,我在经营汇合码头。我正在尝试使用docker compose添加更多代理 (我尝试了docker compose scale kafka=3,但没有成功。) 这是我的docker compose.yml version: '2' services: broker: image: confluentinc/cp-enterprise-kafka:5.3.1 hostname: broker container_name: broker depends_on:
docker compose scale kafka=3
,但没有成功。)
这是我的docker compose.yml
version: '2'
services:
broker:
image: confluentinc/cp-enterprise-kafka:5.3.1
hostname: broker
container_name: broker
depends_on:
- zookeeper
ports:
- "29092:29092"
- "9092:9092"
environment:
KAFKA_BROKER_ID: 1
KAFKA_ZOOKEEPER_CONNECT: 'zookeeper:2181'
KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: PLAINTEXT:PLAINTEXT,PLAINTEXT_HOST:PLAINTEXT
KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://broker:29092,PLAINTEXT_HOST://localhost:9092
KAFKA_METRIC_REPORTERS: io.confluent.metrics.reporter.ConfluentMetricsReporter
KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1
KAFKA_GROUP_INITIAL_REBALANCE_DELAY_MS: 0
CONFLUENT_METRICS_REPORTER_BOOTSTRAP_SERVERS: broker:29092
CONFLUENT_METRICS_REPORTER_ZOOKEEPER_CONNECT: zookeeper:2181
CONFLUENT_METRICS_REPORTER_TOPIC_REPLICAS: 1
CONFLUENT_METRICS_ENABLE: 'true'
CONFLUENT_SUPPORT_CUSTOMER_ID: 'anonymous'
#To add more broker, do I do the following?
KAFKA_BROKER_ID: 2 // just add this?
KAFKA_ZOOKEEPER_CONNECT: 'zookeeper:2181'
KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: PLAINTEXT:PLAINTEXT,PLAINTEXT_HOST:PLAINTEXT
KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://broker:29092,PLAINTEXT_HOST://localhost:9092
KAFKA_METRIC_REPORTERS: io.confluent.metrics.reporter.ConfluentMetricsReporter
KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1
KAFKA_GROUP_INITIAL_REBALANCE_DELAY_MS: 0
CONFLUENT_METRICS_REPORTER_BOOTSTRAP_SERVERS: broker:29092
CONFLUENT_METRICS_REPORTER_ZOOKEEPER_CONNECT: zookeeper:2181
CONFLUENT_METRICS_REPORTER_TOPIC_REPLICAS: 1
CONFLUENT_METRICS_ENABLE: 'true'
CONFLUENT_SUPPORT_CUSTOMER_ID: 'anonymous'
1) 要添加更多代理,我需要在docker compose.yml
中添加或更改什么
2) 为什么Docker使用另一个端口29092?当我在非docker模式下运行Kafka时,我只需要一个端口(9092) 不能使用scale,因为代理ID需要不同 你错过了新服务的顶部部分 您需要两个端口,因为一个允许主机上的kafka客户端访问kafka(9092),另一个允许Docker服务访问kafka(29092) 但是,如果您真的想运行一个代理集群,那么Confluent Helm Charts或Strimzi项目将非常有用,但是在一台机器上运行多个Kafka不会提高任何性能(它们共享同一个磁盘,并通过复制占用更多空间)或恢复能力(都在一台机器上)
broker2:
image: confluentinc/cp-enterprise-kafka:5.3.1
hostname: broker2
container_name: broker2
depends_on:
- zookeeper
ports:
- "29192:29092" # technically, this one isn't needed to be mapped from the host
- "9192:9092"
environment:
KAFKA_BROKER_ID: 2
KAFKA_ZOOKEEPER_CONNECT: 'zookeeper:2181'
KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: PLAINTEXT:PLAINTEXT,PLAINTEXT_HOST:PLAINTEXT
KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://broker:29092,PLAINTEXT_HOST://localhost:9092
KAFKA_METRIC_REPORTERS: io.confluent.metrics.reporter.ConfluentMetricsReporter
KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1
KAFKA_GROUP_INITIAL_REBALANCE_DELAY_MS: 0
CONFLUENT_METRICS_REPORTER_BOOTSTRAP_SERVERS: broker:29092
CONFLUENT_METRICS_REPORTER_ZOOKEEPER_CONNECT: zookeeper:2181
CONFLUENT_METRICS_REPORTER_TOPIC_REPLICAS: 1