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

Edge for Private Cloud v. 4.17.01

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

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

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

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

既存のデータセンターを更新する

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

  • 新しいデータセンターに新しい Cassandra ノードを追加します。これらのノードは、既存のデータセンターからアクセスできる必要があります。
  • データセンター 1 の BaaS Stack ノードで使用されるレプリケーション情報を、データセンター 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

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

  1. API BaaS のインストールの説明に沿って、最初のデータセンターをインストールします。このドキュメントには、データセンター 1 のインストールに使用する構成ファイルが含まれています。
  2. 上記の説明に沿って、dc-2 の構成ファイルを作成します。
  3. 既存の Edge インストールの一部として、または BaaS のスタンドアロン クラスタとして Cassandra をインストールします。
    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 $IP13:1,1 $IP8:2,1 $IP9:2,1 $IP10:2,1"
  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 configFile
    4. マシン 7 に BaaS ポータルをインストールします。
      > /opt/apigee/apigee-setup/bin/setup.sh -p p -f configFile
  12. データセンター 1 の BaaS Stack ノードを更新します。
    1. データセンター 1 の最初の BaaS Stack ノードで、エディタを使用して /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 スタックノードを再起動します。

      注: BaaS Stack ノードを再起動する場合は、BAAS_CLUSTER_SEEDS にリストされている順序で再起動します。 BAAS_CLUSTER_SEEDS には、最大 2 つの Stack ノードが一覧表示されます。これら 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 に複製されていることを確認します。