docker和docker-compose 安装方法请自行百度
服务器结构
服务器编号 | 10 | 11 | 12 | 13 |
类型 | observer | leader、follower、follower | observer | observer |
4台服务器 搭建6个zk
其中11服务器上有一个两个follower和一个leader的伪集群
编写docker-compose.yml
这里只列举一个伪集群的11服务和随便一个observer的
伪集群的docker-compose.yml
version: '2'
services:
zoo1:
image: zookeeper
restart: always
network_mode: "host"
container_name: zoo1
ports:
- "2181:2181"
- "2887:2888"
- "3887:3888"
environment:
ZOO_MY_ID: 1
ZOO_SERVERS: server.1=192.168.2.11:2887:3887;2181 server.2=192.168.2.11:2888:3888;2182 server.3=192.168.2.11:2889:3889;2183 server.4=192.168.2.10:2888:3888:observer;2181 server.5=192.168.2.12:2888:3888:observer;2181
zoo2:
image: zookeeper
restart: always
network_mode: "host"
container_name: zoo2
ports:
- "2182:2181"
- "2888:2888"
- "3888:3888"
environment:
ZOO_MY_ID: 2
ZOO_SERVERS: server.1=192.168.2.11:2887:3887;2181 server.2=192.168.2.11:2888:3888;2182 server.3=192.168.2.11:2889:3889;2183 server.4=192.168.2.10:2888:3888:observer;2181 server.5=192.168.2.12:2888:3888:observer;2181
zoo3:
image: zookeeper
restart: always
network_mode: "host"
container_name: zoo3
ports:
- "2183:2181"
- "2889:2888"
- "3889:3888"
environment:
ZOO_MY_ID: 3
observer docker-compose.yml
version: '2'
services:
zoo1:
image: zookeeper
restart: always
container_name: zookeeper
network_mode: "host"
ports:
- "2181:2181"
- "2888:2888"
- "3888:3888"
volumes:
- "/usr/local/zookeeper/data:/data"
environment:
ZOO_MY_ID: 4
PEER_TYPE: observer
ZOO_SERVERS: server.1=192.168.2.11:2887:3887;2181 server.2=192.168.2.11:2888:3888;2182 server.3=192.168.2.11:2889:3889;2183 server.4=192.168.2.10:2888:3888:observer;2181 server.5=192.168.2.12:2888:3888:observer;2181
这里没写13服务的配置 需要请自行添加
ports可以不指定,因为设置了网络模式为“host” 指定posts将不再起作用 这里我是懒得没去
其中也是遇到了很多问题,经过很多摸索才写对
可能遇到的问题:
1、不停打印错误日志
java.io.IOException: Leaders epoch, 1 is less than accepted epoch, 6
at org.apache.zookeeper.server.quorum.Learner.registerWithLeader(Learner.java:471)
at org.apache.zookeeper.server.quorum.Observer.observeLeader(Observer.java:110)
at org.apache.zookeeper.server.quorum.QuorumPeer.run(QuorumPeer.java:1439)
2020-10-22 15:38:18,254 [myid:5] - INFO [QuorumPeer[myid=5](plain=[0:0:0:0:0:0:0:0]:2181)(secure=disabled):Observer@138] - Disconnected from leader (with address: /192.168.2.11:2889). Was connected for 4ms. Sync state: false
2020-10-22 15:38:18,254 [myid:5] - INFO [QuorumPeer[myid=5](plain=[0:0:0:0:0:0:0:0]:2181)(secure=disabled):Observer@243] - shutdown Observer
2020-10-22 15:38:18,254 [myid:5] - INFO [QuorumPeer[myid=5](plain=[0:0:0:0:0:0:0:0]:2181)(secure=disabled):QuorumPeer@863] - Peer state changed: looking
2020-10-22 15:38:18,254 [myid:5] - WARN [QuorumPeer[myid=5](plain=[0:0:0:0:0:0:0:0]:2181)(secure=disabled):QuorumPeer@1504] - PeerState set to LOOKING
2020-10-22 15:38:18,254 [myid:5] - INFO [QuorumPeer[myid=5](plain=[0:0:0:0:0:0:0:0]:2181)(secure=disabled):Observer@258] - Waiting for 195 ms before reconnecting with the leader
2020-10-22 15:38:18,449 [myid:5] - INFO [QuorumPeer[myid=5](plain=[0:0:0:0:0:0:0:0]:2181)(secure=disabled):QuorumPeer@1374] - LOOKING
2020-10-22 15:38:18,450 [myid:5] - INFO [QuorumPeer[myid=5](plain=[0:0:0:0:0:0:0:0]:2181)(secure=disabled):FastLeaderElection@944] - New election. My id = 5, proposed zxid=0x8000000000000000
2020-10-22 15:38:18,451 [myid:5] - INFO [WorkerReceiver[myid=5]:FastLeaderElection$Messenger$WorkerReceiver@389] - Notification: my state:LOOKING; n.sid:3, n.state:LEADING, n.leader:3, n.round:0x1, n.peerEpoch:0x1, n.zxid:0x0, message format version:0x2, n.config version:0x0
2020-10-22 15:38:18,451 [myid:5] - INFO [WorkerReceiver[myid=5]:FastLeaderElection$Messenger$WorkerReceiver@389] - Notification: my state:LOOKING; n.sid:2, n.state:FOLLOWING, n.leader:3, n.round:0x1, n.peerEpoch:0x1, n.zxid:0x0, message format version:0x2, n.config version:0x0
2020-10-22 15:38:18,451 [myid:5] - INFO [WorkerReceiver[myid=5]:FastLeaderElection$Messenger$WorkerReceiver@389] - Notification: my state:LOOKING; n.sid:1, n.state:FOLLOWING, n.leader:3, n.round:0x1, n.peerEpoch:0x1, n.zxid:0x0, message format version:0x2, n.config version:0x0
2020-10-22 15:38:18,451 [myid:5] - INFO [QuorumPeer[myid=5](plain=[0:0:0:0:0:0:0:0]:2181)(secure=disabled):QuorumPeer@857] - Peer state changed: observing
2020-10-22 15:38:18,451 [myid:5] - INFO [QuorumPeer[myid=5](plain=[0:0:0:0:0:0:0:0]:2181)(secure=disabled):QuorumPeer@1437] - OBSERVING
2020-10-22 15:38:18,451 [myid:5] - INFO [QuorumPeer[myid=5](plain=[0:0:0:0:0:0:0:0]:2181)(secure=disabled):ZooKeeperServer@1256] - minSessionTimeout set to 4000
2020-10-22 15:38:18,452 [myid:5] - INFO [QuorumPeer[myid=5](plain=[0:0:0:0:0:0:0:0]:2181)(secure=disabled):ZooKeeperServer@1265] - maxSessionTimeout set to 40000
2020-10-22 15:38:18,452 [myid:5] - INFO [QuorumPeer[myid=5](plain=[0:0:0:0:0:0:0:0]:2181)(secure=disabled):ResponseCache@45] - Response cache size is initialized with value 400.
进入到zk容器 删除/data/version-xx文件
重启容器
如有问题请留言