2014-11-04 3 views
3

Я пытаюсь настроить ансамбль из 3 узлов, следующих за documentation. Все они находятся на Linux Ubuntu. по всему файлу конфигурации три узла выглядит следующим образом:Zookeeper ансамбль не подходит

zoo.cfg под $ ZOOKEEPER_HOME/конф

tickTime=2000 
dataDir=/home/zkuser/zookeeper_data 
clientPort=2181 
initLimit=5 
syncLimit=2 
server.1=ip.of.zk1:2888:3888 
server.2=ip.of.zk2:2888:3888 
server.3=ip.of.zk3:2888:3888 

Я также размещены соответствующие «myid» файлы в каталоге /home/zkuser/zookeeper_data/. Эти файлы myid содержат 1, который находится на узле (ip.of.zk1), и так далее и т. Д.

Когда я запускаю сервер zk с помощью запуска bin/zkServer.sh без отображения каких-либо исключений на консоли. Однако, когда я открываю файлы zookeeper.out в каталоге bin, я вижу следующие ошибки.

2014-11-04 00:23:49,120 [myid:3] - WARN [WorkerSender[myid=3]:[email protected]] - Cannot open channel to 1 at election address /ip.of.zk1:3888 
java.net.NoRouteToHostException: No route to host 
    at java.net.PlainSocketImpl.socketConnect(Native Method) 
    at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:327) 
    at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:193) 
    at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:180) 
    at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:385) 
    at java.net.Socket.connect(Socket.java:546) 
    at org.apache.zookeeper.server.quorum.QuorumCnxManager.connectOne(QuorumCnxManager.java:368) 
    at org.apache.zookeeper.server.quorum.QuorumCnxManager.toSend(QuorumCnxManager.java:341) 
    at org.apache.zookeeper.server.quorum.FastLeaderElection$Messenger$WorkerSender.process(FastLeaderElection.java:449) 
    at org.apache.zookeeper.server.quorum.FastLeaderElection$Messenger$WorkerSender.run(FastLeaderElection.java:430) 
    at java.lang.Thread.run(Thread.java:701) 
2014-11-04 00:23:49,123 [myid:3] - WARN [WorkerSender[myid=3]:[email protected]] - Cannot open channel to 2 at election address /ip.of.zk2:3888 
java.net.ConnectException: Connection refused 
    at java.net.PlainSocketImpl.socketConnect(Native Method) 
    at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:327) 
    at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:193) 
    at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:180) 
    at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:385) 
    at java.net.Socket.connect(Socket.java:546) 
    at org.apache.zookeeper.server.quorum.QuorumCnxManager.connectOne(QuorumCnxManager.java:368) 
    at org.apache.zookeeper.server.quorum.QuorumCnxManager.toSend(QuorumCnxManager.java:341) 
    at org.apache.zookeeper.server.quorum.FastLeaderElection$Messenger$WorkerSender.process(FastLeaderElection.java:449) 
    at org.apache.zookeeper.server.quorum.FastLeaderElection$Messenger$WorkerSender.run(FastLeaderElection.java:430) 
    at java.lang.Thread.run(Thread.java:701) 

Примечание: Я открыл соответствующие порты с помощью IPTables на каждой машины. Например: цепи ВХОД (политика ACCEPT)

target  prot opt source    destination   
ACCEPT  all -- IP.of.ZK1  anywhere    
ACCEPT  all -- IP.of.ZK2  anywhere    
ACCEPT  all -- IP.of.ZK3  anywhere    

Chain FORWARD (policy ACCEPT) 
target  prot opt source    destination   

Chain OUTPUT (policy ACCEPT) 
target  prot opt source    destination  

Может кто-нибудь пожалуйста, скажите мне, что я не хватает?

С уважением, JE

+0

Как вы решить эту проблему? Я также сталкиваюсь с такой же проблемой. – ferhan

ответ

2

Убедитесь, что:

  • вы запустили сервер Zookeeper на всех 3 серверах
  • все серверы работают в режиме без ошибок, запустив echo ruok | netcat ip.of.zk2 2181. Если нормально, сервер должен ответить imok (FYI, вот list of all supported 4-letter commands)
  • /home/zkuser/zookeeper_data/myid содержит значения 1/2/3 для каждого сервера, соответственно
  • вы можете свистеть другие 2 сервера с первого сервера

Если интересно, я создал бранный + доступный скрипт для создания виртуального кластера Zookeeper с тремя узлами, см. https://github.com/mkrcah/virtual-zookeeper-cluster

3

У меня была аналогичная проблема. У меня есть некоторые намеки на то, что проблема может быть от here и here. В моем случае, вывод команды netstat -plutn показывал что-то в том числе 127.0.0.1:3888 для избирательного порта 3888. Я решил проблему, изменив часть zoo.cfg на сервере п, от чего-то вроде

server.1=name.of.s1:2888.3888 
... 
server.n=localhost:2888:3888 
... 

в

server.1=name.of.s1:2888.3888 
... 
server.n=0.0.0.0:2888:3888 
... 

После перезапуска Zookeeper, выход netstat -plutn включает в себя :::3888.

Видимо, это необходимо для Zookeeper, чтобы правильно выставить избирательный порт, в данном случае 3888.