クライアントが接続されている ZooKeeper アンサンブル内のサーバーをプログラムで検出する方法は?
私はApache Curator APIを使用しており、 ConnectionStateListenerを登録して接続の状態の変化をリッスンしています。接続先のサーバーがダウンした場合にクライアントが再接続したときに、クライアントが接続されているアンサンブル内のサーバーを知りたいです。
クライアントが接続されている ZooKeeper アンサンブル内のサーバーをプログラムで検出する方法は?
私はApache Curator APIを使用しており、 ConnectionStateListenerを登録して接続の状態の変化をリッスンしています。接続先のサーバーがダウンした場合にクライアントが再接続したときに、クライアントが接続されているアンサンブル内のサーバーを知りたいです。
これは、Curator によって生成されたログで確認できます。以下の出力例では、クライアントには接続可能CuratorFramework
な で 4 つの異なる ZooKeeper インスタンスが与えられています。connectionString
ログでわかるように、最初のものが選択されます。
21:13:45.384 [main] INFO org.apache.curator.framework.imps.CuratorFrameworkImpl - Starting
21:13:45.386 [main] INFO org.apache.zookeeper.ZooKeeper - Initiating client connection, connectString=127.0.0.1:2181,127.0.0.1:2182,127.0.0.1:2183,127.0.0.1:2184 sessionTimeout=60000 watcher=org.apache.curator.ConnectionState@2876f0c
21:13:45.388 [main-SendThread(127.0.0.1:2181)] INFO org.apache.zookeeper.ClientCnxn - Opening socket connection to server 127.0.0.1/127.0.0.1:2181. Will not attempt to authenticate using SASL (unknown error)
21:13:45.388 [main-SendThread(127.0.0.1:2181)] INFO org.apache.zookeeper.ClientCnxn - Socket connection established to 127.0.0.1/127.0.0.1:2181, initiating session
21:13:45.392 [main-SendThread(127.0.0.1:2181)] INFO org.apache.zookeeper.ClientCnxn - Session establishment complete on server 127.0.0.1/127.0.0.1:2181, sessionid = 0x14aac461eb70004, negotiated timeout = 40000
クライアントが接続している ZooKeeper サーバーがクラッシュした場合、クライアントが接続した新しいサーバーもログに表示されます。
21:23:03.675 [main-SendThread(127.0.0.1:2182)] INFO org.apache.zookeeper.ClientCnxn - Opening socket connection to server 127.0.0.1/127.0.0.1:2182. Will not attempt to authenticate using SASL (unknown error)
21:23:03.677 [main-SendThread(127.0.0.1:2182)] INFO org.apache.zookeeper.ClientCnxn - Socket connection established to 127.0.0.1/127.0.0.1:2182, initiating session
21:23:03.697 [main-SendThread(127.0.0.1:2182)] INFO org.apache.zookeeper.ClientCnxn - Session establishment complete on server 127.0.0.1/127.0.0.1:2182, sessionid = 0x14aac461eb70004, negotiated timeout = 40000
21:23:03.697 [main-EventThread] INFO org.apache.curator.framework.state.ConnectionStateManager - State change: RECONNECTED