在这里插入图片描述

问题背景

前言

  1. 本文参考自:docker-compose快速搭建Zookeeper集群,熬到凌晨三点多验证部署成功,网上有很多文章已经无法正确部署了,因为有些东西版本升级了,版本跟不上就会报错
  2. 还有一种更加详细更加全面的部署方式:Docker之docker-compose一键部署Zookeeper集群,但笔者还未验证,先记录下来
  3. 如果是0基础docker-compose也不必惊慌,笔者也是0基础docker-compose,其实有掌握docker部署基础即可,compose能更加方便地编排服务,部署速度更加快了。

搭建

安装docker-ce

此处不赘述

安装docker-compose

不可以下载比以下版本号1.28.5更低的版本号,否则报错

# 下载
curl -L https://github.com/docker/compose/releases/download/1.28.5/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
# 创建全局命令并赋予权限
chmod +x /usr/local/bin/docker-compose

拉取镜像

版本号可以根据Curator框架的maven依赖版本号修改,笔者这里选3.5.7,做项目中引入的zookeeper依赖也尽量跟此处版本号一样

docker pull zookeeper:3.5.7

创建目录

mkdir zk-cluster
cd zk-cluster

vim docker-compose.yml

编辑docker-compose.yml

docker-compose的版本号不可以比以下版本号1.28.5更低的版本号,否则报错

version: '3.1'

networks:
  zk-net:
    name: zk-net   # 网络名

services:
  zoo1:
    image: zookeeper:3.5.7
    container_name: zoo1   # 容器名称
    restart: always       # 开机自启
    hostname: zoo1        # 主机名
    ports:
      - 2181:2181         # 端口号
    environment:
      ZOO_MY_ID: 1
      ZOO_SERVERS: server.1=zoo1:2888:3888;2181 server.2=zoo2:2888:3888;2181 server.3=zoo3:2888:3888;2181
    networks:
      - zk-net

  zoo2:
    image: zookeeper:3.5.7
    container_name: zoo2
    restart: always
    hostname: zoo2
    ports:
      - 2182:2181
    environment:
      ZOO_MY_ID: 2
      ZOO_SERVERS: server.1=zoo1:2888:3888;2181 server.2=zoo2:2888:3888;2181 server.3=zoo3:2888:3888;2181
    networks:
      - zk-net

  zoo3:
    image: zookeeper:3.5.7
    container_name: zoo3
    restart: always
    hostname: zoo3
    ports:
      - 2183:2181
    environment:
      ZOO_MY_ID: 3
      ZOO_SERVERS: server.1=zoo1:2888:3888;2181 server.2=zoo2:2888:3888;2181 server.3=zoo3:2888:3888;2181
    networks:
      - zk-net

启动容器服务

docker-compose -f docker-compose.yml up -d

检查是否启动成功

docker exec -it zoo1 zkServer.sh status

docker exec -it zoo2 zkServer.sh status

docker exec -it zoo3 zkServer.sh status
Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐