天天看点

docker kafka 集群安装

docker-kafka安装

安装 zookeeper

docker search zookeeper

# 默认安装最新版本
docker pull wurstmeister/zookeeper
           

安装 kafka cluster

docker search kafka
docker pull wurstmeister/kafka
           

启动 zookeeper

docker run -d --name zookeeper -p 2181:2181  -e TZ="Asia/Shanghai" -t wurstmeister/zookeeper
           

查询zookeeper ip地址

(base) ~  $ ifconfig en0
en0: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500
	options=6463<RXCSUM,TXCSUM,TSO4,TSO6,CHANNEL_IO,PARTIAL_CSUM,ZEROINVERT_CSUM>
	ether f8:4d:89:85:fd:fb
	inet6 fe80::45b:8c1f:95b2:4976%en0 prefixlen 64 secured scopeid 0xe
	inet 172.16.0.235 netmask 0xfffffc00 broadcast 172.16.3.255
	nd6 options=201<PERFORMNUD,DAD>
	media: autoselect
	status: active
           

查询本机 ip 地址,让容器间可以相互通信。

启动 broker

# kafka0
docker run -d --name kafka0 -p 9092:9092 -e KAFKA_BROKER_ID=0 -e KAFKA_ZOOKEEPER_CONNECT=172.16.0.235:2181 -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://172.16.0.235:9092 -e KAFKA_LISTENERS=PLAINTEXT://:9092  -e TZ="Asia/Shanghai" -t wurstmeister/kafka

# kafka1
docker run -d --name kafka1 -p 9093:9093 -e KAFKA_BROKER_ID=1 -e KAFKA_ZOOKEEPER_CONNECT=172.16.0.235:2181 -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://172.16.0.235:9093 -e KAFKA_LISTENERS=PLAINTEXT://:9093  -e TZ="Asia/Shanghai" -t wurstmeister/kafka

# kafka2
docker run -d --name kafka2 -p 9094:9094 -e KAFKA_BROKER_ID=2 -e KAFKA_ZOOKEEPER_CONNECT=172.16.0.235:2181 -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://172.16.0.235:9094 -e KAFKA_LISTENERS=PLAINTEXT://:9094  -e TZ="Asia/Shanghai" -t wurstmeister/kafka
           

参数:

KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://<宿主机IP地址>:9092

KAFKA_ZOOKEEPER_CONNECT=<zookeeperIP地址>:2181

–network 指定的网络

-p:设置映射端口(默认2181)

-d:后台启动

KAFKA_BROKER_ID=0 kafka的broker的ID号,在kafka集群中,每个kafka都有一个BROKER_ID来区分自己

KAFKA_ZOOKEEPER_CONNECT 配置zookeeper管理kafka的路径

KAFKA_ADVERTISED_LISTENERS 把kafka的地址端口注册给zookeeper,一般是本身 ip 地址

KAFKA_LISTENERS 配置kafka的监听端口,一般为本身 ip 地址

查看

(base) ~  $ docker ps
CONTAINER ID   IMAGE                    COMMAND                  CREATED          STATUS          PORTS                                                NAMES
dc8d7dfb97ce   wurstmeister/kafka       "start-kafka.sh"         39 minutes ago   Up 39 minutes   0.0.0.0:9094->9094/tcp                               kafka2
be8bf68caf63   wurstmeister/kafka       "start-kafka.sh"         39 minutes ago   Up 39 minutes   0.0.0.0:9093->9093/tcp                               kafka1
82b508bb8775   wurstmeister/kafka       "start-kafka.sh"         42 minutes ago   Up 42 minutes   0.0.0.0:9092->9092/tcp                               kafka0
325bfe235efc   wurstmeister/zookeeper   "/bin/sh -c '/usr/sb…"   43 minutes ago   Up 43 minutes   22/tcp, 2888/tcp, 3888/tcp, 0.0.0.0:2181->2181/tcp   zookeeper
           

使用脚本创建

version: "3"

services:
  zookeeper:
    image: zookeeper
    build:
      context: ./
    container_name: zookeeper
    ports:
      - 2181:2181
    volumes:
      - ./data/zookeeper/data:/data
      - ./data/zookeeper/datalog:/datalog
      - ./data/zookeeper/logs:/logs
    restart: always

  kafka_node_0:
    depends_on:
      - zookeeper
    build:
      context: ./
    container_name: kafka-node-0
    image: wurstmeister/kafka
    environment:
      KAFKA_BROKER_ID: 0
      KAFKA_ZOOKEEPER_CONNECT: 172.16.0.235:2181
      KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://172.16.0.235:9092
      KAFKA_LISTENERS: PLAINTEXT://0.0.0.0:9092
      KAFKA_NUM_PARTITIONS: 3
      KAFKA_DEFAULT_REPLICATION_FACTOR: 2
    ports:
      - 9092:9092
    volumes:
      - ./data/kafka/node_0:/kafka
    restart: unless-stopped

  kafka_node_1:
    depends_on:
      - kafka_node_0
    build:
      context: ./
    container_name: kafka-node-1
    image: wurstmeister/kafka
    environment:
      KAFKA_BROKER_ID: 1
      KAFKA_ZOOKEEPER_CONNECT: 172.16.0.235:2181
      KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://172.16.0.235:9093
      KAFKA_LISTENERS: PLAINTEXT://0.0.0.0:9093
      KAFKA_NUM_PARTITIONS: 3
      KAFKA_DEFAULT_REPLICATION_FACTOR: 2
    ports:
      - 9093:9093
    volumes:
      - ./data/kafka/node_1:/kafka
    restart: unless-stopped

  kafka_node_2:
    depends_on:
      - kafka_node_1
    build:
      context: ./
    container_name: kafka-node-2
    image: wurstmeister/kafka
    environment:
      KAFKA_BROKER_ID: 2
      KAFKA_ZOOKEEPER_CONNECT: 172.16.0.235:2181
      KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://172.16.0.235:9094
      KAFKA_LISTENERS: PLAINTEXT://0.0.0.0:9094
      KAFKA_NUM_PARTITIONS: 3
      KAFKA_DEFAULT_REPLICATION_FACTOR: 2
    ports:
      - 9094:9094
    volumes:
      - ./data/kafka/node_2:/kafka
    restart: unless-stopped

           

目录:

- docker-compose.yaml
-	data
	-	zookeeper
	- kafka
		- node_1
		- node_2
		- node_3
           

在最外层目录使用

docker-compose up -d

即可

继续阅读