Я пытаюсь создать балансировщик нагрузки перед кластером Zookeeper 3.4.6. Когда я делаю, что кластер работает хорошо, но возникает исключение:Load Balancer с Zookeeper
WARN [NIOServerCxn.Factory: 0.0.0.0/0.0.0.0: 2181: NIOServerCnxn @ 357] - поймал конец потока исключения EndOfStreamException: Невозможно читать дополнительные данные от клиента SESSIONID 0x0, скорее всего, клиент закрыл сокет
в org.apache.zookeeper.server.NIOServerCnxn.doIO (NIOServerCnxn.java:228)
в org.apache.zookeeper.server.NIOServerCnxnFactory.run (NIOServerCnxnFactory.java:208)
at java.lang.Thread.run (Thread.java:745)
Это означает, что Zookeeper понимает Load Balancer как клиента, и это tryong, чтобы установить соединение с ним. Но Load Balancer просто пингует TCP 2181 и выходит.
Целью использования балансировки нагрузки является возможность масштабирования zookeeper без необходимости изменения конфигурации клиентов. Возможно ли это в любом случае? –
Хороший вопрос. Я не уверен. Текущая стабильная версия 3.4.x ее не поддерживает, клиентам нужна статическая строка подключения. В версии 3.5 есть новые функции реконфигурации, но не уверены, когда это будет доступно. Как я уже говорил, если вы ставите что-либо между вашими клиентами ZK и сервером, которые добавили бы эту функциональность, вы должны быть очень осторожны, чтобы не путаться с тем, как ZK ожидает, что клиентские соединения будут вести себя, например. поддерживая сердцебиение. – igorbel