[Docker Learning]——zookeeper déployé par docker-compose

Préface

   基于若依框架,慢慢学习,总结笔记
   该篇文章,博主使用了两台服务器。由于zookeeper需要三个服务才能做选举。所以我在服务器A上搭了一个zookeeper,服务器B上搭了两个zookeeper

1. Construisez la structure du répertoire des fichiers zookeeper

Insérer la description de l'image ici

2.Le chemin et le contenu du fichier de configuration de zookeeper

Insérer la description de l'image ici

  • Serveur A

# 存储快照文件snapshot的目录(相当于redis的rdb)
dataDir=/data

# ZK中的一个时间单元。ZK中所有时间都是以这个时间单元为基础,进行整数倍配置的。例如,session的最小超时时间是2*tickTime
tickTime=2000

# 初始值显示的刻度数,同步阶段可能需要
initLimit=10

# 发送请求和获得确认之间可以传递的心跳数
syncLimit=5

# 暴露服务端对外端口
clientPort=2181

# 单个客户端与单台服务器之间的连接数的限制,是ip级别的,默认是60,如果设置为0,那么表明不作任何限制
maxClientCnxns=60

# 需要保留的文件数目,默认是保留3个
autopurge.snapRetainCount=3

# ZK提供了自动清理事务日志和快照文件的功能,这个参数指定了清理频率,单位是小时,需要配置一个1或更大的整数,默认是0,表示不开启自动清理功能
autopurge.purgeInterval=1

# 监控指标
metricsProvider.className=org.apache.zookeeper.metrics.prometheus.PrometheusMetricsProvider
metricsProvider.httpPort=7000
metricsProvider.exportJvmInfo=true

audit.enable=true

server.1=0.0.0.0:2888:3888 # 0.0.0.0代表本机IP
server.2=zookeeper2.host:2888:3888 # zookeeper2.host再最外层配置了环境变量
server.3=zookeeper3.host:2889:3889
  • Serveur B

# 存储快照文件snapshot的目录(相当于redis的rdb)
dataDir=/data

# ZK中的一个时间单元。ZK中所有时间都是以这个时间单元为基础,进行整数倍配置的。例如,session的最小超时时间是2*tickTime
tickTime=2000

# 初始值显示的刻度数,同步阶段可能需要
initLimit=10

# 发送请求和获得确认之间可以传递的心跳数
syncLimit=5

# 暴露服务端对外端口
clientPort=2181

# 单个客户端与单台服务器之间的连接数的限制,是ip级别的,默认是60,如果设置为0,那么表明不作任何限制
maxClientCnxns=60

# 需要保留的文件数目,默认是保留3个
autopurge.snapRetainCount=3

# ZK提供了自动清理事务日志和快照文件的功能,这个参数指定了清理频率,单位是小时,需要配置一个1或更大的整数,默认是0,表示不开启自动清理功能
autopurge.purgeInterval=1

# 监控指标
metricsProvider.className=org.apache.zookeeper.metrics.prometheus.PrometheusMetricsProvider
metricsProvider.httpPort=7000
metricsProvider.exportJvmInfo=true

audit.enable=true

server.1=zookeeper1.host:2888:3888 # zookeeper1.host再最外层配置了环境变量
server.2=0.0.0.0:2888:3888 # 0.0.0.0代表本机IP
server.3=0.0.0.0:2889:3889

3.fichier docker-compose

  • Serveur A
# 描述 Compose 文件的版本信息
version: '3.8'
# 定义服务,可以多个
services:
  nanjing-project-zookeeper1: # 服务名称
    image: zookeeper:3.7.0 # 创建容器时所需的镜像
    container_name: nanjing-project-zookeeper1 # 容器名称
    ports:
      - '2181:2181'
      - '2888:2888'
      - '3888:3888'
    volumes: # 数据卷,目录挂载
      - "./zookeeper/data:/data"
      - "./zookeeper/datalog:/datalog"
      - "./../hosts-${active}:/etc/hosts" 
      - "./zookeeper/conf:/conf"  
    environment: # 添加环境变量
      - ZOO_MY_ID:1
      - ALLOW_ANONYMOUS_LOGIN=yes
    restart: always # 容器总是重新启动

  • Serveur B
version: '3.8'
networks:
  zk-net:
    name: zk-net

services:
  nanjing-project-zookeeper2:
    image: zookeeper:3.7.0
    container_name: nanjing-project-zookeeper2
    networks:
      - zk-net
    ports:
      - '2181:2181'
      - '2888:2888'
      - '3888:3888'
    volumes:
      - "./zookeeper/data:/data"
      - "./zookeeper/datalog:/datalog"
      - "./../hosts-${active}:/etc/hosts" 
      - "./zookeeper/conf:/conf"  
    environment:
      - ZOO_MY_ID:2
      - ALLOW_ANONYMOUS_LOGIN=yes
    restart: always

  nanjing-project-zookeeper3:
    image: zookeeper:3.7.0
    container_name: nanjing-project-zookeeper3
    networks:
      - zk-net
    ports:
      - '2182:2182'
      - '2889:2889'
      - '3889:3889'
    volumes:
      - "./zookeeper/data:/data"
      - "./zookeeper/datalog:/datalog"
      - "./../hosts-${active}:/etc/hosts" 
      - "./zookeeper/conf:/conf"  
    environment:
      - ZOO_MY_ID:3 
      - ALLOW_ANONYMOUS_LOGIN=yes
    restart: always

4. Créez un fichier de variables d'environnement dans la couche la plus externe (reportez-vous à la capture d'écran ci-dessus, créée sous le niveau d'accueil)

  • Nom du fichier : hosts-prod (utilisé pour docker-compose et d'autres fichiers pour obtenir des variables d'environnement unifiées)
127.0.0.1 master

服务器A内网IP zookeeper1.host
服务器B内网IP zookeeper2.host
服务器B内网IP zookeeper3.host

  • Nom du fichier : prod.env (utilisé pour les paramètres des variables d'environnement lorsque le script sh est démarré à l'aide de docker-compose)
version=1.0.0 #当前版本
active=prod  #测试环境test 生产环境prod

5. Écrivez le script d'exécution sh

docker-compose -f docker-compose-zookeeper.yml  --env-file ./../prod.env -p zookeeper down
docker-compose -f docker-compose-zookeeper.yml  --env-file ./../prod.env -p zookeeper build
docker-compose -f docker-compose-zookeeper.yml  --env-file ./../prod.env -p zookeeper up -d

Ensuite, exécutez simplement le script sh. Faites attention pour voir si le déploiement est réussi.

进入容器  docker exec -it zookeeper的容器ID /bin/bash
执行 zkService.sh status

ZooKeeper JMX enabled by default
Using config: /conf/zoo.cfg
Client port found: 2181. Client address: localhost. Client SSL: false.
Mode: follower # 查看当前节点是leader还是follower

Je suppose que tu aimes

Origine blog.csdn.net/weixin_43387699/article/details/131815946
conseillé
Classement