仮想ノード(vnode)の構成

仮想ノード(vnode)と、仮想ノードを異なる種類のデータ・センターで使用する方法についての説明。vnodeを無効にする手順も説明します。

仮想ノードでは、パーティション範囲(トークンの計算と割り当て)を決定する必要を排除する、ノードを追加または削除するときにクラスターのバランスを再調整する、デッド・ノードを置き換えるなど、DSEでの多くのタスクが簡略化されます。仮想ノードとその仕組みの詳細な説明については、「仮想ノード」を参照してください。

DSEでは、データ・センター内のすべてのノードで同じトークン・アーキテクチャーを使用する必要があります。ノードはすべてvnode対応アーキテクチャーであるか、またはすべて単一トークン・アーキテクチャーでなければなりません。クラスター全体でデータ・センターのアーキテクチャーは異なっても構いません。たとえば、以下のような単一のクラスターが可能です。
  • OLTPを実行するトランザクション専用のデータ・センターを1つ含む。
  • 単一トークン・アーキテクチャーの検索データ・センターを1つ含む(vnodeなし)。
  • 分析データ・センター(vnodeあり)。

cassandra.yaml

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

仮想ノードを使用する際のガイドライン

  • DSEでは、データ・センター内のすべてのノードで同じトークン・アーキテクチャーを使用する必要があります。

    ノードはすべてvnode対応アーキテクチャーであるか、またはすべて単一トークン・アーキテクチャーでなければなりません。クラスター全体でデータ・センターのアーキテクチャーは異なっても構いません。

    たとえば、以下のような単一のクラスターが可能です。
    • OLTPを実行するトランザクション専用のデータ・センターを1つ含む。
    • 単一トークン・アーキテクチャーの検索データ・センターを1つ含む(vnodeなし)。
    • 分析データ・センター(vnodeあり)。
  • DataStaxは、8つのvnode(トークン)の使用を推奨しています。
    制約事項: DataStaxでは、DSE Searchと共にvnodeを使用しないように推奨しています。ただし、DSE Searchと共にvnodeを使用することに決めた場合は、8個を超えるvnodeを使用しないようにし、allocate_tokens_for_local_replication_factorオプションが cassandra.yaml ファイルで環境に合わせて正しく構成されていることを確認してください。

    8つのvnodeを使用することにより、約10%の差異でシステム間にワークロードが分散され、パフォーマンスへの影響は最小限に抑えられます。

  • vnodeがcassandra.yaml 設定で適切に構成されていることを確認してください。
    • vnodeを既存のクラスターに追加する場合や、新しいデータ・センターでノードを設定する場合、allocate_tokens_for_local_replication_factorオプションを使用して、データ・センター内のキースペースのターゲット・レプリケーション係数(RF)に設定します。
    • 割り当てアルゴリズムにより、num_tokensの設定を使用してトークン範囲が比例して分散されます。

      システム間でシステムのパフォーマンスが異なる場合を除いて、データ・センター内のすべてのシステムのnum_token設定を同じにする必要があります。高性能のハードウェアに多くのワークロードを分散するには、それらのシステムのトークン数を増やします。

      割り当てアルゴリズムは、少ないトークンを使用して効率的にワークロードのバランスを調整します。システムがデータ・センターに追加されると、アルゴリズムはそのバランスを維持します。使用するトークン数を増やすと、ワークロードがより均等に分散されますが、トークン管理のオーバーヘッドも大幅に増加します。

      データ・センターのワークロード分散要件に基づいて、vnodeトークンの数を設定します。
      1. 割り当てアルゴリズムのワークロード分散の差異
      レプリケーション係数 4 vnode(トークン) 8 vnode(トークン) 64 vnode(トークン) 128 vnode(トークン)
      2 約17.5% 約12.5% 約3% 約1%
      3 約14% 約10% 約2% 約1%
      5 約11% 約7% 約1% 約1%
  • ノードをクラスターに一度に1つずつ追加します。
    注意: 割り当てアルゴリズムを使用して複数のノードをクラスターに追加する場合は、必ず、一度に1つずつノードを追加してください。ノードが同時に追加されると、アルゴリズムによって、同じトークンが複数のノードに割り当てられます。

vnodeの有効化

まず、 cassandra.yaml ファイルで以下の手順を実行します。

  1. num_tokensをコメント解除し、必要なトークンの数を設定します。
  2. (推奨)割り当てアルゴリズムを使用するには、allocate_tokens_for_local_replication_factorをコメント解除し、データ・センター内のキースペースのターゲット・レプリケーション係数に設定します。レプリケーションが変化した場合は、レプリケーション係数(RF)の設定を入れ替えます。
  3. initial_tokenをコメントアウトするか、設定しないままにします。

既存のクラスターをvnodeに移行するには、「既存のプロダクション・クラスターでの仮想ノードの有効化」を参照してください。

vnodeを無効にする

重要: vnodeを使用しない場合は、各ノードがほぼ同じ量のデータを負担していることを確認する必要があります。各ノードに同じ量のデータを確実に負担させるには、各ノードに初期トークン値を割り当て、「トークンの生成」の説明に従って各データ・センターのトークンを計算します。
  1. まず、 cassandra.yaml ファイルで以下の手順を実行します。
    1. num_tokensおよびallocate_tokens_for_local_replication_factorをコメント解除します。
    2. initial_tokenのコメントを解除し、1に設定するか、またはマルチノード・クラスターの場合は、生成されたトークンの値に設定します。