version: '3' services: zookeeper-node1: image: registry.cn-hangzhou.aliyuncs.com/bigdata_cloudnative/zookeeper:3.8.1 # user: "hadoop:hadoop" container_name: zookeeper-node1 hostname: zookeeper-node1 restart: always environment: - TZ=Asia/Shanghai - privileged=true env_file: - .env volumes: - /data/docker-data/zkcluster/config/zoo.cfg:${ZOOKEEPER_HOME}/conf/zoo.cfg - /data/docker-data/zkcluster/zk1/data/myid:${ZOOKEEPER_HOME}/data/myid ports: - "${ZOOKEEPER_NODE1_SERVER_PORT}:2181" - "2888:2888" - "3888:3888" expose: - 2888 - 3888 command: ["sh","-c","/opt/apache/bootstrap.sh"] networks: - hadoop-network healthcheck: test: ["CMD-SHELL", "netstat -tnlp|grep :2181 || exit 1"] interval: 10s timeout: 10s retries: 5 extra_hosts: - "zookeeper-node1:127.0.0.1" - "zookeeper-node2:127.0.0.1" - "zookeeper-node3:127.0.0.1" zookeeper-node2: image: registry.cn-hangzhou.aliyuncs.com/bigdata_cloudnative/zookeeper:3.8.1 # user: "hadoop:hadoop" container_name: zookeeper-node2 hostname: zookeeper-node2 restart: always environment: - TZ=Asia/Shanghai - privileged=true env_file: - .env volumes: - /data/docker-data/zkcluster/config/zoo.cfg:${ZOOKEEPER_HOME}/conf/zoo.cfg - /data/docker-data/zkcluster/zk2/data/myid:${ZOOKEEPER_HOME}/data/myid ports: - "${ZOOKEEPER_NODE2_SERVER_PORT}:2181" - "4888:4888" - "5888:5888" expose: - 4888 - 5888 command: ["sh","-c","/opt/apache/bootstrap.sh"] networks: - hadoop-network healthcheck: test: ["CMD-SHELL", "netstat -tnlp|grep :2181 || exit 1"] interval: 10s timeout: 10s retries: 5 extra_hosts: - "zookeeper-node1:127.0.0.1" - "zookeeper-node2:127.0.0.1" - "zookeeper-node3:127.0.0.1" zookeeper-node3: image: registry.cn-hangzhou.aliyuncs.com/bigdata_cloudnative/zookeeper:3.8.1 # user: "hadoop:hadoop" container_name: zookeeper-node3 hostname: zookeeper-node3 restart: always environment: - TZ=Asia/Shanghai - privileged=true env_file: - .env volumes: - /data/docker-data/zkcluster/config/zoo.cfg:${ZOOKEEPER_HOME}/conf/zoo.cfg - /data/docker-data/zkcluster/zk3/data/myid:${ZOOKEEPER_HOME}/data/myid ports: - "${ZOOKEEPER_NODE3_SERVER_PORT}:2181" - "6888:6888" - "7888:7888" expose: - 6888 - 7888 command: ["sh","-c","/opt/apache/bootstrap.sh"] networks: - hadoop-network healthcheck: test: ["CMD-SHELL", "netstat -tnlp|grep :2181 || exit 1"] interval: 10s timeout: 10s retries: 5 extra_hosts: - "zookeeper-node1:127.0.0.1" - "zookeeper-node2:127.0.0.1" - "zookeeper-node3:127.0.0.1" # 连接外部网络 networks: hadoop-network: external: true
cat >zoo.cfg<<EOF # tickTime:Zookeeper 服务器之间或客户端与服务器之间维持心跳的时间间隔,也就是每个 tickTime 时间就会发送一个心跳。tickTime以毫秒为单位。session最小有效时间为tickTime*2 tickTime=2000 # Zookeeper保存数据的目录,默认情况下,Zookeeper将写数据的日志文件也保存在这个目录里。不要使用/tmp目录 dataDir=/opt/apache/zookeeper/data # 端口,默认就是2181 clientPort=2181 # 集群中的follower服务器(F)与leader服务器(L)之间初始连接时能容忍的最多心跳数(tickTime的数量),超过此数量没有回复会断开链接 initLimit=10 # 集群中的follower服务器与leader服务器之间请求和应答之间能容忍的最多心跳数(tickTime的数量) syncLimit=5 # 最大客户端链接数量,0不限制,默认是0 maxClientCnxns=60 # zookeeper集群配置项,server.1,server.2,server.3是zk集群节点;zookeeper-node1,zookeeper-node2,zookeeper-node3是主机名称;2888是主从通信端口;3888用来选举leader server.1=zookeeper-node1:2888:3888 server.2=zookeeper-node2:4888:5888 server.3=zookeeper-node3:6888:7888 EOF ;server.1=zookeeper-node1:2888:3888 ;server.2=zookeeper-node2:2888:3888 ;server.3=zookeeper-node3:2888:3888