zookeeper集群

115 阅读2分钟

dockerhub:registry.hub.docker.com/_/zookeeper

环境:centos7 docker vbox虚拟机

docker-compose搭建

下载docker-compose

curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
docker-compose --version

dczk1.png

docker-compose.yml

随便新建一个文件夹在里面写docker-compose.yml文件

cd /dzz
mkdir dcset
cd dcset
vim docker-compose.yml

docker-compose.yml

version: "3.1"

services:
  zoo1:
    image: zookeeper:3.8 #镜像名称
    restart: always #docker重启容器一起启动
    hostname: zoo1 #主机名
    container_name: zoo1 #容器自定义名称
    privileged: true #root权限
    ports:  #端口映射
      - 2181:2181
    volumes: #挂载容器卷,自动创建
      - /dzz/zoo1/data:/data
      - /dzz/zoo1/datalog:/datalog
    environment:
      ZOO_MY_ID: 1 #节点ID
      ZOO_SERVERS: server.1=zoo1:2888:3888;2181 server.2=zoo2:2888:3888;2181 server.3=zoo3:2888:3888;2181
      TZ: Asia/Shanghai #时区
    networks: #网络
      - zoomy
  zoo2:
    image: zookeeper:3.8
    restart: always
    hostname: zoo2
    container_name: zoo2 #容器自定义名称
    privileged: true
    ports:  #端口映射
      - 2182:2181
    volumes: #挂载容器卷
      - /dzz/zoo2/data:/data
      - /dzz/zoo2/datalog:/datalog
    environment:
      ZOO_MY_ID: 2 #节点ID
      ZOO_SERVERS: server.1=zoo1:2888:3888;2181 server.2=zoo2:2888:3888;2181 server.3=zoo3:2888:3888;2181
      TZ: Asia/Shanghai #时区
    networks:
      - zoomy
  zoo3:
    image: zookeeper:3.8
    restart: always
    hostname: zoo3
    container_name: zoo3 #容器自定义名称
    privileged: true
    ports:  #端口映射
      - 2183:2181
    volumes: #挂载容器卷
      - /dzz/zoo3/data:/data
      - /dzz/zoo3/datalog:/datalog
    environment:
      ZOO_MY_ID: 3 #节点ID
      ZOO_SERVERS: server.1=zoo1:2888:3888;2181 server.2=zoo2:2888:3888;2181 server.3=zoo3:2888:3888;2181
      TZ: Asia/Shanghai #时区
    networks:
      - zoomy

networks:
  zoomy:

保存退出

compose常用命令

docker-compose -h 查看帮助

docker-compose up 启动所有docker-compose服务

docker-compose up -d 启动所有docker-compose服务并后台运行

docker-compose down 停止并删除容器,网络,镜像

docker-compose exec yum 服务ID bash 进入容器内部

docker-compose ps 查看编排过的运行的所有容器

docker-compose top 展示编排过的容器进程

docker-compose logs yum 服务ID 查看容器输出日志

docker-compose config 检查配置

docker-compose config -q 检查配置有问题才输出

docker-compose restart 重启服务

docker-compose start 启动服务

docker-compose stop 停止服务

当前docker-compose.yml目录下执行命令,启动所有docker-compose服务并后台运行

docker-compose up -d

image.png

验证

分别进入zk的三个容器中,查看状态

docker exec -it zoo1 bash
zkServer.sh status
#剩下两个照做

总共可以看到两个follower一个leader

image.png

image.png

image.png

一主二从

选一个在容器内进入zk

zkCli.sh

创建节点

create /test

查看节点

ls /

dczk7.png

可以在打开其他容器验证是否存在,若存在验证完毕。

docker搭建

下载zk

docker pull zookeeper

新建网络

创建网络名为zoomy
docker network create zoomy
查看网络
docker network ls

创建zk容器

zoo1

$ docker run -d \
     --restart=always \
     --privileged=true \
     --network zoomy \
     --name=zoo1 \
     -v /dzz/zoo1/data:/data \
     -v /dzz/zoo1/datalog:/datalog \
     -e ZOO_MY_ID=1 \
     -p 2181:2181 \
     -e ZOO_SERVERS="server.1=zoo1:2888:3888 server.2=zoo2:2888:3888 server.3=zoo3:2888:3888" \
     zookeeper

zoo2

$ docker run -d \
     --restart=always \
     --privileged=true \
     --network zoomy \
     --name=zoo2 \
     -v /dzz/zoo2/data:/data \
     -v /dzz/zoo2/datalog:/datalog \
     -e ZOO_MY_ID=2 \
     -p 2182:2181 \
     -e ZOO_SERVERS="server.1=zoo1:2888:3888 server.2=zoo2:2888:3888 server.3=zoo3:2888:3888" \
     zookeeper

zoo3

$ docker run -d \
     --restart=always \
     --privileged=true \
     --network zoomy \
     --name=zoo3 \
     -v /dzz/zoo3/data:/data \
     -v /dzz/zoo3/datalog:/datalog \
     -e ZOO_MY_ID=3 \
     -p 2183:2181 \
     -e ZOO_SERVERS="server.1=zoo1:2888:3888 server.2=zoo2:2888:3888 server.3=zoo3:2888:3888" \
     zookeeper

完毕!