このセクションでは、Apigee Edge for Private Cloud の Cassandra をラック対応にすることで Cassandra のオペレーションをスケーリングするための一般的なガイダンスを提供します。
Cassandra リングをラック対応にすることが重要な理由については、次のリソースをご覧ください。
- レプリケーション(Cassandra のドキュメント)
- Cassandra のアーキテクチャとレプリケーション係数に関する戦略
ラックとは
Cassandra ラックは、リング内の Cassandra ノードの論理グループです。Cassandra は、レプリカが異なる論理グループに分散されるようにラックを使用します。その結果、オペレーションは 1 つのノードだけでなく複数のノード(それぞれ別のラックにある)に送信され、より優れたフォールト トレランスと可用性が実現します。
このセクションの例では、3 つの Cassandra ラックを使用します。これは、Apigee が本番環境トポロジでサポートされているラックの数です。
Apigee Edge for Private Cloud にデフォルトでインストールされる Cassandra では、1 つの論理ラックを想定し、その論理ラック内にすべてのノードがデータセンターに配置されます。この構成はインストールと管理が簡単ですが、これらのノードのいずれかでオペレーションが失敗した場合、失敗する可能性が高くなります。
次の図は、Cassandra リングのデフォルト構成を示しています。

より堅牢な構成では、各ノードが個別のラックに割り当てられ、各ラックのレプリカでもオペレーションが実行されます。
次の図は、3 ノードリングを示しています。この図は、オペレーションがリング全体にレプリケートされる順序(時計回り)を示し、同じラック上に 2 つのノードがないことを示しています。

この構成では、オペレーションはノードに送信されますが、そのノードの他のラックにあるレプリカにも(時計回りに)送信されます。
ラック認識を追加(3 ノード)
Apigee Edge for Private Cloud のすべての本番環境のインストール トポロジには、少なくとも 3 つの Cassandra ノードがあります。このセクションでは、これを「IP1」、「IP2」、「IP3」と呼びます。デフォルトでは、これらの各ノードは同じラック(ra-1)にあります。
このセクションでは、すべてのオペレーションがリング内の別々の論理グループ内のレプリカノードに送信されるように、Cassandra ノードを別々のラックに割り当てる方法について説明します。
インストール中に Cassandra ノードを別のラックに割り当てるには:
- インストーラを実行する前に、Cassandra ノードにログインし、次のサイレント構成ファイルを開いて編集します。
/opt/silent.conf
ファイルが存在しない場合は作成し、必ず「apigee」ユーザーをオーナーにします。
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"
- 次の例のように、ノード 2 がラック 2 に、ノード 3 がラック 3 に割り当てられるように、ラックの割り当てを変更します。
CASS_HOSTS="IP1:1,1 IP2:1,2 IP3:1,3"
ラック割り当てを変更して、Cassandra に 2 つの論理グループ(ラック)を追加で作成し、最初のノードが受信したすべてのオペレーションを受け取るレプリカを作成するように指示します。
CASS_HOSTS
構成プロパティの使用方法については、Edge 構成ファイルのリファレンスをご覧ください。 - 構成ファイルに変更を保存し、次のコマンドを実行して、更新後の構成で 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
- リング内の Cassandra ノードごとに、
CASS_HOSTS
プロパティでノードが割り当てられている順序でこの手順を繰り返します。この場合、次の順序で Cassandra をインストールする必要があります。- ノード 1(IP1)
- ノード 2(IP2)
- ノード 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 つのノードが同じラック上にないことを示しています。

この構成では、各ノードにさらに 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(IP1)
- ノード 4(IP4)*
- ノード 2(IP2)
- ノード 5(IP5)
- ノード 3(IP3)
- ノード 6(IP6)
* 4 番目のノード(Cassandra のインストール順序の 2 番目のマシン)でセットアップ ユーティリティを実行する前に、サイレント構成ファイルを変更します。
12 ノードまで拡張
フォールト トレランスと可用性をさらに高めるには、リング内の Cassandra ノードの数を 6 から 12 に増やします。この構成では、さらに 6 つのノード(IP7 ~ IP12)が必要です。
次の図は、オペレーションがリング全体で複製される順序(時計回り)を示しています。レプリケーション中に、隣接する 2 つのノードが同じラック上にないことを示しています。

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(IP1)
- ノード 7(IP7)*
- ノード 4(IP4)
- ノード 8(IP8)
- ノード 2(IP2)
- ノード 9(IP9)
- ノード 5(IP5)
- ノード 10(IP10)
- ノード 3(IP3)
- ノード 11(IP11)
- ノード 6(IP6)
- ノード 12(IP12)
* これらの変更は、7 番目のノード(Cassandra のインストール順序で 2 番目のマシン)に Apigee Edge for Private Cloud をインストールする前に行う必要があります。