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 = INFO
log4j.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