docker搭建zookeeper集群

简介

之前使用的zookeeper一直都是单节点的,为了防止出现单点故障,所以准备搭建个三节点的集群,以我的个性肯定是使用docker去搭建,其实也是很简单的,就是修改几个参数而已

操作

直接上compose文件应该就很清楚了

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
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模式,因为我们是集群,所以关闭,默认这个参数为true
  • ZOO_ADMINSERVER_ENABLED 表示要不要开启AdminServer,默认为true,我这里为了方便查看状态,所以就开启了
  • ZOO_LOG4J_PROP 默认zookeeper会把日志打在标准输出,但是因为是生产,照道理要保存日志,所以要添加这个参数日志会打入/logs
  • ZOO_MY_ID zookeeper 节点id,这里我的是第二个节点的配置文件所以是2
  • ZOO_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小的要先启动

欢迎关注Bboysoul的博客www.bboy.app

Have Fun

欢迎关注我的其它发布渠道