このセクションでは、Apigee Edge for Private Cloud の Cassandra をラック対応にすることで、Cassandra のオペレーションをスケーリングするための一般的なガイダンスについて説明します。
Cassandra リングをラック対応にすることが重要である理由については、次のリソースをご覧ください。
- レプリケーション(Cassandra のドキュメント)
- Cassandra のアーキテクチャとレプリケーション ファクタ戦略
ラックとは
Cassandra ラックは、リング内の Cassandra ノードの論理グループです。Cassandra はラックを使用して、レプリカが異なる論理グループに分散されるようにします。その結果、オペレーションは 1 つのノードだけでなく、それぞれ別のラックにある複数のノードに送信され、フォールト トレランスと可用性が向上します。
このセクションの例では、3 つの Cassandra ラックを使用します。これは、本番環境トポロジで Apigee がサポートするラックの数です。
Apigee Edge for Private Cloud の Cassandra のデフォルト インストールでは、単一の論理ラックを想定し、データセンター内のすべてのノードをそのラックに配置します。この構成はインストールと管理が簡単ですが、いずれかのノードでオペレーションが失敗すると、障害が発生しやすくなります。
次の図は、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 [...]"
デフォルト値は、次の例に示すように、各ノードがラック 1 とデータセンター 1 に割り当てられた 3 ノードの Cassandra リングです。
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 をインストールする前に行う必要があります。