zookeeper安裝運行(docker)


拉取鏡像
docker pull zookeeper:latest

獲取鏡像基本信息
docker inspect zookeeper

 

 

mkdir /opt/zookeeper -p

vim /opt/zookeeper/Dockerfile

FROM zookeeper:3.5.6
EXPOSE 2181
EXPOSE 2182
EXPOSE 2183 EXPOSE 2888 EXPOSE 3888 EXPOSE 8080

 

 

單機

sudo mkdir -p /var/lib/zookeeper;sudo chmod -R 777 /var/lib/zookeeper

sudo mkdir -p /var/logs/zookeeper;sudo chmod -R 777 /var/logs/zookeeper


vim /opt/zookeeper/conf/zoo.cfg

dataDir=/var/lib/zookeeper
dataLogDir=/var/logs/zookeeper
clientPort=2181
4lw.commands.whitelist=*
tickTime=2000
initLimit=5
syncLimit=2
autopurge.snapRetainCount=3
autopurge.purgeInterval=0
maxClientCnxns=60
standaloneEnabled=true
admin.enableServer=true

 

 

vim /opt/zookeeper/docker-compose.yml

version: '3.6'
services:
  zookeeper:
    image: v-zookeeper
    container_name: zookeeper
    build: 
      context: .
      dockerfile: Dockerfile
    restart: always
    ports:
      - "2181:2181"
      - "28080:8080"
    volumes: 
      - "/var/lib/zookeeper:/var/lib/zookeeper"
      - "/var/logs/zookeeper:/var/logs/zookeeper"

 

偽集群

 

sudo mkdir -p /var/lib/zookeeper/node1;sudo chmod -R 777 /var/lib/zookeeper/node1
sudo mkdir -p /var/log/zookeeper/node1/version-2;sudo chmod -R 777 /var/log/zookeeper/node1/version-2
mkdir vim /opt/zookeeper/node1/conf -p
vim /opt/zookeeper/node1/conf/zoo.cfg

dataDir=/data
dataLogDir=/datalog
clientPort=2181
4lw.commands.whitelist=*
tickTime=2000
initLimit=5
syncLimit=2
autopurge.snapRetainCount=3
autopurge.purgeInterval=0
maxClientCnxns=60
admin.enableServer=true
server.1=zookeeper1:2888:3888
server.2=zookeeper2:2888:3888
server.3=zookeeper3:2888:3888
quorumListenOnAllIPs=true

 

sudo mkdir -p /var/lib/zookeeper/node2;sudo chmod -R 777 /var/lib/zookeeper/node2
sudo mkdir -p /var/log/zookeeper/node2/version-2;sudo chmod -R 777 /var/log/zookeeper/node2/version-2
mkdir vim /opt/zookeeper/node2/conf -p
vim /opt/zookeeper/node2/conf/zoo.cfg

dataDir=/data
dataLogDir=/datalog
clientPort=2181
4lw.commands.whitelist=*
tickTime=2000
initLimit=5
syncLimit=2
autopurge.snapRetainCount=3
autopurge.purgeInterval=0
maxClientCnxns=60
admin.enableServer=true
server.1=zookeeper1:2888:3888
server.2=zookeeper2:2888:3888
server.3=zookeeper3:2888:3888
quorumListenOnAllIPs=true

 ZOO_SERVERS中的zookeeper為容器名

sudo mkdir -p /var/lib/zookeeper/node3;sudo chmod -R 777 /var/lib/zookeeper/node3
sudo mkdir -p /var/log/zookeeper/node3/version-2;sudo chmod -R 777 /var/log/zookeeper/node3/version-2
mkdir vim /opt/zookeeper/node3/conf -p
vim /opt/zookeeper/node3/conf/zoo.cfg

dataDir=/data
dataLogDir=/datalog
clientPort=2181
4lw.commands.whitelist=*
tickTime=2000
initLimit=5
syncLimit=2
autopurge.snapRetainCount=3
autopurge.purgeInterval=0
maxClientCnxns=60
admin.enableServer=true
server.1=zookeeper1:2888:3888
server.2=zookeeper2:2888:3888
server.3=zookeeper3:2888:3888
quorumListenOnAllIPs=true

 

vim /opt/zookeeper/docker-compose.yml

version: '3.6'
services:
  zookeeper1:
    image: v-zookeeper1
    container_name: zookeeper1
    build: 
      context: .
      dockerfile: Dockerfile
    hostname: zookeeper1
    restart: always
    ports:
      - "2181:2181"
      - "18081:8080"
    environment:
      ZOO_MY_ID: 1
    volumes:
      - "./node1/conf/zoo.cfg:/conf/zoo.cfg"
      - "/var/lib/zookeeper/node1:/data"
      - "/var/log/zookeeper/node1/version-2:/datalog/version-2"
  zookeeper2:
    image: v-zookeeper2
    container_name: zookeeper2
    build: 
      context: .
      dockerfile: Dockerfile
    hostname: zookeeper2
    restart: always
    ports:
      - "2182:2181"
      - "18082:8080"
    environment:
      ZOO_MY_ID: 2
    volumes:
      - "./node2/conf/zoo.cfg:/conf/zoo.cfg"
      - "/var/lib/zookeeper/node2:/data"
      - "/var/log/zookeeper/node2/version-2:/datalog/version-2"
  zookeeper3:
    image: v-zookeeper3
    container_name: zookeeper3
    build: 
      context: .
      dockerfile: Dockerfile
    hostname: zookeeper3
    restart: always
    ports:
      - "2183:2181"
      - "18083:8080"
    environment:
      ZOO_MY_ID: 3
    volumes:
      - "./node3/conf/zoo.cfg:/conf/zoo.cfg"
      - "/var/lib/zookeeper/node3:/data"
      - "/var/log/zookeeper/node3/version-2:/datalog/version-2"

 

查看狀態docker exec -it zookeeper2 bash ./bin/zkServer.sh status

 

集群

集群模式必須設置clientPort的值

sudo mkdir -p /etc/zookeeper;sudo chmod -R 777 /etc/zookeeper
sudo mkdir -p /var/lib/zookeeper/version-2;sudo chmod -R 777 /var/lib/zookeeper/version-2
sudo mkdir -p /var/log/zookeeper/version-2;sudo chmod -R 777 /var/log/zookeeper/version-2

 

vim /opt/zookeeper/Dockerfile

FROM zookeeper:3.5.6
EXPOSE 2181
EXPOSE 2888
EXPOSE 3888
EXPOSE 8080

 

服務器1、2、3:

vim /etc/zookeeper/zoo.cfg

dataDir=/data
dataLogDir=/datalog
clientPort=2181
4lw.commands.whitelist=*
tickTime=2000
initLimit=5
syncLimit=2
autopurge.snapRetainCount=3
autopurge.purgeInterval=0
maxClientCnxns=60
admin.enableServer=true
server.1=192.168.1.101:2888:3888
server.2=192.168.1.102:2888:3888
server.3=192.168.1.103:2888:3888
quorumListenOnAllIPs=true

 

服務器1:

vim /opt/zookeeper/docker-compose.yml

version: '3.7'
services:
  zookeeper:
    image: v-zookeeper
    container_name: zookeeper
    build: 
      context: .
      dockerfile: Dockerfile
    restart: always
    privileged: true
    ports:
      - "2181:2181"
      - "2888:2888"
      - "3888:3888"
      - "18080:8080"
    environment: 
      - JAVA_OPTS=-Xms256m -Xmx256m -Xmn100m
      - ZOO_MY_ID=1
    volumes: 
      - "/etc/zookeeper/zoo.cfg:/conf/zoo.cfg"
      - "/var/lib/zookeeper/version-2:/data/version-2"
      - "/var/log/zookeeper/version-2:/datalog/version-2"
    logging:
      driver: "json-file"
      options:
        max-size: "200k"
        max-file: "100"

 

服務器2:

vim /opt/zookeeper/docker-compose.yml

version: '3.7'
services:
  zookeeper:
    image: v-zookeeper
    container_name: zookeeper
    build: 
      context: .
      dockerfile: Dockerfile
    restart: always
    privileged: true
    ports:
      - "2181:2181"
      - "2888:2888"
      - "3888:3888"
      - "18080:8080"
    environment: 
      - JAVA_OPTS=-Xms256m -Xmx256m -Xmn100m
      - ZOO_MY_ID=2
    volumes: 
      - "/etc/zookeeper/zoo.cfg:/conf/zoo.cfg"
      - "/var/lib/zookeeper/version-2:/data/version-2"
      - "/var/log/zookeeper/version-2:/datalog/version-2"
    logging:
      driver: "json-file"
      options:
        max-size: "200k"
        max-file: "100"

 

服務器3:

vim /opt/zookeeper/docker-compose.yml

version: '3.7'
services:
  zookeeper:
    image: v-zookeeper
    container_name: zookeeper
    build: 
      context: .
      dockerfile: Dockerfile
    restart: always
    privileged: true
    ports:
      - "2181:2181"
      - "2888:2888"
      - "3888:3888"
      - "18080:8080"
    environment: 
      - JAVA_OPTS=-Xms256m -Xmx256m -Xmn100m
      - ZOO_MY_ID=3
    volumes: 
      - "/etc/zookeeper/zoo.cfg:/conf/zoo.cfg"
      - "/var/lib/zookeeper/version-2:/data/version-2"
      - "/var/log/zookeeper/version-2:/datalog/version-2"
    logging:
      driver: "json-file"
      options:
        max-size: "200k"
        max-file: "100"

 

需要配置quorumListenOnAllIPs=true,用以監聽所有網卡,這個和雲服務器的一些虛擬技術有關。

 

啟動

cd /opt/zookeeper
docker-compose build
docker-compose up -d --force-recreate

 

查看日志

docker logs --tail="500" zookeeper

 

備份配置文件

docker cp zookeeper:/conf/zoo.cfg /opt/zookeeper/conf/zoo_bak.cfg

docker cp zookeeper1:/conf/ /opt/zookeeper/zookeeper1_conf_bak/ 

 

進入容器

docker exec -it zookeeper /bin/bash

 

檢查容器狀態

docker exec -it zookeeper1 /bin/bash ./bin/zkServer.sh status


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM