Я регулярно наблюдаю довольно странную ситуацию, пытаясь запустить кластер Zookeeper (ZK) в Amazon Cloud.Все хорошо, если в сети нет кластера ZK, т.е. все новые экземпляры объединяются в новый кластер («холодный» запуск).Проблемы начинаются, если мне нужно запустить другой облачный стек (3 или 5 машин, не имеет значения), присоединить их к существующему кластеру ZK и удалить старый стек.
Типичный поток данных описан ниже.
- Облачный стек 1 начинается с нуля и образует кластер ZK.Этот кластер содержит хосты 1.1, 1.2 и 1.3 (псевдонимы).
- Через некоторое время облачный стек 2 запускается и присоединяется к существующему кластеру.Теперь кластер содержит хосты 1.1, 1.2, 1.3, 2.1, 2.2, 2.3.
- Все хосты из стека 1 переключены на «наблюдателя».
- Стек 1 удален.
- Все хосты из стека 1 удаляются из конфигурации ZK с помощью команды «reconfig -remove XXX». Проблемы начинаются здесь
- Стек 3 начинается.Хосты 3.1, 3.2 и 3.3 должны быть присоединены к текущему кластеру, который содержит хосты только из стек 2 * .В конфигурации кластера нет хостов из стека 1.
Хосты из стека 3 пытаются подключиться к кластеру строго последовательно, один за другим, а не одновременно.
Хост 3.1 присоединяется к кластеру как «наблюдатель».Проблемы по-прежнему не обнаружены.
- Проблемы начинаются примерно в 70% случаев (не каждый раз!), Когда новый хост 3.1 пытается переключиться на участника с помощью команды " reconfig -add XXX ».Журнал сообщает, что пытается подключиться к хостам из стека 1 , который больше не существует:
2019-04-02 17:37:27,960 [myid:2557] - WARN [QuorumPeer[myid=2557]
(plain=/0:0:0:0:0:0:0:0:2181)(secure=disabled):QuorumCnxManager@660] -
Cannot open channel to 2336 at election address /XX.XX.XX.11:3888
java.net.NoRouteToHostException: No route to host (Host unreachable)
IP " XX.XX.XX.11"здесь находится хост 1.1 из стека 1. Еще одно сообщение об ошибке отображается прямо под первым:
2019-04-02 17:37:32,968 [myid:2557] - WARN [QuorumPeer[myid=2557]
(plain=/0:0:0:0:0:0:0:0:2181)(secure=disabled):QuorumCnxManager@660] -
Cannot open channel to 1270 at election address /XX.XX.XX.12:3888
java.net.SocketTimeoutException: connect timed out
IP-адрес" XX.XX.XX.12"здесьхост 1.2 из стека 1.
Надо сказать, что это происходит не каждый раз.Иногда все работает без проблем.Как я уже упоминал выше, проблемы возникают 2 раза с 3.
Типичный файл конфигурации до , пытающийся переключить хост 3.1 на " участник ".как это (" zoo.cfg.dynamic. [версия] ":
server.2584=XX.XX.XX.21:2888:3888:participant;0.0.0.0:2181
server.2601=XX.XX.XX.22:2888:3888:participant;0.0.0.0:2181
server.2828=XX.XX.XX.23:2888:3888:participant;0.0.0.0:2181
server.2844=XX.XX.XX.31:2888:3888:observer;0.0.0.0:2181
21, 22, 23 из стека 2, тогда как 31 из стека 3, который не могбыть преобразованным в " участник ".
Пожалуйста, помогите. Ваши советы приветствуются.