[區間DP] 例題
阿新 • • 發佈:2021-08-10
上一篇,我們搭建了 kafka 單節點 回顧,現在我們要搭建叢集。
在開始之前,先把單節點那套用
docker-compose -f docker-compose-single-broker.yml down
清理掉
1.定義 docker-compose.yml
KAFKA_ADVERTISED_HOST_NAME 不建議使用了,因為它對應 server.properties 中的 advertised.host.name,而這個屬性已經是 DEPRECATED
參考自 http://kafka.apache.org/0100/documentation.html#brokerconfigs
作為替代可以使用 KAFKA_ADVERTISED_LISTENERS,該環境變數對應 server.properties 中的 advertised.listeners.
相信你們和我有一樣的疑惑, 戳-> kafka listeners 和 advertised.listeners 的區別及應用
version: '3.8' services: zookeeper: image: wurstmeister/zookeeper ports: - "2181:2181" kafka1: image: wurstmeister/kafka depends_on: [ zookeeper ] ports: - "9091:9092" environment: KAFKA_ADVERTISED_LISTENERS: INSIDE://:9092,OUTSIDE://10.24.99.195:9091 KAFKA_LISTENERS: INSIDE://:9092,OUTSIDE://:9091 KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: INSIDE:PLAINTEXT,OUTSIDE:PLAINTEXT KAFKA_INTER_BROKER_LISTENER_NAME: INSIDE KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181 kafka2: image: wurstmeister/kafka depends_on: [ zookeeper ] ports: - "9090:9092" environment: KAFKA_ADVERTISED_LISTENERS: INSIDE://:9092,OUTSIDE://10.24.99.195:9090 KAFKA_LISTENERS: INSIDE://:9092,OUTSIDE://:9090 KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: INSIDE:PLAINTEXT,OUTSIDE:PLAINTEXT KAFKA_INTER_BROKER_LISTENER_NAME: INSIDE KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181 kafka3: image: wurstmeister/kafka depends_on: [ zookeeper ] ports: - "9093:9092" environment: KAFKA_ADVERTISED_LISTENERS: INSIDE://:9092,OUTSIDE://10.24.99.195:9093 KAFKA_LISTENERS: INSIDE://:9092,OUTSIDE://:9093 KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: INSIDE:PLAINTEXT,OUTSIDE:PLAINTEXT KAFKA_INTER_BROKER_LISTENER_NAME: INSIDE KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
環境變數 KAFKA_LISTENERS 的 INSIDE 和 OUTSIDE 的埠必須不同。
接著,cd進入docker-compose.yml所在的工作目錄,執行命令 docker-compose up -d
,此時預設就是使用該檔案。
2.容器內驗證
進入容器的方法,就不囉嗦了,不瞭解的可以百度。(docker ps
和 docker exec -it CONTAINER_ID bash
)
1、建立一個主題 mytopic
:
kafka-topics.sh --create --topic mytopic --partitions 2 --zookeeper kafka_zookeeper_1:2181 --replication-factor 2
2、開啟一個視窗,進入容器作生產者:
kafka-console-producer.sh --topic=mytopic --broker-list kafka_kafka1_1:9092,kafka_kafka2_1:9092,kafka_kafka3_1:9092
3、再開啟一個視窗,進入容器作消費者:
kafka-console-consumer.sh --bootstrap-server kafka_kafka1_1:9092,kafka_kafka2_1:9092,kafka_kafka3_1:9092 --from-beginning --topic mytopic
在kafka叢集內部,我們使用的叢集字串都是 kafka_kafka1_1:9092,kafka_kafka2_1:9092,kafka_kafka3_1:9092