為 API BaaS 安裝多個資料中心

Private Cloud v4.18.01 專用 Edge

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

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

所有資料中心的 Cassandra 節點數量都必須相同。API BaaS 安裝作業可以使用自己的 Cassandra 叢集,也可以與 Edge 共用 Cassandra 叢集。

如果 BaaS 安裝程序與 Edge 共用 Cassandra 叢集,您必須更新原始資料中心的管理伺服器,將其設為可辨識新資料中心中的 Cassandra 節點。

更新現有的資料中心

新增 BaaS 資料中心 (資料中心 2) 時,您需要 設定新的資料中心,但也需要更新原本的 BaaS 資料中心 (資料中心 1)。這些修改是必要的,因為:

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

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

建立設定檔

如要安裝資料中心 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. 首次安裝 Edge apigee-setup 公用程式 dc-2 機器 8 的 Cassandra 節點,使用網際網路或非網際網路程序。詳情請參閱「安裝 Edge apigee-setup 公用程式」。
    2. 在命令提示字元中,執行設定指令碼,在第一個節點上安裝 Cassandra:
      &gt; /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-1 設定檔執行 setup.sh 包含來自 dc-2 的 Cassandra 節點:
    &gt; /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 管理伺服器節點的設定檔,然後執行 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 replication = { 'class': 'NetworkTopologyStrategy', 'dc-1': '3','dc-2': '3' };
      2. cqlsh&gt;ALTER KEYSPACE「Apigee_Baas」WITH 複製 = { '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&gt;ALTER KEYSPACE「system_auth」WITH 複製 = { '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:
    &gt; /opt/apigee/apigee-cassandra/bin/nodetool -h cassandraIP 重建 dc-1
  10. 執行「nodetool status」並確認所有 Cassandra 節點 「自有」值設為「100%」:
    &gt; /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 Portal:
      > /opt/apigee/apigee-setup/bin/setup.sh -p p -f configFile
  12. 更新資料中心 1 中的 BaaS Stack 節點:
    1. 在資料中心 1 中的第一個 BaaS 堆疊節點中,編輯 /opt/apigee/customer/application/usergrid.properties 「在編輯器中設定」如果檔案不存在,請建立一個。
    2. usergrid.properties 中加入下列屬性:
      # 值與 BAAS_CLUSTER_SEEDS 相同 出現在 dc-2 設定檔中,
      # (不含雙引號)。
      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 最多會列出兩個 Stack 節點。依序重新啟動這兩個節點後,您可以以任意順序重新啟動剩餘的節點。

      &gt; /opt/apigee/apigee-service/bin/apigee-service baas-usergrid 重新啟動
  13. 更新 BaaS 鍵值空間值。這些鍵值空間必須在安裝時設定複製作業,但不必在執行階段設定。移除複製作業也會節省 Cassandra 記憶體。

    ?您只需在任一資料中心的任何 Cassandra 伺服器上執行這個步驟一次:
    1. 啟動 Cassandra cqlsh 公用程式:
      > /opt/apigee/apigee-cassandra/bin/cqlsh cassandraIP
    2. 執行下列 CQL 指令,設定 Cassandra 鍵值空間的複製層級:
      1. cqlsh&gt;替代命名空間 &quot;Apigee_Baas_dc_1&quot;WITH 複製 = { 'class': 'NetworkTopologyStrategy', 'dc-1': '3' };
      2. cqlsh&gt;替代命名空間 &quot;Apigee_Baas_dc_2&quot;WITH 複製 = { 'class': 'NetworkTopologyStrategy', 'dc-2': '3' };
      3. 使用以下指令查看鍵值空間:
        cqlsh> select * from system.schema_keyspaces;
      4. 退出 cqlsh:
        cqlsh> exit

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

完成兩個資料中心的安裝及設定後, 請執行下列程序來驗證安裝:

  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. 嘗試登入 BaaS 入口網站的 dc-2。確認所有資料皆已在 dc-2 中複製, 例如在 dc-1 中建立的集合