Zookeeperクライアントのタイムアウト - デフォルトの30000ミリ秒が適用されます

トピック作成者:ks-solruserml-bot (2024/06/17 19:08 投稿)
11
CloseClose

(The bot translated the original post https://lists.apache.org/thread/l0mlz3c85lv6zzyhrjwgdws4ox2nlt0f into Japanese and reposted it under Apache License 2.0. The copyright of posted content is held by the original poster.)

こんにちは皆さん、

Zookeeperの障害を処理する必要があるため、Zookeeperエンサンブルを監視しています。もしZookeeperの大多数が故障した場合、データベース検索を指すようにHA(高可用性)をアクティブにします。

各Zookeeperが稼働しているかどうかを確認するために、以下のように接続しています。

zkClient = solrZkClient(zkaddress, 10000)
return zkclient.getSolrZookeeper().getState(), isAlive

しかし、指定した10,000ミリ秒ではなく、デフォルトの30,000ミリ秒のタイムアウトが適用されることに気付きました。

Zookeeperのタイムアウトを上書きする方法はありますか?3つのZookeeperがすべてダウンしている場合、それぞれのステータスを取得するのに30秒ずつ待つ必要があります。

この問題を処理したことがある方がいれば、アドバイスをお願いします。ありがとうございます!

ありがとうございます、
Reej

返信投稿者:ks-solruserml-bot (2024/06/17 19:09 投稿)

あなたのアプローチが理解できません --

Solrのヘルスチェックには、pingエンドポイントか、低タイムアウトの非常に速いクエリ(q=*:*&timeAllowed=100&rows=0)を使用するのが良いと思います。

記憶が正しければ、Zookeeperのヘルスチェック(Solrから見た)は、CLUSTERSTATUS管理APIコマンドにあります。それがCLUSTERSTATUSでない場合もその近くにあるはずです。

Zookeeper自体とやり取りするには、直接zkクライアントを使用するのが良いと思います。

返信投稿者:ks-solruserml-bot (2024/06/17 19:09 投稿)

シナリオは、Solrサーバーは稼働していますが、Zookeeperの大多数がダウンしている場合です。そのため、Zookeeperの問題であることを知る必要があります。タイムアウトが30秒後に発生するまで待つことなく、Zookeeperの状態をどのように特定するかについて方法が見つかりません。

--
ありがとうございます、
Reej

返信投稿者:ks-solruserml-bot (2024/06/17 19:09 投稿)

これをチェックしてください:

curl 'localhost:8983/solr/admin/zookeeper/status'
返信投稿者:ks-solruserml-bot (2024/06/17 19:09 投稿)

問題は、SolrZkClientが接続タイムアウトを指定しないコンストラクタで作成されていることです。そのタイムアウトはデフォルトで30秒に設定されています。クライアントタイムアウトと接続タイムアウトの両方を指定して作成する必要があります。Zookeeperがダウンしている場合、接続できないため、クライアントタイムアウトではなく接続タイムアウトが適用されます。

ありがとうございます、
Shawn

返信投稿者:ks-solruserml-bot (2024/06/17 19:09 投稿)

ありがとうございます、Matthewさん、理解が深まりました。
Shawnさんのzk接続タイムアウトを渡す方法か、こちらの方法でうまくいくと思います。

ありがとうございます、
Reej

返信投稿者:ks-solruserml-bot (2024/06/17 19:10 投稿)

ありがとうございます、Shawnさん。この方法を試してみて、助けになるかどうか確認します。

ありがとうございます、
Reej

返信投稿者:ks-solruserml-bot (2024/06/17 19:10 投稿)

各Zookeeperノードの状態は「ruok」コマンドで確認できます。
これは「four letter words」と呼ばれる管理コマンドの1つです。

https://zookeeper.apache.org/doc/r3.4.8/zookeeperAdmin.html#sc_zkCommands

コマンドラインからの使用方法は以下の通りです。

$ echo ruok | nc zoo-shared-1.test.search.cheggnet.com 2181
imok

wunder
Walter Underwood
wunder@wunderwood.org
http://observer.wunderwood.org/ (私のブログ)

返信投稿者:ks-solruserml-bot (2024/06/17 19:10 投稿)

あなたの要件から見ると、Zookeeperクラスターが失敗した場合にSolrの検索を無効にし、代わりにDB検索をアクティブにしたいと考えているようですが、その必要はありません。Zookeeperクラスターがダウンしている場合、Solrの検索には影響がありません。インデックス作業にのみ影響があります。私たちはすべてのZookeeperノードが数分間ダウンしている状況に直面したことがありましたが、検索には影響がありませんでした。

ありがとうございます、
Vinay

返信投稿者:ks-solruserml-bot (2024/06/17 19:10 投稿)

こんにちは、Vinayさん、

私たちはcloudsolrclientを使用してzkホストに接続していますので、zkがダウンしている場合、Solrへの接続もできません。

ありがとうございます、
Reej

返信投稿者:ks-solruserml-bot (2024/06/17 19:10 投稿)

こんにちは皆さん、

グループからのアドバイスに従い、Zookeeperの状態を取得するために/api/solr/admin/zookeeper/statusを試しました。ブラウザで試すと、1回目はステータスが0でZookeeperの詳細が表示されますが、しばらくしてから再度試すと以下のエラーが発生します。

status: 500
error: msg: "Java.net.SocketException:connection reset:
trace: java.io.UncheckedIOException :
java.net.socketexception:connection reset

このようなソケット例外が発生した場合、次にすぐに試すとステータスが正常でエラーがないことがあります。このような場合、ソケット例外を無視してもよいでしょうか。ご意見をお願いします。

また、Solrの管理UIで以下の情報が表示されていますが、これは正常ですか?zk_node_countとは何ですか?

ZK_node_count 1852
zk_approximate_data_size 7853679

ありがとうございます、
Reej

返信投稿者:ks-solruserml-bot (2024/06/17 19:11 投稿)

エラーは異常ですが、znode_countは正常です。

トピックへ返信するには、ログインが必要です。

KandaSearch

Copyright © 2006-2024 RONDHUIT Co, Ltd. All Rights Reserved.

投稿の削除

この投稿を削除します。よろしいですか?