為 API BaaS 安裝多個資料中心

Private Cloud v. 4.17.09 版本

您可以使用啟用/主動狀態,在多個資料中心內安裝 API BaaS 此外還會從 0 自動調整資源配置 您完全不必調整資源調度設定本文說明如何在現有的 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. 透過現有 Edge 安裝程序或獨立安裝 Cassandra 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. 針對其餘 Cassandra 節點、機器 9 和 10,重複執行步驟 3 和 4。 dc-2。
  4. 在 dc-1 的 Cassandra 節點上,編輯設定檔,新增 Cassandra 節點 視您安裝 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:
    &gt; /opt/apigee/apigee-setup/bin/setup.sh -p ms -f configFile
  8. 使用正確的複製係數更新兩個資料中心的 Cassandra 索引鍵空間。個人中心 這個步驟只需要在任一資料中心的任何 Cassandra 伺服器上執行一次:

    注意:下列所有指令都會將複製係數設為「3」,表示 叢集內的三個 Cassandra 節點進行安裝時,請視需要修改這個值。
    1. 啟動 Cassandra cqlsh 公用程式:
      &gt; /opt/apigee/apigee-cassandra/bin/cqlsh cassandraIP
    2. 在「cqlsh>」執行下列 CQL 指令設定複製作業的提示 Cassandra 索引鍵空間的層級:
      1. cqlsh&gt;替代 KEYSPACE「Apigee_Baas_dc_1」WITH 複製 = { 'class': 'NetworkTopologyStrategy', 「dc-1」:'3','dc-2': '3'};
      2. cqlsh&gt;替代 KEYSPACE「Apigee_Baas」WITH 複製 = { 'class': 'NetworkTopologyStrategy', 'dc-1': 「3','dc-2」:'3'};
      3. cqlsh&gt;替代 KEYSPACE「Apigee_Baas_Locks」WITH 複製 = { 'class': 'NetworkTopologyStrategy', 「dc-1」:'3','dc-2': '3'};
      4. cqlsh&gt;替代命名空間 「system_traces」WITH 複製 = { 'class': 'NetworkTopologyStrategy', 'dc-1': 「3','dc-2」:'3'};
      5. cqlsh&gt;替代 KEYSPACE「system_auth」WITH 複製 = { 'class': 'NetworkTopologyStrategy', 'dc-1': 「3','dc-2」:'3'};
      6. 使用下列指令查看索引鍵空間:
        cqlsh&gt;從中選取 * system.schema_keyspaces;
      7. 離開 cqlsh:
        cqlsh&gt;結束
  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:
      &gt; /opt/apigee/apigee-setup/bin/setup.sh -p e -f configFile
    3. 在 dc-2 的節點 4、5 和 6 上安裝 BaaS 堆疊:
      &gt; /opt/apigee/apigee-setup/bin/setup.sh -p b -f configFile
    4. 在電腦 7 上安裝 BaaS 入口網站:
      &gt; /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 中加入下列屬性:
      # 值與 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 堆疊節點。

      注意:重新啟動 BaaS 堆疊節點時,請在節點中重新啟動 並按照 BAAS_CLUSTER_SEEDS 的順序列出。 有 BAAS_CLUSTER_SEEDS 份清單 最多兩個堆疊節點依序重新啟動這兩個節點後, 其他節點

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

    在任一資料中心的任何 Cassandra 伺服器上,只需執行這個步驟一次:
    1. 啟動 Cassandra cqlsh 公用程式:
      &gt; /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&gt;選取 * 來自 system.schema_keyspaces;
      4. 離開 cqlsh:
        cqlsh&gt;結束

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

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

  1. 在所有 BaaS 堆疊節點上檢查狀態:
    &gt;curl 0:8080/status
  2. 檢查權杖 API 呼叫是否正常運作:
    &gt;curl -X POST &quot;http://localhost:8080/management/token&quot;-d &#39;{&quot;grant_type&quot;:&quot;password&quot;, "username":"adminEmail","password":"pWord"}'
  3. 嘗試登入 BaaS 入口網站的 dc-2。確認所有資料皆已在 dc-2 中複製, 例如在 dc-1 中建立的集合