クラスターへの単一トークン・ノードの追加

仮想ノードを使用するクラスターではなく、単一トークン・アーキテクチャーのクラスターにノードを追加するための手順。

仮想ノードを使用するクラスターではなく、単一トークン・アーキテクチャーのクラスターにノードを追加するための手順。

クラスターにキャパシティを追加するには、段階的またはデータ全体への追加によって新しいノードを導入します。以下のいずれかの方法を使用します。
  • クラスター・サイズを2倍にしてキャパシティを追加するノードの数を2倍(または、3倍、4倍)にしてキャパシティを追加すると、トークンを割り当てる場合より複雑さが軽減されます。この方法を使用することで、既存のノードは既存のトークンの割り当てを維持でき、新しいノードは既存のトークンの範囲を2等分(または3等分)にするトークンが割り当てられます。
  • 均一ではないノードでキャパシティを追加するこの方法を使用してキャパシティを増加する場合、クラスタ全体でトークンを再計算してから、新しいトークンを既存のノードに割り当てる必要があります。
警告: クラスターに新しいノードのみを追加します。新しいノードとは、DataStax Enterpriseによってこれまで起動されていないシステムのことです。新しいノードでは絶対に、データ・ディレクトリー、saved_caches、commitlog、およびhintsに以前のデータを含めてはいけません。これまでテストに使用されたノードや別のクラスターから削除されたノードを追加すると、古いデータがクラスターにマージされ、重大な問題の原因になる場合があります。

DataStax Enterpriseクラスターの場合、OpsCenterを使用してクラスターのバランス調整を行うことができます。

手順

  1. トークン生成ツールを使用する拡張ストラテジに基づいてノードのトークンを計算します。
  2. DataStax Enterpriseをインストールして、新しいノードごとにDataStax Enterpriseを構成します。
  3. DataStax Enterpriseが自動的に起動した場合は、ノードを停止してデータを消去します。
  4. 新しいノードごとにcassandra.yamlを構成します。
    • auto_bootstrapfalseの場合は、trueに設定します。

      このオプションは、デフォルトのcassandra.yaml構成ファイルには記述されておらず、デフォルトでtrueになります。

    • cluster_name
    • listen_address/broadcast_address:通常、空欄のままです。そうでなければ、他のノードが新しいノードに接続するために使用するIPアドレスまたはホスト名を使用します。
    • endpoint_snitch
    • initial_token:トークンの計算に応じて設定します。
      注意: このプロパティに値が存在しない場合は、データベースによってランダムなトークンの範囲にノードが割り当てられ、ひどくバランスが崩れたリングが生成されます。
    • seed_provider:新しいノードが既存のクラスター内の少なくとも1つのシード・ノードのリストにあることを確認してください。

      シード・ノードは、ブートストラップを行えません。新しいノードが-seedsリストにないことを確認してください。すべてのノードをシード・ノードにしないでください。ノード間のコミュニケーション(ゴシップ)」を参照してください。

    • 既存のノードに合わせて、新しいノードのデフォルトでないその他の任意の設定を変更します。diffコマンドを使用して、ノード間の違いを見つけて出力します。
  5. スニッチに応じて、cassandra-topology.propertiesまたはcassandra-rackdc.propertiesで、ノードごとにデータ・センターとラックの名前を割り当てます。
  6. cassandra.consistent.rangemovementがオフの状態で、2分の間隔で新しいノードごとにDataStax Enterpriseを起動します。
    dse cassandra -Dcassandra.consistent.rangemovement=false

以下の操作は、リソース集約的であるため、使用量が少ない時間帯に行ってください。

  1. 新しいノードを完全にブートストラップしたら、nodetool moveを使用して、ノードごとに、新しいノードが必要な各ノードに新しいinitial_token値を割り当てます。
  2. すべてのノードに新しいトークンが割り当てられたら、クラスター内のノードごとにnodetool cleanupを実行し、各ノードでクリーンアップが完了するまで待ってから、次のノードに進んでください。

    この手順により、すでに存在するノードに属さなくなったキーが削除されます。

    cassandra-rackdc.propertiesファイルの場所は、インストールのタイプによって異なります。

    パッケージ・インストールInstaller-Servicesインストール

    /etc/dse/cassandra/cassandra-rackdc.properties

    tarボール・インストールInstaller-No Servicesインストール

    installation_location/resources/cassandra/conf/cassandra-rackdc.properties
    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