デッド・ノードまたはデッド・シード・ノードの置き換え
ハードウェアの故障など、何らかの原因でデッド状態となったノードを置き換える手順。
デッド・ノードの交換手順は、vnodeと単一トークン・ノードと同じです。デッド・シード・ノードの交換には、いくつかの追加ステップが必要です。
警告: クラスターに新しいノードのみを追加します。新しいノードとは、DataStax Enterpriseによってこれまで起動されていないシステムのことです。新しいノードでは絶対に、データ・ディレクトリー、saved_caches、commitlog、およびhintsに以前のデータを含めてはいけません。これまでテストに使用されたノードや別のクラスターから削除されたノードを追加すると、古いデータがクラスターにマージされ、重大な問題の原因になる場合があります。
手順
-
nodetool statusを実行して、ノードがデッドであることを確認します(
DN
)。 - データ・センター、アドレス、デッド・ノードのラックの設定を記録します。後ほど、使用します。
- 交換ノードをネットワークに追加して、そのIPアドレスを記録します。
-
デッド・ノードがシード・ノードであった場合、各ノードのクラスターのシード・ノード構成を変更します。
-
既存のノードで、新しいノードの設定情報をcassandra.yamlファイルから収集します。
cluster_name
endpoint_snitch
- デフォルトでないその他の設定。 差分ツールを使用して、現在の設定とデフォルト設定を比較します。
-
ラックおよびデータ・センター情報を収集します。
- クラスターがPropertyFileSnitchを使用している場合、cassandra-topology.propertiesファイルにリストされているラックとデータの割り当てを記録するか、ファイルを新しいノードにコピーします。
- クラスターが、GossipingPropertyFileSnitch、Ec2Snitch、Ec2MultiRegionSnitchまたはGoogleCloudSnitchを使用している場合、デッド・ノードのcassandra-rackdc.propertiesファイルのラックとデータ・センターの割り当てを記録します。
-
新しいノードがすべての前提条件を満たしていることを確認してから、新しいノードにDataStax Enterpriseをインストールしますが、DataStax Enterpriseを起動しないでください。
注: クラスターの他のノードにインストールされているバージョンと同じバージョンのDataStax Enterpriseがインストールされていることを確認してください。最新バージョンを使用していない場合、DataStax Enterprise 5.1.xパッチ・リリースのインストールを参照してください。
- DataStax Enterpriseがノードで自動的に起動した場合、始動時に自動的に追加されたデータを停止し、消去します。
-
前もって収集した情報から、cassandara.yamlファイル内の以下のプロパティに値を追加します。
- auto_bootstrap:この設定が存在し、
false
に設定されている場合、true
に設定します。(この設定は、デフォルトのcassandra.yaml構成ファイルには含まれていません。) - cluster_name
- シード・リスト
- auto_bootstrap:この設定が存在し、
-
ラックとデータ・センター構成を追加します。
- クラスターが、GossipingPropertyFileSnitch、Ec2Snitch、Ec2MultiRegionSnitchまたはGoogleCloudSnitchを使用している場合:
- 交換ノードのcassandra-rackdc.propertiesファイルに、デッド・ノードのラックとデータ・センターの割り当てを追加します。注: また、デッド・ノードのIPアドレスのエントリーを削除しないでください。
- cassandra-topology.propertiesファイルを削除します。
- 交換ノードのcassandra-rackdc.propertiesファイルに、デッド・ノードのラックとデータ・センターの割り当てを追加します。
- クラスターがPropertyFileSnitchを使用している場合:
- 既存のノードから、cassandra-topology.propertiesファイルをコピーするか、設定をローカル・コピーに追加します。
- 新しいノードのIPアドレスとデッド・ノードのラックとデータ・センター割り当てを使用して、追加するエントリーを編集します。
- クラスターが、GossipingPropertyFileSnitch、Ec2Snitch、Ec2MultiRegionSnitchまたはGoogleCloudSnitchを使用している場合:
-
replace_addressオプションを使用して新しいノードを開始し、デッド・ノードのIPアドレスに渡します。
パッケージおよびInstaller-Servicesのインストール:
- 以下のオプションをcassandra-env.shファイルに追加します。
JVM_OPTS="$JVM_OPTS -Dcassandra.replace_address=address_of_dead_node
- ノードを起動します。
- ノード・ブートストラップ後、
replace-address
パラメーターをcassandra-env.shから削除します。 - ノードを再起動します。
tarボールおよびInstaller-No Servicesのインストール:
- このオプションを使用して、installation_locationからDataStax Enterpriseを起動します。
$ sudo bin/dse cassandra -Dcassandra.replace_address=address_of_dead_node
- 以下のオプションをcassandra-env.shファイルに追加します。
-
nodetool statusを実行して、新しいノードが正常にブートストラップされていることを確認します。
tarボールおよびInstaller-No Servicesのパス:
installation_location/resources/cassandra/bin
-
PropertyFileSnitchを使用する環境では、少なくとも72時間待ってから古いノードのIPアドレスを、cassandra-topology.propertiesファイルから削除します。
これにより、古いノードの情報はゴシップから削除されます。プロパティ・ファイルから削除するのが早すぎると、問題が生じる場合があります。nodetool gossipinfoを使用して、ゴシップのステータスを確認します。ノードは、LEFTステータスが消えるまでゴシップの状態となります。
注: cassandra-rackdc.propertiesファイルにはIP情報は含まれないため、GossipingPropertyFileSnitchなど、他のスニッチを使用する場合、このステップは不要です。cassandra-topology.propertiesファイルの場所は、インストールのタイプによって異なります。パッケージ・インストールInstaller-Servicesインストール
/etc/dse/cassandra/cassandra-topology.properties tarボール・インストールInstaller-No Servicesインストール
installation_location/resources/cassandra/conf/cassandra-topology.properties cassandra.yamlファイルの場所は、インストールのタイプによって異なります。パッケージ・インストールInstaller-Servicesインストール
/etc/dse/cassandra/cassandra.yaml tarボール・インストールInstaller-No Servicesインストール
installation_location/resources/cassandra/conf/cassandra.yaml cassandra-rackdc.propertiesファイルの場所は、インストールのタイプによって異なります。パッケージ・インストールInstaller-Servicesインストール
/etc/dse/cassandra/cassandra-rackdc.properties tarボール・インストールInstaller-No Servicesインストール
installation_location/resources/cassandra/conf/cassandra-rackdc.properties