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

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

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

ラックとは

Cassandra ラックとは、リング内の Cassandra ノードを論理的にグループ化したものです。Cassandra はラックを使用して、レプリカを異なる論理グループの間で分散させます。その結果、オペレーションは単一のノードではなく(それぞれ異なるラックに属する)複数のノードに送信されるため、フォールト トレランスと可用性が向上します。

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

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

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

1 つのラックに 3 つのノード
(図 1)デフォルト構成: 1 つのラックにすべてのノードが配置される

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

次の図は、3 ノードのリングを示しています。この図から、オペレーションがリング全体にレプリケートされる順序(時計回り)と、各ノードがそれぞれ異なるラックに属していることがわかります。

3 つのラック、各ラックに 1 ノードずつ
(図 2)ラック対応構成: 3 つのノードが各ラックに 1 つずつ配置される

この構成では、オペレーションはある 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 をインストールする前に行う必要があります。