使用 docker-compose 3.0 API 进行搭建,可实现无缝 docker swarm 部署。


mkdir -p service-zookeeper

vim docker-compose.yml

复制以下内容:


version: '3.1'

services:
  zoo1:
    image: zookeeper
    restart: always
    hostname: zoo1
    networks:
      - zoo-net
    ports:
      - 2181:2181
    volumes:
      - zoo1-data:/data
      - zoo1-log:/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
      ZOO_4LW_COMMANDS_WHITELIST: "*"

  zoo2:
    image: zookeeper
    restart: always
    hostname: zoo2
    networks:
      - zoo-net
    ports:
      - 2182:2181
    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
      ZOO_4LW_COMMANDS_WHITELIST: "*"

  zoo3:
    image: zookeeper
    restart: always
    hostname: zoo3
    networks:
      - zoo-net
    ports:
      - 2183:2181
    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
      ZOO_4LW_COMMANDS_WHITELIST: "*"

volumes:
  zoo1-data:
    external: false
  zoo1-log:
    external: false  

networks:
  zoo-net:

上述是 docker-compose.yml 文件,直接执行 sudo docker-compose up -d,集群搭建成功。目前只对 zoo1 的数据进行了容器磁盘挂载。

检查集群状态:


docker-compose ps

# check cluster status
docker run -it --rm \
    --link zoo1:zk1 \
    --link zoo2:zk2 \
    --link zoo3:zk3 \
    --net service-zookeeper_zoo-net \
    zookeeper:3.5.5 zkCli.sh -server zk1:2181,zk2:2181,zk3:2181

进入控制台后,先按一个回车,然后,ls /,可开始查看 zookeeper 集群存储的数据。