Docker swarm 配置zk集群高可用

405 阅读2分钟

Docker swarm 配置zk集群高可用

一创建服务器挂在目录

mkdir -pv /data/docker/composes/prod/middleware/zookeeper_cluster/zoo1/{conf,data,datalog};
mkdir -pv /data/docker/composes/prod/middleware/zookeeper_cluster/zoo2/{conf,data,datalog};
mkdir -pv /data/docker/composes/prod/middleware/zookeeper_cluster/zoo3/{conf,data,datalog};

二zk,yml 配置

version: '3.1'

networks:
  GIE-ECP-overlay-network:
    external: true

services:
  zookeeper1:
    image: 10.11.32.23:5000/zookeeper:v3.4.13
    restart: always
    hostname: zookeeper1
    container_name: zookeeper1
    ports:
      - 2181:2181
    environment:
      ZOO_MY_ID: 1
      ZOO_SERVERS: server.1=0.0.0.0:2888:3888 server.2=zookeeper2:2888:3888 server.3=zookeeper3:2888:3888
    volumes:
      - /data/docker/composes/prod/middleware/zookeeper_cluster/zoo1/conf:/opt/zookeeper-3.4.13/bin/../conf
#      - /data/docker/composes/prod/middleware/zookeeper_cluster/zoo1/conf/zoo.cfg:/opt/zookeeper-3.4.13/bin/../conf/zoo.cfg
      - /data/docker/composes/prod/middleware/zookeeper_cluster/zoo1/data:/opt/zookeeper-3.4.13/bin/../data
#      - /data/docker/composes/prod/middleware/zookeeper_cluster/zoo1/data/myid:/opt/zookeeper-3.4.13/bin/../data/myid

    networks:
      - GIE-ECP-overlay-network
    deploy:
      replicas: 1
      placement:
        constraints:
          - node.hostname == GIE-EC-Node03
  zookeeper2:
    image: 10.11.32.23:5000/zookeeper:v3.4.13
    restart: always
    hostname: zookeeper2
    container_name: zookeeper2
    ports:
      - 2182:2181
    environment:
      ZOO_MY_ID: 2
      ZOO_SERVERS: server.1=zookeeper1:2888:3888 server.2=0.0.0.0:2888:3888 server.3=zookeeper3:2888:3888
    volumes:
      - /data/docker/composes/prod/middleware/zookeeper_cluster/zoo2/conf:/opt/zookeeper-3.4.13/bin/../conf
 #     - /data/docker/composes/prod/middleware/zookeeper_cluster/zoo2/conf/zoo.cfg:/opt/zookeeper-3.4.13/bin/../conf/zoo.cfg
      - /data/docker/composes/prod/middleware/zookeeper_cluster/zoo2/data:/opt/zookeeper-3.4.13/bin/../data
 #     - /data/docker/composes/prod/middleware/zookeeper_cluster/zoo2/data/myid:/opt/zookeeper-3.4.13/bin/../data/myid
    networks:
      - GIE-ECP-overlay-network
    deploy:
      replicas: 1
      placement:
        constraints:
          - node.hostname == GIE-EC-Node04
  zookeeper3:
    image: 10.11.32.23:5000/zookeeper:v3.4.13
    restart: always
    hostname: zookeeper3
    container_name: zookeeper3
    ports:
      - 2183:2181
    environment:
      ZOO_MY_ID: 3
      ZOO_SERVERS: server.1=zookeeper1:2888:3888 server.2=zookeeper2:2888:3888 server.3=0.0.0.0:2888:3888
    volumes:
      - /data/docker/composes/prod/middleware/zookeeper_cluster/zoo3/conf:/opt/zookeeper-3.4.13/bin/../conf
  #    - /data/docker/composes/prod/middleware/zookeeper_cluster/zoo3/conf/zoo.cfg:/opt/zookeeper-3.4.13/bin/../conf/zoo.cfg
      - /data/docker/composes/prod/middleware/zookeeper_cluster/zoo3/data:/opt/zookeeper-3.4.13/bin/../data
  #    - /data/docker/composes/prod/middleware/zookeeper_cluster/zoo3/data/myid:/opt/zookeeper-3.4.13/bin/../data/myid

    networks:
      - GIE-ECP-overlay-network
    deploy:
      replicas: 1
      placement:
        constraints:
          - node.hostname == GIE-EC-Node05

三配置文件配置

每个服务器目录下 /data/docker/composes/prod/middleware/zookeeper_cluster/zoo1/conf/zoo.cfg 配置

zookeeper1 zoo.conf

clientPort=2181
dataDir=/opt/zookeeper-3.4.13/data
tickTime=2000
initLimit=5
syncLimit=2
autopurge.snapRetainCount=3
autopurge.purgeInterval=0
maxClientCnxns=60
server.1=0.0.0.0:2888:3888
server.2=zookeeper2:2888:3888
server.3=zookeeper3:2888:3888

zookeeper2 zoo.conf

clientPort=2181
dataDir=/opt/zookeeper-3.4.13/data
tickTime=2000
initLimit=5
syncLimit=2
autopurge.snapRetainCount=3
autopurge.purgeInterval=0
maxClientCnxns=60
server.1=zookeeper1:2888:3888
server.2=0.0.0.0:2888:3888
server.3=zookeeper3:2888:3888

zookeeper3 zoo.conf

clientPort=2181
dataDir=/opt/zookeeper-3.4.13/data
tickTime=2000
initLimit=5
syncLimit=2
autopurge.snapRetainCount=3
autopurge.purgeInterval=0
maxClientCnxns=60
server.1=zookeeper3:2888:3888
server.2=zookeeper2:2888:3888
server.3=0.0.0.0:2888:3888

每个服务器目录下 /data/docker/composes/prod/middleware/zookeeper_cluster/zoo1/conf/log4j.properties配置

log4j.rootLogger=INFO,console,dailyFile
​
#TODO 发布到阿里云记得添加,另外控制台不输出(只输出warn或者error信息)#log4j.logger.org.mybatis = INFOlog4j.logger.com.imooc.mapper=INFO
​
log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.encoding=UTF-8
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss,SSS} [%t] [%l] - [%p] %m%n
​
# 定期滚动日志文件,每天都会生成日志log4j.appender.dailyFile=org.apache.log4j.DailyRollingFileAppender
log4j.appender.dailyFile.encoding=UTF-8
log4j.appender.dailyFile.Threshold=INFO
​
# TODO 本地日志地址,正式环境请务必切换为阿里云地址log4j.appender.dailyFile.File=C:/logs/maven-ssm-alipay/log.log4j
log4j.appender.dailyFile.DatePattern='.'yyyy-MM-dd
log4j.appender.dailyFile.layout=org.apache.log4j.PatternLayout
log4j.appender.dailyFile.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss,SSS} [%t] [%l] - [%p] %m%n

每个服务器配置myid 1 myid 2 myid 3

例如/data/docker/composes/prod/middleware/zookeeper_cluster/zoo1/data/myid 内容以为1