1

Далеко ниже вы можете найти файлы 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 

ответ

2

нужно иметь в виду: zookeeper будет появляться только в том случае, если работает большинство серверов. поэтому, если у вас есть 4 сервера и вытащите 3 из них, zookeeper появится только при запуске еще двух.

какая версия zookeeper вы используете? если он до 3.5 или (вы используете 3.5 и не используете команды реконфигурации), вам нужно будет перезапустить серверы при изменении конфигураций.

+0

Это привело меня в правильном направлении, спасибо! Я обновлю свой вопрос, как только смогу. – rocksteady