Далеко ниже вы можете найти файлы docker-compose.yml.Изменение лидерства кластера кластера при лидерстве умирает
Предпосылки:
Я старт 3 Zookeeper серверов в качестве кластера с помощью докер-компоновать (DOCKER-compose.yml, 3 Zookeepers), а затем добавить один 4. (другой docker- compose.yml, 1 zookeeper) для кластера. Один из первых 3 зоопарков - лидер, 4 - последователь, как и ожидалось.
Проблема:
Когда я перестану первые три Zookeepers (за счет docker-compose down
), я «потерять» лидера и я ожидаю 4. зоопарка, чтобы взять на себя руководство.
Единственное, что происходит в том, что показывает ошибки зоопарка, например .:
WARN Cannot open channel to 3 at election address localhost/127.0.0.1:43888
java.net.ConnectException: Connection refused
Doing 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:
При запуске одного сервера Zookeeper на первом (без других уже работает), он просто возвращает сообщения об ошибках (см. ошибки выше) и, очевидно, не работает ng правильно, так как echo stat | nc localhost 52181 | grep Mode
снова ничего не возвращает.
Когда я добавляю других кладовщиков 3 в кластер, все работает хорошо, а первый сервер zookeeper - leader
.
Убивание первого zookeeper листьев 3 работает, и один из них - новый leader
.
Вопрос:
- Я ожидаю, что оставляя одного зоопарка в кластере делает его «лидером».
- Он работает «по-другому», как описано в решении 2 (но потом не один, но три зоопарка оставлены, только один убит).
- Почему это не работает, как описано в проблеме, оставляя единственного zookeeper в качестве лидера или как отдельный рабочий сервер zookeeper, соответственно?
Докер-compose.yml файлы:
Я старт 3 Zookeeper серверов с Докер-композе и следующий Докер-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
старте я a 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