2

クラスターのシードとしてセットアップされた Cassandra 1.0.9 サーバーが 1 台あります。そこには最大34GBのデータがあります。2 番目の Cassandra 1.0.9 をリングに参加させ、最初のセットアップをシードとして設定しようとしています。

/var/lib/cassandra/log/cassandra.log に次のように表示されます。

INFO 20:06:52,809 JOINING: waiting for schema information to complete
INFO 20:07:22,815 JOINING: waiting for schema information to complete
INFO 20:07:52,817 JOINING: waiting for schema information to complete
.
.
.
INFO 20:10:22,839 JOINING: waiting for schema information to complete
INFO 20:10:52,841 JOINING: waiting for schema information to complete
INFO 20:11:22,847 JOINING: waiting for schema information to complete

/var/log/cassandra/system ログに次のように表示されます。

INFO [main] 2012-09-11 20:19:52,913 StorageService.java (line 668) JOINING: waiting for schema information to complete
INFO [main] 2012-09-11 20:20:22,919 StorageService.java (line 668) JOINING: waiting for schema information to complete
INFO [main] 2012-09-11 20:20:52,921 StorageService.java (line 668) JOINING: waiting for schema information to complete
.
.
.
INFO [main] 2012-09-11 20:23:22,943 StorageService.java (line 668) JOINING: waiting for schema information to complete
INFO [main] 2012-09-11 20:23:52,945 StorageService.java (line 668) JOINING: waiting for schema information to complete
INFO [main] 2012-09-11 20:24:22,951 StorageService.java (line 668) JOINING: waiting for schema information to complete

netstats を実行すると、次のようになります。

Mode: JOINING
Not sending any streams.
Not receiving any streams.
Pool Name                    Active   Pending      Completed
Commands                        n/a         0              5
Responses                       n/a         0          51966

これにかかる時間について何か考えはありますか?

4

2 に答える 2

3

次の手順でこれを解決したようです。

  1. 新しいサーバーの/var/ lib / cassandra / dataディレクトリ(およびサブディレクトリ)を削除します
  2. シードサーバー上の/var/ lib / cassandra / data / system /Schema*ファイルを削除します
  3. シードサーバー上の/var/ lib / cassandra / data / system /Migration*ファイルを削除します
  4. cassandra-cliのシードサーバーでスキーマを再作成します
  5. 新しいサーバーでCassandraを起動します

これで、新しいサーバーがまだ参加しているにもかかわらず、リングに表示されます(以前の参加試行ではリングに表示されませんでした)。「describecluster;」を実行するとわかるように、シードサーバーと新しいサーバーの両方が同じスキーマ上にあります。cassandra-cliで。

これが将来誰か他の人に役立つことを願っています。

于 2012-09-14T17:42:22.497 に答える
0

リング情報の受信には数秒しかかかりません。

問題を特定する最善の方法は、両方のホストの log4j-server.properties でデバッグ ログをオンにすることです。

私の推測では、ホストの 1 つがストレージ ポート (7000 または 7001) で他のホストに接続できないということです。これにはさまざまな理由が考えられます: ホスト名の設定ミス、ファイアウォール、SSL の設定ミスなど。

nodetool -h <hostname> ring

コマンドを実行してから試してください

telnet <hostname> 7000

各ホストから他のホストへ。nodetool の出力からのホスト名を使用していることを確認してください。

両方の接続が正常に機能する場合は、デバッグ ログを有効にしてみてください。

于 2012-09-12T23:38:34.157 に答える