Edge for Private Cloud v4.18.05
このドキュメントでは、データセンター(リージョンとも呼ばれる)を既存のデータセンターに追加する方法について説明します。
データセンターを追加する前の考慮事項
データセンターを追加する前に、OpenLDAP、ZooKeeper、Cassandra、Postgres のサーバーをデータセンター全体で構成する方法について理解しておく必要があります。また、2 つのデータセンターのノード間で必要なポートを確実に開いておく必要もあります。
- OpenLDAP
各データセンターには、レプリケーションを有効にして構成されている独自の OpenLDAP サーバーがあります。新たなデータセンターをインストールする場合は、レプリケーションを使用するように OpenLDAP を構成し、既存のデータセンターの OpenLDAP サーバーを、レプリケーションを使用するように再構成する必要があります。
- ZooKeeper
両方のデータセンターの
ZK_HOSTS
プロパティで、両方のデータセンターのすべての ZooKeeper の IP アドレスまたは DNS 名を同じ順序で指定し、任意のノードに「:observer」修飾子を付けます。:observer
修飾子が付いていないノードは「ボーター」と呼ばれます。構成内の「ボーター」の数は奇数である必要があります。次のトポロジでは、ホスト 9 上の ZooKeeper ホストがオブザーバです。
下記の構成ファイルの例では、ノード 9 に
:observer
修飾子がタグ付けされているため、ノード 1、2、3、7、8 の 5 つがボーターです。各データセンターの
ZK_CLIENT_HOSTS
プロパティで、そのデータセンター内のすべての ZooKeeper ノードについてのみ、その IP アドレスまたは DNS 名を同じ順序で指定します。 - Cassandra
すべてのデータセンターで Cassandra ノードの数が同じである必要があります。
各データセンターの
CASS_HOSTS
プロパティで、両方のデータセンターのすべての Cassandra の IP アドレス(DNS 名ではない)を指定します。データセンター 1 では、そのデータセンター内の Cassandra ノードを最初に並べます。データセンター 2 では、そのデータセンター内の Cassandra ノードを最初に並べます。データセンター内のすべての Cassandra ノードを同じ順序で並べます。すべての Cassandra ノードには「:d,r」のサフィックスが付いている必要があります。たとえば、「ip:1,1」はデータセンター 1 でラック / 可用性ゾーン 1 を表し、「ip:2,1」はデータセンター 2 でラック / 可用性ゾーン 1 を表します。
例: "192.168.124.201:1,1 192.168.124.202:1,1 192.168.124.203:1,1 192.168.124.204:2,1 192.168.124.205:2,1 192.168.124.206:2,1"
各データセンターでラック / 可用性ゾーン 1 の最初のノードはシードサーバーとして使用されます。このデプロイモデルでは、Cassandra のセットアップは次のようになります。
-
Postgres
デフォルトでは、Edge はすべての Postgres ノードをマスターノードにインストールします。ただし、複数のデータセンターがある場合は、マスター / スタンバイ レプリケーションを使用するように Postgres ノードを構成します。そうすることにより、マスターノードに障害が発生した場合にスタンバイ ノードがサーバー トラフィックを続行できます。通常、あるデータセンターでマスター Postgres サーバーを構成し、2 番目のデータセンターでスタンバイ サーバーを構成します。
既存のデータセンターが、マスター / スタンバイ モードで 2 つの Postgres ノードを実行するようにすでに構成されている場合は、この手順の一環として、既存のスタンバイ ノードを登録解除し、新しいデータセンターのスタンバイ ノードで置き換えます。
次の表は、両方のシナリオでの変更前と変更後の Postgres 構成を示しています。
変更前 変更後 dc-1 の単一マスター Postgres ノード
dc-1 のマスター Postgres ノード
dc-2 のスタンバイ Postgres ノード
dc-1 のマスター Postgres ノード
dc-1 のスタンバイ Postgres ノード
dc-1 のマスター Postgres ノード
dc-2 のスタンバイ Postgres ノード
dc-1 の登録解除された旧スタンバイ Postgres ノード
- ポートの要件
2 つのデータセンターのノード間で必要なポートを確実に開いておく必要があります。ポートについてはインストール要件をご覧ください。
既存のデータセンターの更新
データセンターを追加するには、新しいデータセンター ノードをインストールして構成するステップを実行する必要がありますが、元のデータセンターのノードを更新する必要もあります。新しいデータセンターで追加する新しい Cassandra ノードと ZooKeeper ノードは既存のデータセンターにアクセスできる必要があり、レプリケーションを使用するように OpenLDAP を再構成する必要があるため、元のデータセンターでも変更が必要です。
構成ファイルの作成
2 つのデータセンターのサイレント構成ファイルを次に示しています。この構成例では、インストール トポロジで示しているように、各データセンターに 6 つのノードがあります。dc-1 用の構成ファイルに次の設定が追加されていることがわかります。
- OpenLDAP で 2 つの OpenLDAP ノード間のレプリケーションを構成している。
- dc-2 での新しい Cassandra ノードと ZooKeeper ノードを dc-1 の構成ファイルに追加している。
# Datacenter 1 IP1=IPorDNSnameOfNode1 IP2=IPorDNSnameOfNode2 IP3=IPorDNSnameOfNode3 IP7=IPorDNSnameOfNode7 IP8=IPorDNSnameOfNode8 IP9=IPorDNSnameOfNode9 HOSTIP=$(hostname -i) MSIP=$IP1 ADMIN_EMAIL=opdk@google.com APIGEE_ADMINPW=Secret123 LICENSE_FILE=/tmp/license.txt USE_LDAP_REMOTE_HOST=n LDAP_TYPE=2 LDAP_SID=1 LDAP_PEER=$IP7 APIGEE_LDAPPW=secret MP_POD=gateway-1 REGION=dc-1 ZK_HOSTS="$IP1 $IP2 $IP3 $IP7 $IP8 $IP9:observer" 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 $IP7:2,1 $IP8:2,1 $IP9:2,1" SKIP_SMTP=n SMTPHOST=smtp.example.com SMTPUSER=smtp@example.com SMTPPASSWORD=smtppwd SMTPSSL=n SMTPPORT=25 SMTPMAILFROM="My Company <myco@company.com>" |
# Datacenter 2 IP1=IPorDNSnameOfNode1 IP2=IPorDNSnameOfNode2 IP3=IPorDNSnameOfNode3 IP7=IPorDNSnameOfNode7 IP8=IPorDNSnameOfNode8 IP9=IPorDNSnameOfNode9 HOSTIP=$(hostname -i) MSIP=$IP7 ADMIN_EMAIL=opdk@google.com APIGEE_ADMINPW=Secret123 LICENSE_FILE=/tmp/license.txt USE_LDAP_REMOTE_HOST=n LDAP_TYPE=2 LDAP_SID=2 LDAP_PEER=$IP1 APIGEE_LDAPPW=secret MP_POD=gateway-2 REGION=dc-2 ZK_HOSTS="$IP1 $IP2 $IP3 $IP7 $IP8 $IP9:observer" ZK_CLIENT_HOSTS="$IP7 $IP8 $IP9" # Must use IP addresses for CASS_HOSTS, not DNS names. CASS_HOSTS="$IP7:2,1 $IP8:2,1 $IP9:2,1 $IP1:1,1 $IP2:1,1 $IP3:1,1" SKIP_SMTP=n SMTPHOST=smtp.example.com SMTPUSER=smtp@example.com SMTPPASSWORD=smtppwd SMTPSSL=n SMTPPORT=25 SMTPMAILFROM="My Company <myco@company.com>" |
新しいデータセンターの追加
以下の手順でのデータセンターの名前は次のとおりです。
- dc-1: 既存のデータセンター
- dc-2: 新しいデータセンター
新しいデータセンターを追加するには:
- dc-1 で、dc-2 の Cassandra ノードが含まれている dc-1 の新しい構成ファイルを使用して、元の Cassandra ノードで setup.sh を再実行します。
/opt/apigee/apigee-setup/bin/setup.sh -p ds -f configFile1
- dc-1 で、Management Server で setup.sh を再実行します。
/opt/apigee/apigee-setup/bin/setup.sh -p ms -f configFile1
- dc-2 で、すべてのノードに
apigee-setup
をインストールします。詳しくは Edge apigee-setup ユーティリティのインストールをご覧ください。 - dc-2 で、該当するノードに Cassandra と ZooKeeper をインストールします。
/opt/apigee/apigee-setup/bin/setup.sh -p ds -f configFile2
- dc-2 で、すべての Cassandra ノードで dc-1 のリージョン名を指定して rebuild コマンドを実行します。
/opt/apigee/apigee-cassandra/bin/nodetool -h cassIP rebuild dc-1
- dc-2 で、該当するノードに Management Server をインストールします。
/opt/apigee/apigee-setup/bin/setup.sh -p ms -f configFile2
- dc-2 の Management Server ノードで、
apigee-provision
をインストールします。これによりapigee-adminapi.sh
ユーティリティがインストールされます。/opt/apigee/apigee-service/bin/apigee-service apigee-provision install
- dc-2 で、該当するノードに Routes と Message Processor をインストールします。
/opt/apigee/apigee-setup/bin/setup.sh -p rmp -f configFile2
- dc-2 で、該当するノードに Qpid をインストールします。
/opt/apigee/apigee-setup/bin/setup.sh -p qs -f configFile2
- dc-2 で、該当するノードに Postgres をインストールします。
/opt/apigee/apigee-setup/bin/setup.sh -p ps -f configFile2
- Postgres ノードに対して Postgres のマスター / スタンバイをセットアップします。dc-1 の Postgres ノードがマスターであり、dc-2 の Postgres ノードがスタンバイ サーバーです。
- dc-1 のマスターノードで、構成ファイルを編集して次のように設定します。
PG_MASTER=IPorDNSofDC1Master PG_STANDBY=IPorDNSofDC2Standby
- 新しいマスターでレプリケーションを有効にします。
/opt/apigee/apigee-service/bin/apigee-service apigee-postgresql setup-replication-on-master -f configFIle
- dc-2 のスタンバイ ノードで、構成ファイルを編集して次のように設定します。
PG_MASTER=IPorDNSofDC1Master PG_STANDBY=IPorDNSofDC2Standby
- dc-2 のスタンバイ ノードで、サーバーを停止してから既存のすべての Postgres データを削除します。
/opt/apigee/apigee-service/bin/apigee-service apigee-postgresql stop
rm -rf /opt/apigee/data/apigee-postgresql/
- dc-2 のスタンバイ ノードを構成します。
/opt/apigee/apigee-service/bin/apigee-service apigee-postgresql setup-replication-on-standby -f configFile
- dc-1 のマスターノードで、構成ファイルを編集して次のように設定します。
- dc-1 で、アナリティクス構成を更新し、組織を構成します。
- dc-1 の Management Server ノードで、Postgres ノードの UUID を取得します。
apigee-adminapi.sh servers list -r dc-1 -p analytics -t postgres-server \ --admin adminEmail --pwd adminPword --host localhost
返されるデータの末尾にある UUID の値を保存します。
- dc-2 の Management Server ノードで、前のステップと同様にして取得した Postgres の UUID の値を保存します。
- dc-1 の Management Server ノードで、分析グループとコンシューマ グループの名前を特定します。以下のコマンドの多くでその情報を指定する必要があります。
デフォルトでは、分析グループの名前は「axgroup-001」であり、コンシューマ グループの名前は「consumer-group-001」です。リージョンのサイレント構成ファイルでは、
AXGROUP
プロパティを使用して分析グループの名前を設定できます。分析グループやコンシューマ グループの名前がわからない場合は、次のコマンドを使用して表示します。
apigee-adminapi.sh analytics groups list \ --admin adminEmail --pwd adminPword --host localhost
このコマンドでは、[name] 項目に分析グループ名が返され、[consumer-groups] 項目にコンシューマ グループ名が返されます。
- dc-1 の Management Server ノードで、既存の Postgres サーバーを分析グループから削除します。
- Postgres ノードをコンシューマ グループから削除します。
apigee-adminapi.sh analytics groups consumer_groups datastores remove \ -g axgroup-001 -c consumer-group-001 -u UUID \ -Y --admin adminEmail --pwd adminPword --host localhost
dc-1 がマスター / スタンバイ モードで 2 つの Postgres ノードを実行するように構成されている場合は、両方とも削除します。
apigee-adminapi.sh analytics groups consumer_groups datastores remove \ -g axgroup-001 -c consumer-group-001 -u "UUID_1,UUID_2" \ -Y --admin adminEmail --pwd adminPword --host localhost
- Postgres ノードを分析グループから削除します。
apigee-adminapi.sh analytics groups postgres_server remove \ -g axgroup-001 -u UUID -Y --admin adminEmail \ --pwd adminPword --host localhost
dc-1 がマスター / スタンバイ モードで 2 つの Postgres ノードを実行するように構成されている場合は、両方とも削除します。
apigee-adminapi.sh analytics groups postgres_server \ remove -g axgroup-001 -u UUID1,UUID2 -Y --admin adminEmail \ --pwd adminPword --host localhost
- Postgres ノードをコンシューマ グループから削除します。
- dc-1 の Management Server ノードで、新しいマスター / スタンバイ Postgres サーバーを分析グループに追加します。
- 両方の Postgres を分析グループに追加します。
apigee-adminapi.sh analytics groups postgres_server \ add -g axgroup-001 -u "UUID_1,UUID_2" --admin adminEmail \ --pwd adminPword --host localhost
ここで、UUID_1 は dc-1 のマスター Postgres ノードに該当し、UUID_2 は dc-2 のスタンバイ Postgres ノードに該当します。
- PG サーバーをマスター / スタンバイとしてコンシューマ グループに追加します。
apigee-adminapi.sh analytics groups consumer_groups datastores \ add -g axgroup-001 -c consumer-group-001 -u "UUID_1,UUID_2" --admin adminEmail \ --pwd adminPword --host localhost
- 両方の Postgres を分析グループに追加します。
- dc-2 の Qpid サーバーを分析グループに追加します。
- dc-1 の Management Server ノードで、dc-2 の Qpid ノードの UUID を取得します。
apigee-adminapi.sh servers list -r dc-2 -p central -t qpid-server \ --admin adminEmail --pwd adminPword --host localhost
返されるデータの末尾にある UUID の値を保存します。
- dc-1 の Management Server ノードで、その Qpid ノードを分析グループに追加します。
apigee-adminapi.sh analytics groups qpid_server \ add -g axgroup-001 -u "UUID_1 UUID_2" --admin adminEmail \ --pwd adminPword --host localhost
- dc-1 の Management Server ノードで、Qpid ノードをコンシューマ グループに追加します。
apigee-adminapi.sh analytics groups consumer_groups consumers \ add -g axgroup-001 -c consumer-group-001 -u "UUID_1,UUID_2" \ --admin adminEmail --pwd adminPword --host localhost
- dc-1 の Management Server ノードで、dc-2 の Qpid ノードの UUID を取得します。
- dc-1 で、以前の Postgres スタンバイ サーバーを登録解除して削除します。
- dc-1 の既存の Postgres スタンバイ サーバーを登録解除します。
apigee-adminapi.sh servers deregister -u UUID -r dc-1 \ -p analytics -t postgres-server -Y --admin adminEmail \ --pwd adminPword --host localhost
ここで、UUID は dc-1 の以前のスタンバイ Postgres ノードの UUID です。
- dc-1 の既存の Postgres スタンバイ サーバーを削除します。
apigee-adminapi.sh servers delete -u UUID \ --admin adminEmail --pwd adminPword --host localhost
- dc-1 の既存の Postgres スタンバイ サーバーを登録解除します。
- dc-1 の Management Server ノードで、Postgres ノードの UUID を取得します。
- 2 つのデータセンターに適切なレプリケーション係数を使用して Cassandra キースペースを更新します。このステップは、いずれかのデータセンターの任意の Cassandra サーバーで 1 度だけ実行する必要があります。
- Cassandra の
cqlsh
ユーティリティを開始します。/opt/apigee/apigee-cassandra/bin/cqlsh cassandraIP
- 「cqlsh>」プロンプトで以下の CQL コマンドを実行して、Cassandra キースペースのレプリケーション レベルを設定します。
ALTER KEYSPACE "identityzone" WITH replication = { 'class': 'NetworkTopologyStrategy', 'dc-1': '3','dc-2': '3' };
ALTER KEYSPACE "system_traces" WITH replication = { 'class': 'NetworkTopologyStrategy', 'dc-1': '3','dc-2': '3' };
- 次のコマンドを使用してキースペースを表示します。
select * from system.schema_keyspaces;
cqlsh
を終了します。exit
- Cassandra の
- dc-1 のすべての Cassandra ノードで次の
nodetool
コマンドを使用して、メモリを解放します。/opt/apigee/apigee-cassandra/bin/nodetool -h cassandraIP cleanup
- データセンター全体でサポートする各組織と各環境に対して、以下の操作を行います。
- dc-1 の Management Server ノードで、新しい MP_POD を組織に追加します。
apigee-adminapi.sh orgs pods add -o orgName -r dc-2 -p gateway-2 \ --admin adminEmail --pwd adminPword --host localhost
ここで、gateway-2 は、dc-2 の構成ファイルの MP_POD プロパティで定義されているゲートウェイ ポッドの名前です。
- 新しい Message Processor を組織と環境に追加します。
- dc-2 の Management Server ノードで、dc-2 の Message Processor ノードの UUID を取得します。
apigee-adminapi.sh servers list -r dc-2 -p gateway-2 \ -t message-processor --admin adminEmail --pwd adminPword --host localhost
返されるデータの末尾にある UUID の値を保存します。
- dc-1 の Management Server ノードで、dc-2 の各 Message Processor ノードを組織の 1 つの環境に追加します。
apigee-adminapi.sh orgs envs servers add -o orgName -e envName \ -u UUID --admin adminEmail --pwd adminPword --host localhost
- dc-2 の Management Server ノードで、dc-2 の Message Processor ノードの UUID を取得します。
- dc-1 の Management Server ノードで、その組織を確認します。
apigee-adminapi.sh orgs apis deployments -o orgName -a apiProxyName \ --admin adminEmail --pwd adminPword --host localhost
ここで、apiProxyName は、組織にデプロイされている API プロキシの名前です。
- dc-1 の Management Server ノードで、新しい MP_POD を組織に追加します。