デッド・ノードまたはデッド・シード・ノードの置き換え

ハードウェアの故障など、何らかの原因でデッド状態となったノードを置き換える手順。

ハードウェアの故障など、何らかの原因でデッド状態となったノードを置き換える手順。

デッド・ノードの交換手順は、vnodeと単一トークン・ノードと同じです。デッド・シード・ノードの交換には、いくつかの追加ステップが必要です。

警告: クラスターに新しいノードのみを追加します。新しいノードとは、DataStax Enterpriseによってこれまで起動されていないシステムのことです。新しいノードでは絶対に、データ・ディレクトリー、saved_caches、commitlog、およびhintsに以前のデータを含めてはいけません。これまでテストに使用されたノードや別のクラスターから削除されたノードを追加すると、古いデータがクラスターにマージされ、重大な問題の原因になる場合があります。

手順

  1. nodetool statusを実行して、ノードがデッドであることを確認します(DN)。

  2. データ・センター、アドレス、デッド・ノードのラックの設定を記録します。後ほど、使用します。
  3. 交換ノードをネットワークに追加して、そのIPアドレスを記録します。
  4. デッド・ノードがシード・ノードであった場合、各ノードのクラスターのシード・ノード構成を変更します。
    1. 各ノードのcassandra.yamlファイルで、seed-providerプロパティ内の- seedsリストからデッド・ノードのIPアドレスを削除します。
    2. デッド・ノードを交換する上でクラスターが新しいシード・ノードを必要としている場合、新しいノードのIPアドレスを- seedsリストに追加します。
      重要: 保守タスクが増え、ゴシップのパフォーマンスが低下するため、すべてのノードをシード・ノードにすることは推奨しません。ゴシップの最適化は重要ではありませんが、シード・リストを小さくすることを推奨します(データ・センターあたり約3つのノード)。
    3. ノードを再起動します。
  5. 既存のノードで、新しいノードの設定情報をcassandra.yamlファイルから収集します。
    • cluster_name
    • endpoint_snitch
    • デフォルトでないその他の設定。 差分ツールを使用して、現在の設定とデフォルト設定を比較します。
  6. ラックおよびデータ・センター情報を収集します。
  7. 新しいノードがすべての前提条件を満たしていることを確認してから、新しいノードにDataStax Enterpriseをインストールしますが、DataStax Enterpriseを起動しないでください。
    注: クラスターの他のノードにインストールされているバージョンと同じバージョンのDataStax Enterpriseがインストールされていることを確認してください。最新バージョンを使用していない場合、DataStax Enterprise 5.1.xパッチ・リリースのインストールを参照してください。
  8. DataStax Enterpriseがノードで自動的に起動した場合、始動時に自動的に追加されたデータを停止し、消去します。
  9. 前もって収集した情報から、cassandara.yamlファイル内の以下のプロパティに値を追加します。
    • auto_bootstrap:この設定が存在し、falseに設定されている場合、trueに設定します。(この設定は、デフォルトのcassandra.yaml構成ファイルには含まれていません。)
    • cluster_name
    • シード・リスト
  10. ラックとデータ・センター構成を追加します。
    • クラスターが、GossipingPropertyFileSnitchEc2SnitchEc2MultiRegionSnitchまたはGoogleCloudSnitchを使用している場合:
      1. 交換ノードのcassandra-rackdc.propertiesファイルに、デッド・ノードのラックとデータ・センターの割り当てを追加します。
        注: また、デッド・ノードのIPアドレスのエントリーを削除しないでください。
      2. cassandra-topology.propertiesファイルを削除します。
    • クラスターがPropertyFileSnitchを使用している場合:
      1. 既存のノードから、cassandra-topology.propertiesファイルをコピーするか、設定をローカル・コピーに追加します。
      2. 新しいノードのIPアドレスとデッド・ノードのラックとデータ・センター割り当てを使用して、追加するエントリーを編集します。
  11. replace_addressオプションを使用して新しいノードを開始し、デッド・ノードのIPアドレスに渡します。
    パッケージおよびInstaller-Servicesのインストール:
    1. 以下のオプションをcassandra-env.shファイルに追加します。
      JVM_OPTS="$JVM_OPTS -Dcassandra.replace_address=address_of_dead_node
    2. ノードを起動します
    3. ノード・ブートストラップ後、replace-addressパラメーターをcassandra-env.shから削除します。
    4. ノードを再起動します

    tarボールおよびInstaller-No Servicesのインストール:

    • このオプションを使用して、installation_locationからDataStax Enterpriseを起動します。
      $ sudo bin/dse cassandra -Dcassandra.replace_address=address_of_dead_node
  12. nodetool statusを実行して、新しいノードが正常にブートストラップされていることを確認します。
    tarボールおよびInstaller-No Servicesのパス:
    installation_location/resources/cassandra/bin
  13. 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