複数のデータセンターのインストールによる API BaaS

Edge for Private Cloud v4.18.01

アクティブ/アクティブ構成を使用して、複数のデータセンターに API BaaS をインストールできます。このドキュメントでは、既存の BaaS データセンターに BaaS データセンターを追加する方法について説明します。

Cassandra クラスタが Edge と共有されている場合のデータセンターの追加

すべてのデータセンターに同じ数の Cassandra ノードが必要です。API BaaS のインストール環境では、独自の Cassandra クラスタを使用することも、Cassandra クラスタを Edge と共有することもできます。

BaaS インストールで Cassandra クラスタを Edge と共有している場合は、元のデータセンターの Management Server を更新して、新しいデータセンターの Cassandra ノードを認識するように構成する必要があります。

既存のデータセンターの更新

新しい BaaS データセンター(データセンター 2)を追加するには、新しいデータセンターをインストールして構成する手順を行う必要がありますが、元の BaaS データセンター(データセンター 1)を更新する必要もあります。このような変更が必要な理由は次のとおりです。

  • 既存のデータセンターからアクセスできる新しい Cassandra ノードを新しいデータセンターに追加します。
  • データセンター 1 の BaaS スタックノードで使用されるレプリケーション情報を、データセンター 2 からの情報が含まれるように構成する必要があります。この構成は、データセンター 2 が設置されるまで実行できません。

データセンター 1 でこれらの更新を行うには、データセンター 1 のインストールに使用した元の構成ファイルを更新してから、データセンター 1 の Cassandra ノードで apigee-setup を再実行します。データセンター 1 の Cassandra クラスタが Edge のインストールと共有されている場合は、Management Server も更新する必要があります。

構成ファイルの作成

データセンター 1 をインストールするには、API BaaS のインストールに示す構成を使用します。データセンター 1 をインストールするときに、データセンター 2 に関する情報を構成ファイルに含める必要はありません。データセンター 2 をインストールした後に構成ファイルに情報を追加します。

以下は、データセンター 2 の構成ファイルです。この構成ファイルは、インストール トポロジで説明されているように、10 個のノードに dc-2 をインストールすることを前提としています。7 つのノードにインストールする場合は、このファイルを適宜変更してください。

データセンター 2(dc-2)の構成ファイルには、データセンター 1(dc-1)に関する情報が含まれています。

# Specify IP address or DNS name of node for dc-2.
IP1=192.168.1.1   # ElasticSearch
IP2=192.168.1.2   # ElasticSearch
IP3=192.168.1.3   # ElasticSearch
IP4=192.168.1.4   # API BaaS Stack
IP5=192.168.1.5   # API BaaS Stack
IP6=192.168.1.6   # API BaaS Stack
IP7=192.168.1.7   # API BaaS Portal
IP8=192.168.1.8   # Cassandra dc-2 (shared with Edge or standalone)
IP9=192.168.1.9   # Cassandra dc-2 (shared with Edge or standalone)
IP10=192.168.1.10  # Cassandra dc-2 (shared with Edge or standalone)

# Specify node information for dc-1
IP11=192.168.1.11   # Cassandra dc-1 (shared with Edge or standalone)
IP12=192.168.1.12   # Cassandra dc-1 (shared with Edge or standalone)
IP13=192.168.1.13   # Cassandra dc-1 (shared with Edge or standalone)
IP14=192.168.1.14   # API BaaS Stack
IP15=192.168.1.15   # API BaaS Stack

# Must resolve to IP address or DNS name of host - not to 127.0.0.1 or localhost.
HOSTIP=$(hostname -i)

# Define the API BaaS administrator account.  
AS_ADMIN="superuser"    # User name - default is "superuser".
AS_ADMIN_EMAIL=stackAdmin@email.com
AS_PASSWD=stackAdminPWord

# Specify Cassandra data center and rack suffix.
# List dc-2 nodes first, then dc-1.
# Must use IP addresses for CASS_HOSTS, not DNS names.
# CASS_HOSTS="$IP8:2,1 $IP9:2,1 $IP10:2,1 $IP11:1,1 $IP12:1,1 $IP13:1,1"

# Specify the Cassandra region.
REGION=dc-2

# Cassandra uname/pword.
# Even if Cassandra authentication is disabled,
# you must still pass values for these properties.
CASS_USERNAME=cassandra    # Default value
CASS_PASSWORD=cassandra    # Default value

# Specify BaaS Cassandra connection information.
# Specify the data center name as dc-2.
BAAS_CASS_LOCALDC=dc-2    

# Specify both data centers.
BAAS_CASS_DC_LIST=dc-1,dc-2

# Replication is in the form "dataCenterName:#CassandraNodes". 
# Specify both data centers.
BAAS_CASS_REPLICATION=dc-1:3,dc-2:3

# Defines the initial contact points for members of the BaaS cluster. 
# Specify the IP address of no more than two Stack nodes per data center.
# Specify both data centers. 
BAAS_CLUSTER_SEEDS="dc-1:$IP14,dc-1:$IP15,dc-2:$IP4,dc-2:$IP5"

# ElasticSearch IPs or DNS names, separated by spaces, for dc-2.
ES_HOSTS="$IP1 $IP2 $IP3"

# API BaaS Stack information.
# Default cluster name is "apigee_baas"
BAAS_USERGRID_CLUSTERNAME="apigee_baas" 

# URL and port of the load balancer for the API BaaS Stack nodes, 
# or IP/DNS and port 8080 of a single Stack node with no load balancer.
BAAS_USERGRID_URL=http://myloadbalancer:8443

# API BaaS Portal information.
# URL and port number of load balancer, if there is one in front of the Portal,
# or the URL and port of the Portal node.  
BAAS_PORTAL_URL="http://$IP7:9000"

# Portal port. Default value is 9000.
BAAS_PORTAL_LISTEN_PORT=9000 

# SMTP information. BaaS requires an SMTP server.
SMTPHOST=smtp.gmail.com
SMTPPORT=465
SMTPUSER=your@email.com
SMTPPASSWORD=yourEmailPassword
SMTPSSL=y
SMTPMAILFROM="My Company <myco@company.com>"

BaaS データセンターを追加する

  1. API BaaS のインストールの説明に従って、最初のデータセンターをインストールします。このドキュメントには、データセンター 1 のインストールに使用する構成ファイルが含まれています。
  2. 前述のように dc-2 の構成ファイルを作成します。
  3. Cassandra を既存の Edge インストールの一部として、または BaaS 用のスタンドアロン クラスタとしてインストールします。
    1. インターネットまたはインターネット以外の方法で、dc-2 の最初の Cassandra ノードであるマシン 8 に Edge apigee-setup ユーティリティをインストールします。詳細については、Edge apigee-setup ユーティリティのインストールをご覧ください。
    2. コマンド プロンプトでセットアップ スクリプトを実行し、最初のノードに Cassandra をインストールします。
      > /opt/apigee/apigee-setup/bin/setup.sh -p c -f configFile

      「-p c」オプションは、Cassandra のインストールを指定します。

      構成ファイルは、「apigee」ユーザーがアクセス可能または読み取り可能である必要があります。
    3. dc-2 の残りの Cassandra ノード(マシン 9 と 10)で手順 3 と 4 を繰り返します。
  4. dc-1 の Cassandra ノードで、Cassandra のインストール方法に基づいて、構成ファイルを編集してデータセンター 2 の Cassandra ノードを追加します。

    # 最初に dc-1 ノードをリストし、次に dc-2,
    # Cassandra データセンターとラック接尾辞を含めます
    CASS_HOSTS="$IP11:1,1 $IP12:1,1,1 $IP12:1,1,1 $IP1
  5. dc-1 の最初の Cassandra ノードで、dc-2 の Cassandra ノードを含む新しい dc-1 構成ファイルを使用して setup.sh を実行します。
    > /opt/apigee/apigee-setup/bin/setup.sh -p c -f configFile
  6. dc-1 の残りの Cassandra ノードに対して手順 6 と 7 を繰り返します。
  7. Edge と共有する dc-1 用の Cassandra クラスタに接続する場合は、dc-2 の Cassandra ノードを dc-1 の Management Server ノードの構成ファイルに追加し、setup.sh を実行します。
    > /opt/apigee/apigee-setup/bin/setup.sh -p ms -f configFile
  8. 2 つのデータセンターの正しいレプリケーション係数で Cassandra キースペースを更新します。この手順は、いずれかのデータセンターの Cassandra サーバーで 1 回だけ実行する必要があります。

    : 以下のすべてのコマンドは、レプリケーション係数を「3」に設定し、クラスタ内に 3 つの Cassandra ノードがあることを示します。この値は実際のインストールに応じて変更してください。
    1. Cassandra cqlsh ユーティリティを起動します。
      > /opt/apigee/apigee-cassandra/bin/cqlsh cassandraIP
    2. 「cqlsh>」プロンプトで次の CQL コマンドを実行して、Cassandra キースペースのレプリケーション レベルを設定します。
      1. cqlsh> ALTER KEYSPACE "Apigee_Baas_dc_1" WITH replication = { 'class': 'NetworkTopologyStrategy', 'dc-1': '3','dc-2': '3' };
      2. cqlsh> ALTER KEYSPACE "Apigee_Baas" WITH replication = { 'class': 'NetworkTopologyStrategy', 'dc-1': '3','dc-2': '3' };
      3. cqlsh> ALTER KEYSPACE "Apigee_Baas_Locks" WITH replication = { 'class': 'NetworkTopologyStrategy', 'dc-1': '3','dc-2': '3' };
      4. cqlsh> ALTER KEYSPACE "system_traces" WITH replication = { 'class': 'NetworkTopologyStrategy', 'dc-1': '3','dc-2': '3' };
      5. cqlsh> ALTER KEYSPACE "system_auth" WITH replication = { 'class': 'NetworkTopologyStrategy', 'dc-1': '3','dc-2': '3' };
      6. 次のコマンドを使用してキースペースを表示します。
        cqlsh> select * from system.schema_keyspaces;
      7. cqlsh を終了します。
        cqlsh> exit
  9. dc-2 のすべての Cassandra ノードで、dc-1 のリージョン名を指定して rebuild コマンドを実行します。
    > /opt/apigee/apigee-cassandra/bin/nodetool -h cassandraIP rebuild dc-1
  10. すべての Cassandra ノードで「nodetool status」を実行し、すべての Cassandra ノードの [Owns] 値が「100%」であることを確認します。
    > /opt/apigee/apigee-cassandra/bin/nodetool status
  11. dc-2 に BaaS をインストールします。
    1. 構成ファイルを編集して dc-2 の Cassandra ノードのみを一覧表示します。
      # dc-2 の Cassandra ノードをリストします。
      # Cassandra データセンターとラック接尾辞は省略
      CASS_HOSTS="$IP8 $IP9 $IP10"
    2. dc-2 のノード 4、5、6 に ElasticSearch をインストールします。
      > /opt/apigee/apigee-setup/bin/setup.sh -p e -f configFile
    3. dc-2 のノード 4、5、6 に BaaS スタックをインストールします。:
      > /opt/apigee/apigee-setup/bin/setup.sh -p b -f :
    4. マシン 7 に BaaS ポータルをインストールします。
      > /opt/apigee/apigee-setup/bin/setup.sh -p -f configFile
  12. データセンター 1 の BaaS Stack ノードを更新します。
    1. データセンター 1 の最初の BaaS スタックノードで、エディタを使って /opt/apigee/customer/application/usergrid.properties を編集します。ファイルが存在しない場合は作成します。
    2. usergrid.properties に次のプロパティを追加します。
      # dc-2 構成ファイルの BAAS_CLUSTER_SEEDS と同じ値。
      # 二重引用符は付けません。
      usergrid-deployment_usergrid.cluster.seeds=dc-1:dc1StackIP1,dc-1:dc1StackIP2,dc-2:dc2StackIP1,dc-2:dc2StackIP2

      # dc-2 構成ファイル内の BAAS_CASS_DC_LIST と同じ値。
      usergrid-deployment_usergrid.cluster.region.list=dc-1,dc-2
    3. 残りの BaaS スタックノードに手順 a と b を繰り返します。
    4. すべての BaaS Stack ノードを再起動します。

      : BaaS Stack ノードを再起動する場合は、BAAS_CLUSTER_SEEDS にリストされているのと同じ順序で再起動してください。BAAS_CLUSTER_SEEDS は、最大 2 つのスタックノードを一覧表示します。これら 2 つのノードを順番に再起動すると、残りのノードを任意の順序で再起動できます。

      > /opt/apigee/apigee-service/bin/apigee-service baas-usergrid restart
  13. BaaS キースペース値を更新します。これらのキースペースはインストール時にレプリケーション用に設定する必要がありますが、実行時に設定する必要はありません。レプリケーションを削除すると、Cassandra のメモリも節約できます。

    この手順は、次のいずれかのデータセンターの Cassandra サーバーで 1 回だけ実行する必要があります。
    1. Cassandra cqlsh ユーティリティを起動します。
      > /opt/apigee/apigee-cassandra/bin/cqlsh cassandraIP
    2. 次の CQL コマンドを実行して、Cassandra キースペースのレプリケーション レベルを設定します。
      1. cqlsh> ALTER KEYSPACE "Apigee_Baas_dc_1" WITH replication = { 'class': 'NetworkTopologyStrategy', 'dc-1': '3' };
      2. cqlsh> ALTER KEYSPACE "Apigee_Baas_dc_2" WITH replication = { 'class': 'NetworkTopologyStrategy', 'dc-2': '3' };
      3. 次のコマンドを使用してキースペースを表示します。
        cqlsh> select * from system.schema_keyspaces;
      4. cqlsh を終了します。
        cqlsh> exit

これで 2 番目のデータセンターの設置が完了しました。

2 つのデータセンターのインストールと構成が完了したら、次の手順でインストールを検証します。

  1. すべての BaaS Stack ノードで、ステータスを確認します。
    > curl 0:8080/status
  2. トークン API 呼び出しが機能していることを確認します。
    > curl -X POST "http://localhost:8080/management/token" -d '{"grant_type":"password", "username":"adminEmail","password":"pWord"}'
  3. dc-2 の BaaS ポータルにログインしてみてください。dc-1 に作成されたコレクションなど、すべてのデータが dc-2 に複製されていることを確認します。