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

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

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

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

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

jvm.options

jvm.optionsファイルの場所は、インストールのタイプによって異なります。
パッケージ・インストール /etc/dse/cassandra/jvm.options
tarボール・インストール installation_location/resources/cassandra/conf/jvm.options

cassandra.yaml

cassandra.yamlファイルの場所は、インストールのタイプによって異なります。
パッケージ・インストール /etc/dse/cassandra/cassandra.yaml
tarボール・インストール installation_location/resources/cassandra/conf/cassandra.yaml

cassandra-rackdc.properties

cassandra-rackdc.propertiesファイルの場所は、インストールのタイプによって異なります。
パッケージ・インストール /etc/dse/cassandra/cassandra-rackdc.properties
tarボール・インストール installation_location/resources/cassandra/conf/cassandra-rackdc.properties

cassandra-topology.properties

cassandra-topology.propertiesファイルの場所は、インストールのタイプによって異なります。
パッケージ・インストール /etc/dse/cassandra/cassandra-topology.properties
tarボール・インストール installation_location/resources/cassandra/conf/cassandra-topology.properties

手順

  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つのシード・ノードのリストにあることを確認してください。
      警告: シード・ノードは、bootstrapを行えません。新しいノードが-seedsリストにないことを確認してください。すべてのノードをシード・ノードにしないでください。ノード間のコミュニケーション(ゴシップ)」を参照してください。
    • 既存のノードに合わせて、新しいノードのデフォルトでないその他の任意の設定を変更します。diffコマンドを使用して、ノード間の違いを見つけて出力します。
  5. スニッチに応じて、データ・センター名およびラック名を、ノードごとにcassandra-topology.properties またはcassandra-rackdc.properties を使用して割り当てます。
  6. consistent.rangemovementがオフの状態で、2分の間隔で新しいノードごとにDataStax Enterpriseを起動します。
    • パッケージ・インストール: ブートストラップされた各ノードごとに、次のオプションを jvm.options ファイルファイルに追加し、DataStax Enterpriseを起動します。
      -Dcassandra.consistent.rangemovement=false
    • tarボール・インストール:
      bin/cassandra -Dcassandra.consistent.rangemovement=false

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

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

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