Cassandra ノードをクラスタに追加する場合は、次の 2 つの重要なポイントを考慮する必要があります。
- ストリーミングを最小限に抑え、リングのバランスを維持するために、Cassandra リング内のノードの既存の位置は変更しないでください。
- すべてのデータセンターでノードの数が同じである必要があります。
最初の目標を達成するには、新しいノードを追加するたびに Cassandra クラスタ内のノードの数を 2 倍にすることが重要です。
たとえば、2 つのデータセンターに分散された標準の 12 ノードのクラスタ インストール トポロジから始める場合、Cassandra ノードは合計 6 つ(各データセンターに 3 つ)になります。このクラスタを拡張するには、各データセンターに 3 つのノードを追加して、ノードの合計数を 12 に増やす必要があります(各データセンターに 6 つのノード)。さらに拡張が必要な場合は、各データセンターに 6 つのノードを追加して、合計ノード数を 24 個(各データセンターに 12 個)にする必要があります。
このドキュメントでは、既存の Edge for Private Cloud インストールに 3 つの新しい Cassandra ノードを追加する手順について説明します。同じ手順でノードを追加できます。クラスタを拡張するときは、必ずノードの数を 2 倍にしてください。
Cassandra ノードのシステム要件については、インストール要件をご覧ください。
既存の Edge 構成
本番環境システムでサポートされるすべての Edge トポロジでは、3 つの Cassandra ノードを使用するよう定められています。これら 3 つのノードは、次に示すように構成ファイル内の CASS_HOSTS
プロパティで指定されます。
IP1=10.10.0.1 IP2=10.10.0.2 IP3=10.10.0.3 HOSTIP=$(hostname -i) ADMIN_EMAIL=opdk@google.com APIGEE_ADMINPW=Secret123 LICENSE_FILE=/tmp/license.txt MSIP=$IP1 USE_LDAP_REMOTE_HOST=n LDAP_TYPE=1 APIGEE_LDAPPW=secret MP_POD=gateway REGION=dc-1 ZK_HOSTS="$IP1 $IP2 $IP3" ZK_CLIENT_HOSTS="$IP1 $IP2 $IP3" # Must use IP addresses for CASS_HOSTS, not DNS names. CASS_HOSTS="$IP1:1,1 $IP2:1,1 $IP3:1,1" SKIP_SMTP=n SMTPHOST=smtp.example.com SMTPUSER=smtp@example.com SMTPPASSWORD=smtppwd
REGION
プロパティで「dc-1」というリージョン名が指定されていることに注意してください。この情報は、新しい Cassandra ノードを追加する際に必要になります。
構成ファイルを変更して 3 つの新しい Cassandra ノードを追加する
この例で追加する 3 つの Cassandra ノードの IP アドレスは次のとおりです。
- 10.10.0.14
- 10.10.0.15
- 10.10.0.16
まず、次のように Edge 構成ファイルを更新して、新しいノードを追加します。
IP1=10.10.0.1 IP2=10.10.0.2 IP3=10.10.0.3 # Add the new node IP addresses. IP14=10.10.0.14 IP15=10.10.0.15 IP16=10.10.0.16 HOSTIP=$(hostname -i) ADMIN_EMAIL=opdk@google.com ... # Update CASS_HOSTS to add each new node after an existing nodes. # Must use IP addresses for CASS_HOSTS, not DNS names. CASS_HOSTS="$IP1:1,1 $IP14:1,1 $IP2:1,1 $IP15:1,1 $IP3:1,1 $IP16:1,1"
これにより、既存ノードの初期トークンの設定が維持され、それぞれの新しいノードの初期トークン値は複数の既存ノードのトークン値の間になります。
Edge の構成
構成ファイルを編集したら、次の作業を行います。
- 既存の Cassandra ノードを再構成する
- 新しいノードに Cassandra をインストールする
- Management Server を再構成する
既存の Cassandra ノードを再構成する
既存の Cassandra ノードで次の手順を行います。
- 「-p c」プロファイルと新しい構成ファイルを指定して setup.sh を実行します。
/opt/apigee/apigee-setup/bin/setup.sh -p c -f updatedConfigFile
新しいノードに Cassandra をインストールする
次の手順で、新しいノードに Cassandra をインストールします。
新しい Cassandra ノードで次の手順を行います。
- 3 つのノードに Cassandra をインストールします。
- Edge apigee-setup ユーティリティのインストールの説明に従って、最初のノードに
apigee-setup
をインストールします。 - 更新した構成ファイルを使用して、最初のノードに Cassandra をインストールします。
/opt/apigee/apigee-setup/bin/setup.sh -p c -f updatedConfigFile
- 残りの新しい Cassandra ノードで上記の手順を繰り返します。
- Edge apigee-setup ユーティリティのインストールの説明に従って、最初のノードに
- 3 つの新しい Cassandra ノードを再ビルドします。その際、リージョン名として、ノードの追加場所となるデータセンター(
dc-1
、dc-2
など)を指定します。この例では、dc-1
です。- 最初のノードで次のコマンドを実行します。
/opt/apigee/apigee-cassandra/bin/nodetool [-u username -pw password] -h nodeIP rebuild dc-1
ここで、nodeIP は Cassandra ノードの IP アドレスです。
ユーザー名とパスワードを渡す必要があるのは、Cassandra 用に JMX 認証を有効にした場合のみです。
- 残りの新しい Cassandra ノードにもこの手順を行います。
- 最初のノードで次のコマンドを実行します。
Management Server を再構成する
Management-Server ノードで次の手順を行います。
- setup.sh を再び実行し、新たに追加した Cassandra ノードを反映するよう Management Server を更新します。
/opt/apigee/apigee-setup/bin/setup.sh -p ms -f updatedConfigFile
すべての Router と Message Processor を再起動する
- すべての Router で次のコマンドを実行します。
/opt/apigee/apigee-service/bin/apigee-service edge-router restart
- すべての Message Processor で次のコマンドを実行します。
/opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
既存の Cassandra ノードのディスク スペースを解放する
新しいノードを追加した後、既存ノードに対して nodetool cleanup
コマンドを実行してディスク スペースを解放できます。このコマンドは、既存の Cassandra ノードによって所有されなくなった構成トークンをクリアします。
新しいノードを追加した後に既存の Cassandra ノードのディスク スペースを解放するには、次のコマンドを実行します。
/opt/apigee/apigee-cassandra/bin/nodetool [-u username -pw password] -h cassandraIP cleanup
ユーザー名とパスワードを渡す必要があるのは、Cassandra で JMX 認証を有効にした場合のみです。
再ビルドを検証する
次のコマンドを使用して、再ビルドが成功したことを確認します。
nodetool [-u username -pw password] -h nodeIP netstats
このコマンドは、ネイティブ トランスポート(またはバイナリ プロトコル)が実行中かどうかを示します。実行中であれば、Cassandra は新しいクライアント リクエストを受け入れることができます。
nodetool [-u username -pw password] -h nodeIP statusbinary
このコマンドは、ネイティブ トランスポート(またはバイナリ プロトコル)が実行中かどうかを示します。
nodetool [-u username -pw password] -h nodeIP describecluster
このコマンドは、新しいノードが古いノードと同じスキーマ バージョンを使用しているかどうかを示します。
nodetool
の使用方法について詳しくは、nodetool の使用に関するドキュメントをご覧ください。