栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

docker搭建zookeeper集群(伪集群)【笔记】

docker搭建zookeeper集群(伪集群)【笔记】

一、搭建zookeeper集群 1.创建挂载目录
mkdir -p $HOME/data/docker/{zk01}
mkdir -p $HOME/data/docker/zk01/{conf,data,datalog}
2.启动一个zookeeper(不要挂载)
docker run -d -p 2181:2181 --privileged=true --name=zk1  zookeeper:3.7
3.复制配置文件
docker cp zk1:/conf $HOME/data/docker/zk01/
4.复制2份zk01文件夹,并分别修改名称为zk02,zk03
cp -r zk01 zk02
cp -r zk01 zk03
5. 停止zk1并删除
docker stop zk1 && docker rm zk1
6. 编写docker-compose.yml启动脚本

在/opt/目录(目录自定义)下,新建docker-compose.yml文件
vi docker-compose.yml
输入如下内容

version: '3'
services:
  zk1:
    image: zookeeper:3.7 #使用的镜像
    restart: always #宕机后自动重启
    hostname: zk1 #承载zookeeper容器的主机(父容器)名 可省略
    container_name: zk1 #容器名
    privileged: true #使用该参数,container内的root拥有真正的root权 privileged启动的容器,可以看到很多host上的设备,并且可以执行mount。甚至允许你在docker容器中启动docker容器。
    ports: #主机和容器的端口映射
      - "2181:2181"
    volumes:  #创建zookeeper容器在宿主机的挂载目录
      - $HOME/data/docker/zk01/data:/data #数据
      - $HOME/data/docker/zk01/datalog:/datalog #日志
      - $HOME/data/docker/zk01/conf:/conf #配置文件
    environment: #zookeeper3.4 和zookeeper 3.5在docker环境下搭建集群差异就在这里 #zk1为容器名,也是主机名,意思为使用容器的内网通信(1)Zookeeper3.5 中指定的 ZOO_SERVERS 参数的 IP 地址和端口号后面多加了 “;2181 ”。(2)ZOO_SERVERS 指定ip时本机的ip地址写 0.0.0.0。
      ZOO_MY_ID: 1
      ZOO_SERVERS: server.1=0.0.0.0:2888:3888;2181 server.2=zk2:2888:3888;2181 server.3=zk3:2888:3888;2181
  zk2:
    image: zookeeper:3.7
    restart: always
    hostname: zk2
    container_name: zk2
    privileged: true
    ports:
      - "2182:2181"
    volumes:
      - $HOME/data/docker/zk02/data:/data
      - $HOME/data/docker/zk02/datalog:/datalog
      - $HOME/data/docker/zk02/conf:/conf
    environment:
      ZOO_MY_ID: 2
      ZOO_SERVERS: server.1=zk1:2888:3888;2181 server.2=0.0.0.0:2888:3888;2181 server.3=zk3:2888:3888;2181
  zk3:
    image: zookeeper3.7
    restart: always
    hostname: zk3
    container_name: zk3
    privileged: true
    ports:
      - "2183:2181"
    volumes:
      - $HOME/data/docker/zk03/data:/data
      - $HOME/data/docker/zk03/datalog:/datalog
      - $HOME/data/docker/zk03/conf:/conf
    environment:
      ZOO_MY_ID: 3
      ZOO_SERVERS: server.1=zk1:2888:3888;2181 server.2=zk2:2888:3888;2181 server.3=0.0.0.0:2888:3888;2181
6. 启动zookeeper集群
docker-compose up -d

网上有错误教程,步骤如下
1.创建挂载目录
2.编写docker-compose.yml脚本
3.直接docker-compose up -d启动
**发现容器启动失败,查看日志报错‘/docker-entrypoint.sh: line 43: /conf/zoo.cfg: Permission denied’
尝试授权、以及临时关闭centos7的安全模块,均无效。最终采用本文曲线挂载的方式成功

二、搭建zookeeper集群二(指定ip) 1.创建docker network
docker network create -d bridge --subnet 100.0.0.0/16 --gateway 100.0.0.1 network1
2.创建挂载目录
mkdir -p $HOME/data/docker/{zk01}
mkdir -p $HOME/data/docker/zk01/{conf,data,datalog}
3.启动一个zookeeper(不要挂载)
docker run -d -p 2181:2181 --privileged=true --name=zk1  zookeeper:3.7
4.复制配置文件
docker cp zk1:/conf $HOME/data/docker/zk01/
5.复制2份zk01文件夹,并分别修改名称为zk02,zk03
cp -r zk01 zk02
cp -r zk01 zk03
6. 停止zk1并删除
docker stop zk1 && docker rm zk1
7. 编写docker-compose.yml启动脚本

在/opt/目录(目录自定义)下,新建docker-compose.yml文件
vi docker-compose.yml
输入如下内容

version: '3'
services:
  zk1:
    image: zookeeper:3.7 #使用的镜像
    restart: always #宕机后自动重启
    hostname: zk1 #承载zookeeper容器的主机(父容器)名 可省略
    container_name: zk1 #容器名
    privileged: true #使用该参数,container内的root拥有真正的root权 privileged启动的容器,可以看到很多host上的设备,并且可以执行mount。甚至允许你在docker容器中启动docker容器。
    ports: #主机和容器的端口映射
      - "2181:2181"
    volumes: #创建zookeeper容器在宿主机的挂载目录
      - $HOME/data/docker/zk01/data:/data #数据
      - $HOME/data/docker/zk01/datalog:/datalog #日志
      - $HOME/data/docker/zk01/conf:/conf #配置文件
    environment: #zookeeper3.4 和zookeeper 3.5在docker环境下搭建集群差异就在这里 #zk1为容器名,也是主机名,意思为使用容器的内网通信(1)Zookeeper3.5 中指定的 ZOO_SERVERS 参数的 IP 地址和端口号后面多加了 “;2181 ”。(2)ZOO_SERVERS 指定ip时本机的ip地址写 0.0.0.0。
      ZOO_MY_ID: 1
      ZOO_SERVERS: server.1=0.0.0.0:2888:3888;2181 server.2=zk2:2888:3888;2181 server.3=zk3:2888:3888;2181
    networks:
      default:
        ipv4_address: 100.0.0.117 # 指定zk1的IP地址
  zk2:
    image: zookeeper:3.7
    restart: always
    hostname: zk2
    container_name: zk2
    privileged: true
    ports:
      - "2182:2181"
    volumes:
      - $HOME/data/docker/zk02/data:/data
      - $HOME/data/docker/zk02/datalog:/datalog
      - $HOME/data/docker/zk02/conf:/conf
    environment:
      ZOO_MY_ID: 2
      ZOO_SERVERS: server.1=zk1:2888:3888;2181 server.2=0.0.0.0:2888:3888;2181 server.3=zk3:2888:3888;2181
    networks:
      default:
        ipv4_address: 100.0.0.118
  zk3:
    image: zookeeper:3.7
    restart: always
    hostname: zk3
    container_name: zk3
    privileged: true
    ports:
      - "2183:2181"
    volumes:
      - $HOME/data/docker/zk03/data:/data
      - $HOME/data/docker/zk03/datalog:/datalog
      - $HOME/data/docker/zk03/conf:/conf
    environment:
      ZOO_MY_ID: 3
      ZOO_SERVERS: server.1=zk1:2888:3888;2181 server.2=zk2:2888:3888;2181 server.3=0.0.0.0:2888:3888;2181
    networks:
      default:
        ipv4_address: 100.0.0.119

networks:
  default:
    external:
      name: network1 # 指定使用的网络
7. 启动zookeeper集群
docker-compose up -d
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/433967.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号