简介
之前使用的zookeeper一直都是单节点的,为了防止出现单点故障,所以准备搭建个三节点的集群,以我的个性肯定是使用docker去搭建,其实也是很简单的,就是修改几个参数而已
操作
直接上compose文件应该就很清楚了
version: "3"
services:
zookeeper:
image: "zookeeper:3.5.6"
container_name: "zookeeper"
restart: "always"
volumes:
- "/etc/localtime:/etc/localtime"
- "./logs:/logs"
hostname: "192.168.1.103"
network_mode: "host"
environment:
- "ZOO_STANDALONE_ENABLED=false"
- "ZOO_ADMINSERVER_ENABLED=true"
- "ZOO_LOG4J_PROP=INFO,ROLLINGFILE"
- "ZOO_MY_ID=2"
- "ZOO_SERVERS=server.1=192.168.1.104:2888:3888;2181 server.2=0.0.0.0:2888:3888;2181 server.3=192.168.1.102:2888:3888;2181"
解释下参数volume这里我挂载了日志,方便之后排查问题
为了减少网络相关的问题我直接使用host模式
environment这里
ZOO_STANDALONE_ENABLED
表示zookeeper使用STANDALONE模式还是Distributed模式,因为我们是集群,所以关闭,默认这个参数为trueZOO_ADMINSERVER_ENABLED
表示要不要开启AdminServer,默认为true,我这里为了方便查看状态,所以就开启了ZOO_LOG4J_PROP
默认zookeeper会把日志打在标准输出,但是因为是生产,照道理要保存日志,所以要添加这个参数日志会打入/logs
下ZOO_MY_ID
zookeeper 节点id,这里我的是第二个节点的配置文件所以是2ZOO_SERVERS
zookeeper 的所有节点的配置,我使用的是3.5.6版本,所以配置和老的不一样,要类似server.id=<address1>:<port1>:<port2>[:role];[<client port address>:]<client port>
还有如果你是server2的配置那么ip要写为0.0.0.0
这里我是三个节点的,三个节点的compose文件都是差不多的除了hostname
,ZOO_MY_ID
,ZOO_SERVERS
的值不一样,配置完分发到三个节点直接启动就好了,还有zookeeper的启动顺序也是有要求的,id小的要先启动
欢迎关注我的博客www.bboy.app
Have Fun