远低于您可以找到docker-compose.yml文件。当领导人死亡时更改动物园管理员群集领导
先决条件:
我使用搬运工-组成(搬运工-compose.yml,3个动物园管理员)开始3台动物园管理员服务器作为集群,然后我添加4.一个(另一docker- compose.yml,1个动物园管理员)。 前3名动物园管理员之一是领导者,4.如预期的那样,一名是追随者。
问题:
当我停止前三个饲养员(由docker-compose down
方式),我“丢失”的领导者,我期待4.动物园管理员采取领导。
出现这种情况的唯一的事情就是饲养员显示错误,例如:
WARN Cannot open channel to 3 at election address localhost/127.0.0.1:43888
java.net.ConnectException: Connection refused
做echo stat | nc localhost 52181 | grep Mode
以前返回对于最后的动物园管理员模式follower
,现在没有返回。
静止runnng饲养员服务器只是说,如:
INFO Closed socket connection for client /127.0.0.1:43548 (no session established for client) (org.apache.zookeeper.server.NIOServerCnxn)
解决方案1:
增加时间限制并没有帮助,同样的结果:
ZOOKEEPER_TICK_TIME: 4000
ZOOKEEPER_INIT_LIMIT: 30
ZOOKEEPER_SYNC_LIMIT: 15
解决方案2:
- 其他aorund方式:
当我开始在第一单动物园管理员服务器(无其他已经运行),它只是返回错误消息(见上面的错误),显然不是runni ng,因为echo stat | nc localhost 52181 | grep Mode
再次没有返回。
当我然后将其他3个动物园管理员添加到群集,所有运行良好,第一个动物园管理员服务器是leader
。
杀死第一个动物园管理员离开3运行,其中一个是新的leader
。
问:
- 我预计,在集群中留下一个动物园管理员使它成为“领导者”。
- 它可以像解决方案2中描述的那样“相反的方式”(但不是一个,但是三个动物园管理员正在运行,只有一个被杀死)。
- 为什么它不像问题中描述的那样工作,将单个动物园管理员分别作为领导者或单个工作动物园管理员服务器?
泊坞窗,compose.yml文件:
我开始与码头工人,撰写3个饲养员服务器及以下泊坞窗,compose.yml:
---
version: '2'
services:
zookeeper_1:
image: confluentinc/cp-zookeeper:3.1.1
network_mode: host
environment:
ZOOKEEPER_SERVER_ID: 1
ZOOKEEPER_CLIENT_PORT: 22181
ZOOKEEPER_TICK_TIME: 2000
ZOOKEEPER_INIT_LIMIT: 5
ZOOKEEPER_SYNC_LIMIT: 2
ZOOKEEPER_SERVERS: localhost:22888:23888;localhost:32888:33888;localhost:42888:43888;localhost:52888:53888
zookeeper_2:
image: confluentinc/cp-zookeeper:3.1.1
network_mode: host
environment:
ZOOKEEPER_SERVER_ID: 2
ZOOKEEPER_CLIENT_PORT: 32181
ZOOKEEPER_TICK_TIME: 2000
ZOOKEEPER_INIT_LIMIT: 5
ZOOKEEPER_SYNC_LIMIT: 2
ZOOKEEPER_SERVERS: localhost:22888:23888;localhost:32888:33888;localhost:42888:43888;localhost:52888:53888
zookeeper_3:
image: confluentinc/cp-zookeeper:3.1.1
network_mode: host
environment:
ZOOKEEPER_SERVER_ID: 3
ZOOKEEPER_CLIENT_PORT: 42181
ZOOKEEPER_TICK_TIME: 2000
ZOOKEEPER_INIT_LIMIT: 5
ZOOKEEPER_SYNC_LIMIT: 2
ZOOKEEPER_SERVERS: localhost:22888:23888;localhost:32888:33888;localhost:42888:43888;localhost:52888:53888
的我开始4.一个以相同的方式:
---
version: '2'
services:
zookeeper_4:
image: confluentinc/cp-zookeeper:3.1.1
network_mode: host
environment:
ZOOKEEPER_SERVER_ID: 4
ZOOKEEPER_CLIENT_PORT: 52181
ZOOKEEPER_TICK_TIME: 2000
ZOOKEEPER_INIT_LIMIT: 5
ZOOKEEPER_SYNC_LIMIT: 2
ZOOKEEPER_SERVERS: localhost:22888:23888;localhost:32888:33888;localhost:42888:43888;localhost:52888:53888
这让我走向了正确的方向,谢谢!我会尽快更新我的问题。 – rocksteady