web-dev-qa-db-ja.com

Zookeeperエラー:選挙アドレスでXへのチャンネルを開けません

3つの異なるAWSサーバーにzookeeperをインストールしました。以下は、すべてのサーバーの構成です

tickTime=2000
initLimit=10
syncLimit=5
dataDir=/var/zookeeper
clientPort=2181
server.1=x.x.x.x:2888:3888
server.2=x.x.x.x:2888:3888
server.3=x.x.x.x:2888:3888

3つのインスタンスはすべて、var/zookeeperに適切なIDを持つmyidファイルを持っています。 3つのサーバーはすべて、awsコンソールからすべてのポートを開いています。しかし、zookeeperサーバーを実行すると、すべてのインスタンスで次のエラーが発生します。

2015-06-19 12:09:22,989 [myid:1] - WARN  [QuorumPeer[myid=1]/0:0:0:0:0:0:0:0:2181:QuorumCnxManager@382] 
  - Cannot open channel to 2 at election address /x.x.x.x:3888
Java.net.ConnectException: Connection refused
  at Java.net.PlainSocketImpl.socketConnect(Native Method)
  at Java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.Java:339)
  at Java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.Java:200)
  at Java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.Java:182)
  at Java.net.SocksSocketImpl.connect(SocksSocketImpl.Java:392)
  at Java.net.Socket.connect(Socket.Java:579)
  at org.Apache.zookeeper.server.quorum.QuorumCnxManager.connectOne(QuorumCnxManager.Java:368)
  at org.Apache.zookeeper.server.quorum.QuorumCnxManager.connectAll(QuorumCnxManager.Java:402)
  at org.Apache.zookeeper.server.quorum.FastLeaderElection.lookForLeader(FastLeaderElection.Java:840)
  at org.Apache.zookeeper.server.quorum.QuorumPeer.run(QuorumPeer.Java:762)
2015-06-19 12:09:23,170 [myid:1] - WARN  [QuorumPeer[myid=1]/0:0:0:0:0:0:0:0:2181:QuorumCnxManager@382]
   - Cannot open channel to 3 at election address /x.x.x.x:3888
Java.net.ConnectException: Connection refused
  at Java.net.PlainSocketImpl.socketConnect(Native Method)
  at Java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.Java:339)
  at Java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.Java:200)
  at Java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.Java:182)
  at Java.net.SocksSocketImpl.connect(SocksSocketImpl.Java:392)
  at Java.net.Socket.connect(Socket.Java:579)
  at org.Apache.zookeeper.server.quorum.QuorumCnxManager.connectOne(QuorumCnxManager.Java:368)
  at org.Apache.zookeeper.server.quorum.QuorumCnxManager.connectAll(QuorumCnxManager.Java:402)
  at org.Apache.zookeeper.server.quorum.FastLeaderElection.lookForLeader(FastLeaderElection.Java:840)
  at org.Apache.zookeeper.server.quorum.QuorumPeer.run(QuorumPeer.Java:762)
2015-06-19 12:09:23,170 [myid:1] - INFO  [QuorumPeer[myid=1]/0:0:0:0:0:0:0:0:2181:FastLeaderElection@849] - Notification time out: 25600
41
Rahul

各ノードでローカルサーバーのIPをどのように定義しましたか?パブリックIPを指定した場合、リスナーはポートに接続できませんでした。現在のノードに0.0.0.0を指定する必要があります

server.1=0.0.0.0:2888:3888
server.2=192.168.10.10:2888:3888
server.3=192.168.2.1:2888:3888

この変更は、他のノードでも実行する必要があります。

79
espeirasbora

保存の質問に出会い、解決しました。

myidがZoo.cfgの設定で保存されていることを確認してください。

そのようなコンテンツを含むconfディレクトリ内のZoo.cfgファイルを確認してください。

server.1=zookeeper1:2888:3888  
server.2=zookeeper2:2888:3888  
server.3=zookeeper3:2888:3888  

サーバーのdataDirディレクトリでmyidを確認します。例えば:

Zoo.cfgで定義されているdataDir'/home/admin/data'であるとしましょう

次に、zookeeper1では、このファイルにmyidという名前のファイルがあり、値1が必要です。zookeeper2では、このファイルにmyidという名前のファイルがあり、値2が必要です; zookeeper3では、myidという名前のファイルが必要で、このファイルには値3が必要です。

このように構成されていない場合、サーバーは間違ったip:portでリッスンします。

8
aluenkinglee

自分のホスト名が127.0.0.1に解決される場合(私の場合、ホスト名は/ etc/hostsにあります)、zookeeperはZoo.cfgファイルに0.0.0.0がなければ起動しませんが、ホスト名が実際のマシンのIP、構成ファイルに独自のホスト名を置くことができます。

4

ここに、Zoo.cfgのホスト名0.0.0.0を使用してクラスターのビルドを自動化するためのいくつかのansible jinja2テンプレート情報があります。

{% for url in zookeeper_hosts_list %}
  {%- set url_Host = url.split(':')[0] -%}
  {%- if url_Host == ansible_fqdn or url_Host in     ansible_all_ipv4_addresses -%}
server.{{loop.index0}}=0.0.0.0:2888:3888
{% else %}
server.{{loop.index0}}={{url_Host}}:2888:3888
{% endif %}
{% endfor %}
3
slackey

これは私のために働いたものです

Step 1:
Node 1:
Zoo.cfg
server.1= 0.0.0.0:<port>:<port2>
server.2= <IP>:<port>:<port2>
.
.
.
server.n= <IP>:<port>:<port2>

Node 2 :
server.1= <IP>:<port>:<port2>
server.2= 0.0.0.0:<port>:<port2>
.
.
.
server.n= <IP>:<port>:<port2>


Now in location defined by datadir on your Zoo.cfg
Node 1:
echo 1 > <datadir>/id

Node 2:
echo 2 > <datadir>/id

.
.
.


Node n:
echo n > <datadir>/id

これは、Zoo keeperを正常に起動するのに役立ちましたが、Zoo keeperを使って遊んでみれば、より詳しく知ることができます。お役に立てれば。

3
user5688074

3-Node zookeeperアンサンブルで同様の問題が発生しました。解決策は、espeeirasboraからのアドバイスに従い、再起動しました。

これが私がやったことだった

zookeeper1、zookeeper2およびzookeeper3

A。Issue ::アンサンブルのznodeを開始できませんでした

B。System SetUp :: 3台の3台のマシンに3台のZnode

C。エラー::

Zookeperログファイルで、次のエラーを確認できました。

2016-06-26 14:10:17,484 [myid:1] - WARN  [SyncThread:1:FileTxnLog@334] - fsync-ing the write ahead log in SyncThread:1 took 1340ms which will adversely effect operation latency. See the ZooKeeper troubleshooting guide
2016-06-26 14:10:17,847 [myid:1] - WARN  [RecvWorker:2:QuorumCnxManager$RecvWorker@810] - Connection broken for id 2, my id = 1, error = 
Java.io.EOFException
    at Java.io.DataInputStream.readInt(DataInputStream.Java:392)
    at org.Apache.zookeeper.server.quorum.QuorumCnxManager$RecvWorker.run(QuorumCnxManager.Java:795)
2016-06-26 14:10:17,848 [myid:1] - WARN  [RecvWorker:2:QuorumCnxManager$RecvWorker@813] - Interrupting SendWorker
2016-06-26 14:10:17,849 [myid:1] - WARN  [SendWorker:2:QuorumCnxManager$SendWorker@727] - Interrupted while waiting for message on queue
Java.lang.InterruptedException
    at Java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.reportInterruptAfterWait(AbstractQueuedSynchronizer.Java:2014)
    at Java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.Java:2088)
    at Java.util.concurrent.ArrayBlockingQueue.poll(ArrayBlockingQueue.Java:418)
    at org.Apache.zookeeper.server.quorum.QuorumCnxManager.pollSendQueue(QuorumCnxManager.Java:879)
    at org.Apache.zookeeper.server.quorum.QuorumCnxManager.access$500(QuorumCnxManager.Java:65)
    at org.Apache.zookeeper.server.quorum.QuorumCnxManager$SendWorker.run(QuorumCnxManager.Java:715)
2016-06-26 14:10:17,851 [myid:1] - WARN  [SendWorker:2:QuorumCnxManager$SendWorker@736] - Send worker leaving thread
2016-06-26 14:10:17,852 [myid:1] - WARN  [QuorumPeer[myid=1]/0:0:0:0:0:0:0:0:2181:Follower@89] - Exception when following the leader
Java.io.EOFException
    at Java.io.DataInputStream.readInt(DataInputStream.Java:392)
    at org.Apache.jute.BinaryInputArchive.readInt(BinaryInputArchive.Java:63)
    at org.Apache.zookeeper.server.quorum.QuorumPacket.deserialize(QuorumPacket.Java:83)
    at org.Apache.jute.BinaryInputArchive.readRecord(BinaryInputArchive.Java:99)
    at org.Apache.zookeeper.server.quorum.Learner.readPacket(Learner.Java:153)
    at org.Apache.zookeeper.server.quorum.Follower.followLeader(Follower.Java:85)
    at org.Apache.zookeeper.server.quorum.QuorumPeer.run(QuorumPeer.Java:846)
2016-06-26 14:10:17,854 [myid:1] - INFO  [QuorumPeer[myid=1]/0:0:0:0:0:0:0:0:2181:Follower@166] - shutdown called
Java.lang.Exception: shutdown Follower

D。アクションと解決::

各znodeでa。構成ファイル$ ZOOKEEPER_HOME/conf/Zoo.cfgを変更して、他の2つのznodeのIPアドレスを維持しながらマシンのIPを「0.0.0.0」に設定しました。 b。 znodeを再起動しましたc。 d.Voilaのステータスを確認しました。

下記参照

-------------------------------------------------

zookeeper1で

#Before modification 
[zookeeper1]$ tail -3   $ZOOKEEPER_HOME/conf/Zoo.cfg 
server.1=zookeeper1:2888:3888
server.2=zookeeper2:2888:3888
server.3=zookeeper3:2888:3888

#After  modification 
[zookeeper1]$ tail -3  $ZOOKEEPER_HOME/conf/Zoo.cfg 
server.1=0.0.0.0:2888:3888
server.2=zookeeper2:2888:3888
server.3=zookeeper3:2888:3888

#Start the Zookeper (Stop and STart or restart )
[zookeeper1]$ $ZOOKEEPER_HOME/bin/zkServer.sh  start
ZooKeeper JMX enabled by default
ZooKeeper remote JMX Port set to 52128
ZooKeeper remote JMX authenticate set to false
ZooKeeper remote JMX ssl set to false
ZooKeeper remote JMX log4j set to true
Using config: /opt/zookeeper-3.4.8/bin/../conf/Zoo.cfg
Mode: follower

[zookeeper1]$ $ZOOKEEPER_HOME/bin/zkServer.sh  status
ZooKeeper JMX enabled by default
ZooKeeper remote JMX Port set to 52128
ZooKeeper remote JMX authenticate set to false
ZooKeeper remote JMX ssl set to false
ZooKeeper remote JMX log4j set to true
Using config: /opt/zookeeper-3.4.8/bin/../conf/Zoo.cfg
Mode: follower

-------------------------------------------------- -------

zookeeper2で

#Before modification 
[zookeeper2]$ tail -3   $ZOOKEEPER_HOME/conf/Zoo.cfg 
server.1=zookeeper1:2888:3888
server.2=zookeeper2:2888:3888
server.3=zookeeper3:2888:3888

#After  modification 
[zookeeper2]$ tail -3  $ZOOKEEPER_HOME/conf/Zoo.cfg 
server.1=zookeeper1:2888:3888
server.2=0.0.0.0:2888:3888
server.3=zookeeper3:2888:3888

#Start the Zookeper (Stop and STart or restart )
[zookeeper2]$ $ZOOKEEPER_HOME/bin/zkServer.sh  start
ZooKeeper JMX enabled by default
ZooKeeper remote JMX Port set to 52128
ZooKeeper remote JMX authenticate set to false
ZooKeeper remote JMX ssl set to false
ZooKeeper remote JMX log4j set to true
Using config: /opt/zookeeper-3.4.8/bin/../conf/Zoo.cfg
Mode: follower

[zookeeper2]$ $ZOOKEEPER_HOME/bin/zkServer.sh  status
ZooKeeper JMX enabled by default
ZooKeeper remote JMX Port set to 52128
ZooKeeper remote JMX authenticate set to false
ZooKeeper remote JMX ssl set to false
ZooKeeper remote JMX log4j set to true
Using config: /opt/zookeeper-3.4.8/bin/../conf/Zoo.cfg
Mode: follower

-------------------------------------------------- -------

zookeeper3で

#Before modification 
[zookeeper3]$ tail -3   $ZOOKEEPER_HOME/conf/Zoo.cfg 
server.1=zookeeper1:2888:3888
server.2=zookeeper2:2888:3888
server.3=zookeeper3:2888:3888

#After  modification 
[zookeeper3]$ tail -3  $ZOOKEEPER_HOME/conf/Zoo.cfg 
server.1=zookeeper1:2888:3888
server.2=zookeeper2:2888:3888
server.3=0.0.0.0:2888:3888

#Start the Zookeper (Stop and STart or restart )
[zookeeper3]$ $ZOOKEEPER_HOME/bin/zkServer.sh  start
ZooKeeper JMX enabled by default
ZooKeeper remote JMX Port set to 52128
ZooKeeper remote JMX authenticate set to false
ZooKeeper remote JMX ssl set to false
ZooKeeper remote JMX log4j set to true
Using config: /opt/zookeeper-3.4.8/bin/../conf/Zoo.cfg
Mode: follower

[zookeeper3]$ $ZOOKEEPER_HOME/bin/zkServer.sh  status
ZooKeeper JMX enabled by default
ZooKeeper remote JMX Port set to 52128
ZooKeeper remote JMX authenticate set to false
ZooKeeper remote JMX ssl set to false
ZooKeeper remote JMX log4j set to true
Using config: /opt/zookeeper-3.4.8/bin/../conf/Zoo.cfg
Mode: follower
2

私たちは同じ問題に直面しました。私たちの場合、問題の根本原因は多すぎるクライアント接続数です。 aws ec2インスタンスのデフォルトのulimitは1024です。これにより、zookeeperノードは相互に通信できなくなります。

これに対する修正は、ulimitをより高い数値に変更することです->(> ulimit -n 20000)zookeeperを停止および開始します。

0
SureshKumar

同様の問題がありました。 Zoo.cfgファイルでクラスター化する必要があると示されていたにもかかわらず、3つのzookeeperノードのうち2つのステータスが「スタンドアロン」としてリストされました。 3番目のノードは、説明したエラーで起動できませんでした。私がそれを修正したのは、zkServer.sh start私の3つのノード間ですばやく連続して、ZookeeperがZoo.cfg initLimitに達する前に実行されていた。これが誰かのために働くことを願っています。

0
dyang

私の場合、問題は、3つのすべてのzookeeperサーバーを起動する必要がありました。その後、./zkCli.shを使用してzookeeperサーバーに接続できました。

0
Abdul Mohsin