クラスターへのデータ・センターの追加

データ・センターを既存のクラスターに追加する手順。

データ・センターを既存のクラスターに追加する手順。

cassandra.yamlファイルの場所は、インストールのタイプによって異なります。
パッケージ・インストール /etc/cassandra/cassandra.yaml
tarボール・インストール install_location/resources/cassandra/conf/cassandra.yaml
Windowsインストール C:\Program Files\DataStax Community\apache-cassandra\conf\cassandra.yaml

手順

クラスターの他のノードにインストールされているバージョンと同じバージョンのCassandraがインストールされていることを確認してください。「以前のリリースのインストール」を参照してください。

  1. すべてのキースペースで必ずNetworkTopologyStrategyを使用します。
  2. 各ノードについて、cassandra.yamlファイル内の以下のプロパティを設定します。
    1. auto_bootstrap: falseを追加(または編集)してください。

      デフォルトでは、この設定はtrueで、cassandra.yamlファイルには記載されていません。このパラメーターをfalseに設定することにより、新しいノードがデータ・センターの他のノードのすべてのデータを取得しようとするのを防ぐことができます。最後のステップでnodetool rebuildを実行すると、各ノードは適切にマップされます。

    2. クラスターの設定に合わせるため、-seedsおよびendpoint_snitchなどの他のプロパティを設定します。

      詳細なガイダンスについては、「複数ノード・クラスター(複数データ・センター)の初期化」を参照してください。

      注: すべてのノードをシードにしないでください。「ノード間のコミュニケーション(ゴシップ)」を参照してください。
    3. vnodeを有効にするには、num_tokensを設定してください。

      推奨値は256です。initial_tokenパラメーターは設定しないでください。

  3. すべてのサーバーで使用されるスニッチの関連プロパティ・ファイルを更新し、新しいノードを含めます。再起動する必要はありません。
  4. 新しいクラスターに対してクライアントを正しく構成していることを確認します。
    • クライアントがDataStax Java、C#、またはPythonドライバーを使用する場合は、負荷バランス・ポリシーをDCAwareRoundRobinPolicyJavaC#Python)に設定してください。
    • Hectorなどの別のクライアントを使用している場合は、明示的に命令されるまではクライアントが新しいノードに問い合わせをしないよう、新しいノードが自動検出されないことを確認してください。たとえば、Hectorを使用している場合は、sethostConfig.setAutoDiscoverHosts(false);を使用します。Astyanaxを使用している場合は、ConnectionPoolConfigurationImpl.setLocalDatacenter("<データ・センター名">)を使用して、指定されたデータ・センターに接続されるようにします。
    • DataStax Java Driver 2.0と統合されたAstyanax 2.xを使用している場合は、JavaDriverConfigBuilder.withLoadBalancingPolicy()を呼び出すことにより、負荷バランス・ポリシーをDCAwareRoundRobinPolicyに設定できます。
      AstyanaxContext<Keyspace> context = new AstyanaxContext.Builder() ....withConnectionPoolConfiguration(new JavaDriverConfigBuilder() .withLoadBalancingPolicy(new TokenAwarePolicy(new DCAwareRoundRobinPolicy())) .build()) ...
  5. QUORUM整合性レベルを読み取りおよび書き込みに使用している場合は、LOCAL_QUORUMまたはEACH_QUORUMの整合性レべルを調べ、そのレベルが複数のデータ・センターの要件に適合するかどうかを確認してください。
  6. 新しいノード上でCassandraを起動します。
  7. クラスター内のすべてのノードを起動したら、以下の手順に従ってください。
    1. キースペース・プロパティを変更して、新しいデータ・センターのレプリケーション係数を指定します。

      たとえば、ストラテジ・オプションをDC1:2、DC2:2に設定します。

      詳細については、ALTER KEYSPACEを参照してください。

    2. 新しいデータ・センターのすべてのノード上で、既存のデータ・センターを指定するnodetool rebuildを実行します。
      $ nodetool rebuild -- name_of_existing_data_center

      このコマンドを実行しないと、新しいデータ・センターへ整合性レベルLOCAL_ONEまたはONEを指定して要求を発行した場合は、既存のデータ・センターが完全に同期していないと失敗する可能性があります。

      rebuildは、複数のノードで同時に実行できます。そうすべきかどうかは、クラスターが余分なI/Oとネットワーク負荷を複数のノードで処理できるかどうかによって異なります。ノードごとにrebuildを実行すると、既存のクラスターに与える影響は最小限に抑えられます。

      重要: コマンドラインに既存のデータ・センターを指定しないと、新しいノードはあたかも再構築が成功したかのように見えますが、データは含まれていません。
  8. trueに変更するか、auto_bootstrap:falsecassandra.yamlファイルから削除します。

    このパラメーターを通常の設定に戻し、再起動したときにノードがデータ・センターの他のノードからすべてのデータを取得できるようにします。