ノード上のゴシップ状態のパージ
ゴシップ状態の問題の修正。
ゴシップ情報は、ゴシップ通信を待つ必要なしにノード再起動後すぐに使用するために、各ノードによってローカルに保持されます。
cassandra-env.sh
cassandra-env.shファイルの場所は、インストールのタイプによって異なります。パッケージ・インストール | /etc/dse/cassandra/cassandra-env.sh |
tarボール・インストール | installation_location/resources/cassandra/conf/cassandra-env.sh |
手順
ゴシップの状態に問題が生じて、それを修正する必要が万一発生した場合は、以下のようにします。
-
nodetool assassinateを使用して、問題のあるノードをシャットダウンします。
この処理が完了するまでに、約35秒かかるため、ノードが削除されたという確認メッセージが表示されるまで待ってください。
- この方法で問題が解決しない場合は、クライアントのアプリケーションからクラスターに書き込みを送信することを停止してください。
-
クラスター全体をオフラインにします。
-
peersディレクトリーからデータを消去し、peers-UUIDディレクトリー内のすべてのディレクトリーを削除します(UUIDは適切なノードに対応する特定のディレクトリー)。
sudo rm -r /var/lib/cassandra/data/system/peers-UUID/*
注意:この手順を行う際は十分に注意してください。この操作はデータベースから内部システム・データを消去するため、安易に実行して結果を検証すると、アプリケーション障害を引き起こす場合があります。結果を検証するには、次のクエリを個別に各ノードで実行して、すべてのノードがその他のすべてのノードを表示できることを確認します。select * from system.peers;
-
ノードの起動時に、ゴシップ状態を消去します。
- tarボールまたはInstaller No-Servicesインストールの場合は、コマンドライン・オプションを使用するか、cassandra-env.shを編集します。コマンドラインを使用するには、以下のように入力します。
installation_location/bin/cassandra -Dcassandra.load_ring_state=false
- パッケージ・インストールまたはInstaller Servicesインストールの場合、または上記のコマンドライン・オプションを使用しない場合は、以下の行をcassandra-env.shファイルに追加してください。
JVM_OPTS="$JVM_OPTS -Dcassandra.load_ring_state=false"
- tarボールまたはInstaller No-Servicesインストールの場合は、コマンドライン・オプションを使用するか、cassandra-env.shを編集します。コマンドラインを使用するには、以下のように入力します。
-
クラスターを、1ノードずつシード・ノードから始めて順にオンラインにします。
「DataStax Enterpriseの起動と停止」を参照してください。
次のタスク
cassandra-env.shファイルに追加したラインを削除します。