データセンターの追加

このドキュメントでは、データセンター(リージョンとも呼ばれる)を既存のデータセンターに追加する方法について説明します。

データセンターを追加する前の考慮事項

データセンターを追加する前に、OpenLDAP、ZooKeeper、Cassandra、Postgres のサーバーをデータセンター全体で構成する方法について理解しておく必要があります。また、2 つのデータセンターのノード間で必要なポートを開いておく必要もあります。

  • OpenLDAP

    各データセンターにはそれぞれ独自の OpenLDAP サーバーがあり、LDAP のレプリケーションが有効にされています。新しいデータセンターをインストールする場合は、その 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

    デフォルトでは、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 を再構成する必要があるため、元のデータセンターでも変更が必要です。

構成ファイルの作成

以下に示すサイレント構成ファイルは、インストール トポロジに示す、それぞれ 6 つのノードで構成された 2 つのデータセンターを作成する場合の例です。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: 新しいデータセンター

新しいデータセンターを追加するには:

  1. dc-1 の元の Cassandra ノードで、dc-2 の Cassandra ノードを追加した新しい dc-1 構成ファイルを使用して setup.sh を再実行します。
    /opt/apigee/apigee-setup/bin/setup.sh -p ds -f configFile1
  2. dc-1 の Management Server ノードで setup.sh を再実行します。
    /opt/apigee/apigee-setup/bin/setup.sh -p ms -f configFile1
  3. dc-2 のすべてのノードに apigee-setup をインストールします。詳細については、Edge apigee-setup ユーティリティのインストールをご覧ください。
  4. dc-2 の該当するノードに Cassandra と ZooKeeper をインストールします。
    /opt/apigee/apigee-setup/bin/setup.sh -p ds -f configFile2
  5. dc-2 のすべての Cassandra ノードで、dc-1 のリージョン名を指定して rebuild コマンドを実行します。
    /opt/apigee/apigee-cassandra/bin/nodetool [-u username -pw password] -h cassIP rebuild dc-1

    ユーザー名とパスワードを渡す必要があるのは、Cassandra に対して JMX 認証を有効にした場合のみです。

  6. dc-2 の該当するノードに Management Server をインストールします。
    /opt/apigee/apigee-setup/bin/setup.sh -p ms -f configFile2
  7. dc-2 の Management Server ノードapigee-provision をインストールします。これにより、apigee-adminapi.sh ユーティリティがインストールされます。
    /opt/apigee/apigee-service/bin/apigee-service apigee-provision install
  8. dc-2 の該当するノードに Router と Message Processor をインストールします。
    /opt/apigee/apigee-setup/bin/setup.sh -p rmp -f configFile2
  9. dc-2 の該当するノードに Qpid をインストールします。
    /opt/apigee/apigee-setup/bin/setup.sh -p qs -f configFile2
  10. dc-2 の該当するノードに Postgres をインストールします。
    /opt/apigee/apigee-setup/bin/setup.sh -p ps -f configFile2
  11. Postgres ノードに対して Postgres のマスター / スタンバイをセットアップします。dc-1 の Postgres ノードをマスターとし、dc-2 の Postgres ノードをスタンバイにします。
    1. dc-1 のマスターノードで、構成ファイルをエディタで開いて次のように設定します。
      PG_MASTER=IPorDNSofDC1Master
          PG_STANDBY=IPorDNSofDC2Standby
    2. 新しいマスターでレプリケーションを有効にします。
      /opt/apigee/apigee-service/bin/apigee-service apigee-postgresql setup-replication-on-master -f configFIle
    3. dc-2 のスタンバイ ノードで、構成ファイルをエディタで開いて次のように設定します。
      PG_MASTER=IPorDNSofDC1Master
          PG_STANDBY=IPorDNSofDC2Standby
    4. dc-2 のスタンバイ ノードで、サーバーを停止してから既存のすべての Postgres データを削除します。
      /opt/apigee/apigee-service/bin/apigee-service apigee-postgresql stop
          rm -rf /opt/apigee/data/apigee-postgresql/

      必要であれば、このデータを削除する前にバックアップしてください。

    5. dc-2 のスタンバイ ノードを構成します。
      /opt/apigee/apigee-service/bin/apigee-service apigee-postgresql setup-replication-on-standby -f configFile
  12. dc-1 で、アナリティクス構成を更新し、組織を構成します。
    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 が示されています。その値を保存します。

    2. dc-2 の Management Server ノードで、前のステップと同じ方法で PostgreSQL ノードの UUID を取得します。その値を保存します。
    3. 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 フィールドにコンシューマ グループの名前が、それぞれ示されています。

    4. dc-1 の Management Server ノードで、分析グループから既存の Postgres サーバーを削除します。
      1. コンシューマ グループから 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
      2. 分析グループから 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
    5. dc-1 の Management Server ノードで、新しいマスター / スタンバイ Postgres サーバーを分析グループに追加します。
      1. 両方の Postgres を分析グループに追加します。
        apigee-adminapi.sh analytics groups postgres_server \
              add -g axgroup-001 -u "UUID_1,UUID_2" --admin adminEmail \
              --pwd adminPword --host localhost

        ここで、UUID_1dc-1 のマスター Postgres ノードに対応し、UUID_2 は dc-2 のスタンバイ Postgres ノードに対応します。

      2. 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
    6. dc-2 の Qpid サーバーを分析グループに追加します。
      1. 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 が示されています。その値を保存します。

      2. dc-1 の Management Server ノードで、Qpid ノードを分析グループに追加します(両方のコマンドを実行します)。
        apigee-adminapi.sh analytics groups qpid_server \
              add -g axgroup-001 -u "UUID_1" --admin adminEmail \
              --pwd adminPword --host localhost
        
            apigee-adminapi.sh analytics groups qpid_server \
              add -g axgroup-001 -u "UUID_2" --admin adminEmail \
              --pwd adminPword --host localhost
      3. dc-1 の Management Server ノードで、Qpid ノードをコンシューマ グループに追加します(両方のコマンドを実行します)。
        apigee-adminapi.sh analytics groups consumer_groups consumers \
              add -g axgroup-001 -c consumer-group-001 -u "UUID_1" \
              --admin adminEmail --pwd adminPword --host localhost
        
            apigee-adminapi.sh analytics groups consumer_groups consumers \
              add -g axgroup-001 -c consumer-group-001 -u "UUID_2" \
              --admin adminEmail --pwd adminPword --host localhost
    7. dc-1 で、以前の Postgres スタンバイ サーバーを登録解除して削除します。
      1. 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 です。

      2. dc-1 の既存の Postgres スタンバイ サーバーを削除します。
        apigee-adminapi.sh servers delete -u UUID \
              --admin adminEmail --pwd adminPword --host localhost
  13. 2 つのデータセンターに適切なレプリケーション係数を使用して Cassandra キースペースを更新します。このステップは、どちらかのデータセンターの任意の Cassandra サーバーで一度だけ行います。
    1. Cassandra cqlsh ユーティリティを起動します。
      /opt/apigee/apigee-cassandra/bin/cqlsh cassandraIP
    2. cqlsh> プロンプトに対して以下の CQL コマンドを実行して、Cassandra キースペースのレプリケーション レベルを設定します。
      1. ALTER KEYSPACE "identityzone" WITH replication = { 'class': 'NetworkTopologyStrategy', 'dc-1': '3','dc-2': '3' }; 
      2. ALTER KEYSPACE "system_traces" WITH replication = { 'class': 'NetworkTopologyStrategy', 'dc-1': '3','dc-2': '3' };
      3. 次のコマンドを使用してキースペースを表示します。
        select * from system.schema_keyspaces;
      4. cqlsh を終了します。
        exit
  14. dc-1 のすべての Cassandra ノードで、次の nodetool コマンドを実行してメモリを解放します。
    /opt/apigee/apigee-cassandra/bin/nodetool [-u username -pw password] -h cassandraIP cleanup

    ユーザー名とパスワードを渡す必要があるのは、Cassandra に対して JMX 認証を有効にした場合のみです。

  15. すべてのデータセンターでサポートする各組織の環境ごとに、次のことを行います。
    1. 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 プロパティで定義されているゲートウェイ ポッドの名前です。

    2. 新しい Message Processor を組織の環境に追加します。
      1. 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 が示されています。その値を保存します。

      2. dc-1 の Management Server ノードで、dc-2 に含まれる Message Processor ごとに、その Message Processor を組織の環境に追加します。
        apigee-adminapi.sh orgs envs servers add -o orgName -e envName \
              -u UUID --admin adminEmail --pwd adminPword --host localhost
    3. dc-1 の Management Server ノードで、組織を確認します。
      apigee-adminapi.sh orgs apis deployments -o orgName -a apiProxyName \
            --admin adminEmail --pwd adminPword --host localhost

      ここで、apiProxyName は、組織にデプロイされている API プロキシの名前です。