使用docker搭建真機kafka集羣
1、搭建zookeeper
首先搭建zookeeper、可以使用docker搭建zookeeper集羣,如果是自己測試,可以在一臺機器上使用docker搭建一個僞集羣
這裏貼一份單機上搭建zookeeper僞集羣的docker-compose文檔
docker-compose.yaml
version: '3.1'
services:
zoo1:
image: zookeeper
restart: always
hostname: zoo1
ports:
- 42181:2181
volumes:
- ./zoo1/conf:/conf
- ./zoo1/data:/data
- ./zoo1/datalog:/datalog
environment:
ZOO_MY_ID: 1
ZOO_SERVERS: server.1=0.0.0.0:2888:3888;2181 server.2=zoo2:2888:3888;2181 server.3=zoo3:2888:3888;2181
zoo2:
image: zookeeper
restart: always
hostname: zoo2
ports:
- 42182:2181
volumes:
- ./zoo2/conf:/conf
- ./zoo2/data:/data
- ./zoo2/datalog:/datalog
environment:
ZOO_MY_ID: 2
ZOO_SERVERS: server.1=zoo1:2888:3888;2181 server.2=0.0.0.0:2888:3888;2181 server.3=zoo3:2888:3888;2181
zoo3:
image: zookeeper
restart: always
hostname: zoo3
ports:
- 42183:2181
volumes:
- ./zoo3/conf:/conf
- ./zoo3/data:/data
- ./zoo3/datalog:/datalog
environment:
ZOO_MY_ID: 3
ZOO_SERVERS: server.1=zoo1:2888:3888;2181 server.2=zoo2:2888:3888;2181 server.3=0.0.0.0:2888:3888;2181
如果不用docker搭建真機的zookeeper集羣,可以參考這篇文章:
2、搭建kafka真機集羣
選擇三臺真機(如果是自己測試玩的,也可以用虛擬機了)
比如我選擇真機是下面三臺
192.168.0.1
192.168.0.2
192.168.0.3
那麼需要分別在三臺主機上創建下面三個文件
docker-compose.yaml
version: '3'
services:
kafka:
container_name: kafka_ai_1
image: wurstmeister/kafka
restart: always
network_mode: "host"
volumes:
- ./kafka/logs:/kafka
environment:
- CLUSTER_NAME=KAFKA
- KAFKA_ADVERTISED_HOST_NAME=<host_ip>
- KAFKA_ADVERTISED_PORT=9092
- KAFKA_ZOOKEEPER_CONNECT=<zk1>:42181,<zk2>:42182,<zk3>:42183
- KAFKA_HOST_NAME=<host_ip>
- KAFKA_BROKER_ID=1
- KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://<host_ip>:9092
- KAFKA_LISTENERS=PLAINTEXT://<host_ip>:9092
- KAFKA_DELETE_TOPIC_ENABLE=true
上面的docker-compose不能直接使用,需要給<host_ip>具體的值,以及zookeeper集羣的地址,如下:
<host_ip>:當前主機的ip
:zookeeper集羣的第一個節點,端口也是一樣
:zookeeper集羣的第二個節點,端口也是一樣
zookeeper集羣的第三個節點,端口也是一樣
container_name:你可以定義自己容易區分的名字
端口9092端口沒有被佔用的話,可以直接使用
另外如果有防火牆的,需要關閉防火牆,或者開啓9092端口
3、測試
我這邊測試使用的是kafka tool工具,下載地址:https://www.kafkatool.com/download.html