Cassandra ラックのサポートを追加する

このセクションでは、Apigee Edge for Private Cloud の Cassandra をラック対応にすることで Cassandra のオペレーションをスケーリングするための一般的なガイダンスを提供します。

Cassandra リングをラック対応にすることが重要な理由については、次のリソースをご覧ください。

ラックとは

Cassandra ラックは、リング内の Cassandra ノードの論理グループです。Cassandra は、レプリカが異なる論理グループに分散されるようにラックを使用します。その結果、オペレーションは 1 つのノードだけでなく複数のノード(それぞれ別のラックにある)に送信され、より優れたフォールト トレランスと可用性が実現します。

このセクションの例では、3 つの Cassandra ラックを使用します。これは、Apigee が本番環境トポロジでサポートされているラックの数です。

Apigee Edge for Private Cloud にデフォルトでインストールされる Cassandra では、1 つの論理ラックを想定し、その論理ラック内にすべてのノードがデータセンターに配置されます。この構成はインストールと管理が簡単ですが、これらのノードのいずれかでオペレーションが失敗した場合、失敗する可能性が高くなります。

次の図は、Cassandra リングのデフォルト構成を示しています。

3 ノードの 1 ラック
(図 1) デフォルト構成: 単一ラック上のすべてのノード

より堅牢な構成では、各ノードが個別のラックに割り当てられ、各ラックのレプリカでもオペレーションが実行されます。

次の図は、3 ノードリングを示しています。この図は、オペレーションがリング全体にレプリケートされる順序(時計回り)を示し、同じラック上に 2 つのノードがないことを示しています。

3 つのラック(各ラックに 1 つのノードを含む)
(図 2) ラック対応構成: 3 つのノード(各ラックに 1 つずつ)

この構成では、オペレーションはノードに送信されますが、そのノードの他のラックにあるレプリカにも(時計回りに)送信されます。

ラック認識を追加(3 ノード)

Apigee Edge for Private Cloud のすべての本番環境のインストール トポロジには、少なくとも 3 つの Cassandra ノードがあります。このセクションでは、これを「IP1」、「IP2」、「IP3」と呼びます。デフォルトでは、これらの各ノードは同じラック(ra-1)にあります。

このセクションでは、すべてのオペレーションがリング内の別々の論理グループ内のレプリカノードに送信されるように、Cassandra ノードを別々のラックに割り当てる方法について説明します。

インストール中に Cassandra ノードを別のラックに割り当てるには:

  1. インストーラを実行する前に、Cassandra ノードにログインし、次のサイレント構成ファイルを開いて編集します。
    /opt/silent.conf

    ファイルが存在しない場合は作成し、必ず「apigee」ユーザーをオーナーにします。

  2. CASS_HOSTS プロパティを編集します。これは、次の構文を使用する IP アドレスのスペース区切りリストです(DNS またはホスト名エントリではありません)。
    CASS_HOSTS="IP_address:data_center_number,rack_number [...]"

    デフォルト値は 3 ノードの Cassandra リングで、各ノードがラック 1 とデータセンター 1 に割り当てられています。次の例をご覧ください。

    CASS_HOSTS="IP1:1,1 IP2:1,1 IP3:1,1"
  3. 次の例のように、ノード 2 がラック 2 に、ノード 3 がラック 3 に割り当てられるように、ラックの割り当てを変更します。
    CASS_HOSTS="IP1:1,1 IP2:1,2 IP3:1,3"

    ラック割り当てを変更して、Cassandra に 2 つの論理グループ(ラック)を追加で作成し、最初のノードが受信したすべてのオペレーションを受け取るレプリカを作成するように指示します。

    CASS_HOSTS 構成プロパティの使用方法については、Edge 構成ファイルのリファレンスをご覧ください。

  4. 構成ファイルに変更を保存し、次のコマンドを実行して、更新後の構成で Cassandra をインストールします。
    /opt/apigee/apigee-setup/bin/setup.sh -p c -f path/to/silent/config

    例:

    /opt/apigee/apigee-setup/bin/setup.sh -p c -f /opt/silent.conf
  5. リング内の Cassandra ノードごとに、CASS_HOSTS プロパティでノードが割り当てられている順序でこの手順を繰り返します。この場合、次の順序で Cassandra をインストールする必要があります。
    1. ノード 1(IP1)
    2. ノード 2(IP2)
    3. ノード 3(IP3)

インストール後、Cassandra の構成を確認する必要があります。

Cassandra の構成を確認する

ラック対応 Cassandra 構成をインストールした後、次の例のように nodetool status コマンドを使用して、ノードが別のラックに割り当てられていることを確認できます。

/opt/apigee/apigee-cassandra/bin/nodetool status

(このコマンドは、いずれかの Cassandra ノードで実行します)。

結果は次のようになります。[Rack] 列には、各ノードのさまざまなラック ID が表示されます。

Datacenter: dc-1
========================
Status=Up/Down
|/ State=Normal/Leaving/Joining/Moving
--  Address         Load       Tokens  Owns    Host ID                             Rack
UN  IP1   737 MB  256     ?     554d4498-e683-4a53-b0a5-e37a9731bc5c     ra-1
UN  IP2   744 MB  256     ?     cf8b7abf-5c5c-4361-9c2f-59e988d52da3     ra-2
UN  IP3   723 MB  256     ?     48e0384d-738f-4589-aa3a-08dc5bd5a736     ra-3

Cassandra で JMX 認証を有効にした場合は、ユーザー名とパスワードも nodetool に渡す必要があります。詳細については、nodetool でクラスタノードを管理するをご覧ください。

6 ノードリングをインストールする

冗長性を高めるために、Cassandra リングを 6 ノードに拡張できます。この場合、3 つのラックのそれぞれに 2 つのノードを割り当てます。この構成では、ノード 4(IP4)、ノード 5(IP5)、ノード 6(IP6)の 3 つのノードが追加で必要になります。

次の図は、オペレーションがリング全体で複製される順序(時計回り)を示しています。レプリケーション中に、隣接する 2 つのノードが同じラック上にないことを示しています。

3 つのラック(各ラックに 2 つのノードを含む)
(図 3)6 ノードの Cassandra リング: 3 つのラックそれぞれに 2 つのノード

この構成では、各ノードにさらに 2 つのレプリカ(他の 2 つのラックに 1 つずつ)があります。たとえば、ラック 1 のノード 1 がラック 2 とラック 3 にレプリカがあるとします。ノード 1 に送信されたオペレーションは、他のラックのレプリカにも時計回りの順に送信されます。

3 ノードの Cassandra リングを 6 ノードの Cassandra リングに拡張するには、サイレント構成ファイルで次のようにノードを構成します。

CASS_HOSTS="IP1:1,1 IP4:1,3 IP2:1,2 IP5:1,1 IP3:1,3 IP6:1,2"

3 ノードリングの場合と同様に、CASS_HOSTS プロパティにノードが出現する順序で Cassandra をインストールする必要があります。

  1. ノード 1(IP1)
  2. ノード 4(IP4)*
  3. ノード 2(IP2)
  4. ノード 5(IP5)
  5. ノード 3(IP3)
  6. ノード 6(IP6)

* 4 番目のノード(Cassandra のインストール順序の 2 番目のマシン)でセットアップ ユーティリティを実行する前に、サイレント構成ファイルを変更します。

12 ノードまで拡張

フォールト トレランスと可用性をさらに高めるには、リング内の Cassandra ノードの数を 6 から 12 に増やします。この構成では、さらに 6 つのノード(IP7 ~ IP12)が必要です。

次の図は、オペレーションがリング全体で複製される順序(時計回り)を示しています。レプリケーション中に、隣接する 2 つのノードが同じラック上にないことを示しています。

3 つのラック(各ラックに 4 つのノードを含む)
(図 4)12 ノードの Cassandra リング: 3 つのラックそれぞれに 4 つのノード

12 ノードリングをインストールする手順は、3 ノードリングまたは 6 ノードリングをインストールする手順と似ています。CASS_HOSTS に指定された値を設定して、指定された順序でインストーラを実行します。

12 ノードの Cassandra リングに拡張するには、サイレント構成ファイルで次のようにノードを構成します。

CASS_HOSTS="IP1:1,1 IP7:1,2 IP4:1,3 IP8:1,1 IP2:1,2 IP9:1,3 IP5:1,1 IP10:1,2 IP3:1,3 IP11:1,1 IP6:1,2 IP12:1,3"

3 ノードリングおよび 6 ノードリングの場合と同様に、構成ファイル内のノードの順序に従って、ノード上でインストーラを実行する必要があります。

  1. ノード 1(IP1)
  2. ノード 7(IP7)*
  3. ノード 4(IP4)
  4. ノード 8(IP8)
  5. ノード 2(IP2)
  6. ノード 9(IP9)
  7. ノード 5(IP5)
  8. ノード 10(IP10)
  9. ノード 3(IP3)
  10. ノード 11(IP11)
  11. ノード 6(IP6)
  12. ノード 12(IP12)

* これらの変更は、7 番目のノード(Cassandra のインストール順序で 2 番目のマシン)に Apigee Edge for Private Cloud をインストールする前に行う必要があります。