為 API BaaS 安裝多個資料中心

私有雲 v4.18.01 的邊緣

您可以透過啟用/主動設定,在多個資料中心安裝 API BaaS。本文說明如何在現有的 BaaS 資料中心中新增 BaaS 資料中心。

在 Cassandra 叢集與 Edge 共用時新增資料中心

所有資料中心的 Cassandra 節點數量都必須相同。API BaaS 安裝可以使用本身的 Cassandra 叢集,或是與 Edge 共用 Cassandra 叢集。

如果 BaaS 安裝作業與 Edge 共用 Cassandra 叢集,您必須更新原始資料中心的管理伺服器,使其能識別新資料中心中的 Cassandra 節點。

更新現有的資料中心

新增 BaaS 資料中心 (資料中心 2) 必須按照步驟安裝及設定新的資料中心,但也需要更新原本的 BaaS 資料中心 (資料中心 1)。這些是必要的修改原因如下:

  • 您要在新的資料中心新增 Cassandra 節點,這些節點必須可供現有資料中心存取。
  • 您必須設定資料中心 1 中 BaaS 堆疊節點使用的複製資訊,納入資料中心 2 的資訊。您必須先安裝資料中心 2,才能執行該項設定。

如要在資料中心 1 上執行這些更新,您需要更新用於安裝資料中心 1 的原始設定檔,然後在資料中心 1 的 Cassandra 節點上重新執行 apigee-setup。如果與 Edge 安裝共用資料中心 1 的 Cassandra 叢集,您也必須更新管理伺服器。

建立設定檔

如要安裝資料中心 1,請使用 API BaaS 安裝一文中顯示的設定。在這個設定檔中,不需要在安裝資料中心時提供有關資料中心 2 的任何相關資訊 1. 安裝資料中心 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 (機器 8) 的第一個 Cassandra 節點上安裝 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 節點:

    # List dc-1 節點,然後:dc-2;
    # (包含 Cassandra 資料中心和機架後置字串:$IP11:1, $IP1:$IP1:$IP1:1,$IP1:1)
  5. 在 dc-1 的第一個 Cassandra 節點上,使用新的 dc-1 設定檔 (包含 dc-2 的 Cassandra 節點) 執行 setup.sh:
    > /opt/apigee/apigee-setup/bin/setup.sh -p c c -f configFile
  6. 針對 dc-1 中的其他 Cassandra 節點重複步驟 6 和 7。
  7. 如要連線至 Edge 與 Edge 共用的 Cassandra 叢集,請將 dc-2 Cassandra 節點新增至 dc-1 管理伺服器節點的設定檔,並執行 setup.sh
    > /opt/apigee/apigee-setup/bin/setup.sh -p ms -f configFile
  8. 使用正確的複製係數來更新兩個資料中心的 Cassandra 索引鍵空間。您在任一資料中心的任何 Cassandra 伺服器上只需執行這個步驟一次:

    注意:以下所有指令均將複製係數設為「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 複製作業 = { 'class': 'NetworkTopologyStrategy', 'dc-1': '3','dc-2': '3' };
      2. cqlsh> ALTER KEYSPACE "Apigee_Baas" 具有複製功能 = { 'class': 'NetworkTopologyStrategy', 'dc-1': '3','dc-2': '3' };
      3. cqlsh> ALTER KEYSPACE "Apigee_Baas_Locks" WITH 複製作業 = { 'class': 'NetworkTopologyStrategy', 'dc-1': '3','dc-2': '3' };
      4. cqlsh> ALTER KEYSPACE "system_traces" WITH 複製功能 = { 'class': 'NetworkTopologyStrategy', 'dc-1': '3','dc-2': '3' };
      5. cqlsh> ALTER KEYSPACE "system_auth" WITH 複製作業 = { 'class': 'NetworkTopologyStrategy', 'dc-1': '3','dc-2': '3' };
      6. 使用下列指令查看索引鍵空間:
        cqlsh> select * from system.schema_keyspaces;
      7. 結束 cqlsh:
        cqlsh> 結束
  9. 在 dc-2 的所有 Cassandra 節點上,執行 rebuild 指令,並指定 dc-1 的區域名稱:
    > /opt/apigee/apigee-cassandra/bin/nodetool -h cassandraIP 重新建構 dc-1
  10. 在每個 Cassandra 節點上執行「nodetool status」,並確認所有 Cassandra 節點的「Owns」值是否都設為「100%」:
    > /opt/apigee/apigee-cassandra/bin/nodetool 狀態
  11. 在 dc-2 中安裝 BaaS:
    1. 編輯設定檔,只列出 dc-2 中的 Cassandra 節點:
      # List 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 p -f configFile
  12. 更新資料中心 1 中的 BaaS 堆疊節點:
    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 堆疊節點時,請依照 BAAS_CLUSTER_SEEDS 中的排列順序重新啟動這些節點BAAS_CLUSTER_SEEDS 最多會列出兩個堆疊節點。依序重新啟動這兩個節點後,您就可以按任何順序重新啟動剩餘的節點。

      > /opt/apigee/apigee-service/bin/apigee-service baas-usergrid restart
  13. 更新 BaaS 鍵值。您必須在安裝時設定這些索引鍵空間以進行複製,但不必在執行階段。移除複製作業也會節省 Cassandra 記憶體。

    ?只要在任一資料中心的任何 Cassandra 伺服器上執行這個步驟一次:
    1. 啟動 Cassandra cqlsh 公用程式:
      > /opt/apigee/apigee-cassandra/bin/cqlsh cassandraIP
    2. 執行下列 CQL 指令,設定 Cassandra 索引鍵空間的複製層級:
      1. cqlsh> ALTER KEYSPACE "Apigee_Baas_dc_1" WITH 複製作業 = { 'class': 'NetworkTopologyStrategy', 'dc-1': '3' };
      2. cqlsh> ALTER KEYSPACE "Apigee_Baas_dc_2" WITH 複製作業 = { 'class': 'NetworkTopologyStrategy', 'dc-2': '3' };
      3. 使用下列指令查看索引鍵空間:
        cqlsh> select * from system.schema_keyspaces;
      4. 結束 cqlsh:
        cqlsh> 結束

第二個資料中心的安裝作業已經完成。

完成兩個資料中心的安裝與設定後,您可以使用下列程序驗證安裝作業:

  1. 在所有 BaaS 堆疊節點上檢查狀態:
    > 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-2 中,例如在 dc-1 中建立的集合。