新增資料中心

本文說明如何將資料中心 (也稱為區域) 新增至現有資料中心。

新增資料中心前的注意事項

安裝新增資料中心之前,您必須瞭解如何設定資料中心之間的 OpenLDAP、ZooKeeper、Cassandra 和 Postgres 伺服器。您也必須確保兩個資料中心節點之間的必要通訊埠已開啟。

  • OpenLDAP

    每個資料中心都有自己的 OpenLDAP 伺服器,並已啟用複製功能。安裝新的資料中心時,您必須將 OpenLDAP 設為使用複製功能,並重新設定現有資料中心內的 OpenLDAP 伺服器,以便使用複製功能。

  • ZooKeeper

    針對兩個資料中心的 ZK_HOSTS 屬性,請以相同順序指定兩個資料中心內所有 ZooKeeper 節點的 IP 位址或 DNS 名稱,並使用「:observer」修飾符標示任何節點。沒有 :observer 修飾符的節點稱為「投票者」。設定中的「投票者」數量必須為奇數。

    在這個拓撲中,主機 9 上的 ZooKeeper 主機是觀察器:

    在下方的設定檔範例中,節點 9 標有 :observer 修飾符,因此您有五個投票者:節點 1、2、3、7 和 8。

    針對每個資料中心的 ZK_CLIENT_HOSTS 屬性,請僅指定該資料中心內 ZooKeeper 節點的 IP 位址或 DNS 名稱,並按照相同順序排列該資料中心內的所有 ZooKeeper 節點。

  • Cassandra

    所有資料中心的 Cassandra 節點數量必須相同。

    針對每個資料中心的 CASS_HOSTS,請務必為兩個資料中心指定所有 Cassandra IP 位址 (而非 DNS 名稱)。針對資料中心 1,請先列出該資料中心內的 Cassandra 節點。針對資料中心 2,請先列出該資料中心內的 Cassandra 節點。請按照資料中心內所有 Cassandra 節點的相同順序列出 Cassandra 節點。

    所有 Cassandra 節點都必須有「:d,r」後置字串,例如「ip:1,1 = 資料中心 1 和機架/可用區 1」,以及「ip:2,1 = 資料中心 2 和機架/可用區 1」。

    例如「192.168.124.201:1,1 192.168.124.202:1,1 192.168.124.203:1,1 192.168.124.204:2,1 192.168.124.205:2,1 192.168.124.206:2,1」

    每個資料中心機架/可用區 1 的第一個節點,都會做為種子伺服器。在這個部署模型中,Cassandra 設定如下:

  • Postgres

    根據預設,Edge 會以主模式安裝所有 Postgres 節點。不過,如果您有多個資料中心,請將 Postgres 節點設為使用主從式複製,這樣一來,如果主節點故障,備用節點就能繼續處理流量。通常,您會在一個資料中心設定主要 Postgres 伺服器,並在第二個資料中心設定待命伺服器。

    如果現有資料中心已設定為以主/待機模式執行兩個 Postgres 節點,則在這個程序中,請取消註冊現有的待機節點,並以新資料中心內的待機節點取代。

    下表顯示兩種情境的 Postgres 設定前後對照:

    之前 晚於

    dc-1 中的單一主要 Postgres 節點

    dc-1 中的主要 Postgres 節點

    dc-2 中的待命 Postgres 節點

    dc-1 中的主要 Postgres 節點

    dc-1 中的待命 Postgres 節點

    dc-1 中的主要 Postgres 節點

    dc-2 中的待命 Postgres 節點

    取消註冊 dc-1 中的舊待命 Postgres 節點

  • 通訊埠需求

    您必須確保兩個資料中心節點之間的必要通訊埠已開啟。 如需通訊埠圖表,請參閱「通訊埠需求」。

更新現有資料中心

新增資料中心時,您必須執行安裝及設定新資料中心節點的步驟,但也必須更新原始資料中心內的節點。您必須進行這些修改,因為您要在新的資料中心新增 Cassandra 和 ZooKeeper 節點,這些節點必須可供現有資料中心存取,而且您必須重新設定 OpenLDAP 才能使用複製功能。

建立設定檔

以下是兩個資料中心的靜默設定檔,每個資料中心都有 6 個節點,如「安裝拓撲」所示。請注意,dc-1 的設定檔會新增下列設定:

  • 設定 OpenLDAP,在兩個 OpenLDAP 節點之間複製資料。
  • 將 dc-2 的新 Cassandra 和 ZooKeeper 節點新增至 dc-1 的設定檔。
# Datacenter 1
IP1=IPorDNSnameOfNode1
IP2=IPorDNSnameOfNode2
IP3=IPorDNSnameOfNode3
IP7=IPorDNSnameOfNode7
IP8=IPorDNSnameOfNode8
IP9=IPorDNSnameOfNode9 
HOSTIP=$(hostname -i)
MSIP=$IP1
ADMIN_EMAIL=opdk@google.com
APIGEE_ADMINPW=Secret123
LICENSE_FILE=/tmp/license.txt
USE_LDAP_REMOTE_HOST=n
LDAP_TYPE=2
LDAP_SID=1
LDAP_PEER=$IP7
APIGEE_LDAPPW=secret
MP_POD=gateway-1
REGION=dc-1
ZK_HOSTS="$IP1 $IP2 $IP3 $IP7 $IP8 $IP9:observer"
ZK_CLIENT_HOSTS="$IP1 $IP2 $IP3"
# Must use IP addresses for CASS_HOSTS, not DNS names.
CASS_HOSTS="$IP1:1,1 $IP2:1,1 $IP3:1,1 $IP7:2,1 $IP8:2,1 $IP9:2,1"
SKIP_SMTP=n
SMTPHOST=smtp.example.com
SMTPUSER=smtp@example.com 
SMTPPASSWORD=smtppwd   
SMTPSSL=n
SMTPPORT=25
SMTPMAILFROM="My Company <myco@company.com>"
# Datacenter 2
IP1=IPorDNSnameOfNode1
IP2=IPorDNSnameOfNode2
IP3=IPorDNSnameOfNode3
IP7=IPorDNSnameOfNode7
IP8=IPorDNSnameOfNode8
IP9=IPorDNSnameOfNode9 
HOSTIP=$(hostname -i)
MSIP=$IP7
ADMIN_EMAIL=opdk@google.com
APIGEE_ADMINPW=Secret123
LICENSE_FILE=/tmp/license.txt
USE_LDAP_REMOTE_HOST=n
LDAP_TYPE=2
LDAP_SID=2
LDAP_PEER=$IP1
APIGEE_LDAPPW=secret
MP_POD=gateway-2
REGION=dc-2
ZK_HOSTS="$IP1 $IP2 $IP3 $IP7 $IP8 $IP9:observer"
ZK_CLIENT_HOSTS="$IP7 $IP8 $IP9"
# Must use IP addresses for CASS_HOSTS, not DNS names.
CASS_HOSTS="$IP7:2,1 $IP8:2,1 $IP9:2,1 $IP1:1,1 $IP2:1,1 $IP3:1,1"
SKIP_SMTP=n
SMTPHOST=smtp.example.com
SMTPUSER=smtp@example.com 
SMTPPASSWORD=smtppwd   
SMTPSSL=n
SMTPPORT=25
SMTPMAILFROM="My Company <myco@company.com>"

新增資料中心

請按照下列程序新增資料中心。

在程序中,資料中心具有下列名稱:

  • dc-1:現有資料中心
  • dc-2:新資料中心

如要新增資料中心,請按照下列步驟操作:

  1. 在 dc-1,使用包含 dc-2 Cassandra 節點的新 dc-1 設定檔,在原始 Cassandra 節點上重新執行 setup.sh:
    /opt/apigee/apigee-setup/bin/setup.sh -p ds -f configFile1
  2. 在 dc-1,重新執行管理伺服器節點上的 setup.sh:
    /opt/apigee/apigee-setup/bin/setup.sh -p ms -f configFile1
  3. 在 dc-2 上,在所有節點上安裝 apigee-setup。詳情請參閱「安裝 Edge apigee-setup 公用程式」。
  4. 在 dc-2 上,將 Cassandra 和 ZooKeeper 安裝到適當的節點:
    /opt/apigee/apigee-setup/bin/setup.sh -p ds -f configFile2
  5. 在 dc-2,對所有 Cassandra 節點執行重建指令,並指定 dc-1 的區域名稱:
    /opt/apigee/apigee-cassandra/bin/nodetool [-u username -pw password] -h cassIP rebuild dc-1

    只有在為 Cassandra 啟用 JMX 驗證時,才需要傳遞使用者名稱和密碼。

  6. 在 dc-2 上,將 Management Server 安裝在適當的節點上:
    /opt/apigee/apigee-setup/bin/setup.sh -p ms -f configFile2
  7. 在 dc-2 的管理伺服器節點上,安裝 apigee-provision,這會安裝 apigee-adminapi.sh 公用程式:
    /opt/apigee/apigee-service/bin/apigee-service apigee-provision install
  8. 在 dc-2 上,將 Routes 和訊息處理器安裝在適當的節點上:
    /opt/apigee/apigee-setup/bin/setup.sh -p rmp -f configFile2
  9. 在 dc-2,在適當的節點上安裝 Qpid:
    /opt/apigee/apigee-setup/bin/setup.sh -p qs -f configFile2
  10. 在 dc-2 上,將 Postgres 安裝在適當的節點上:
    /opt/apigee/apigee-setup/bin/setup.sh -p ps -f configFile2
  11. 為 Postgres 節點設定 Postgres 主要/待命。dc-1 中的 Postgres 節點是主要伺服器,dc-2 中的 Postgres 節點則是待命伺服器。
    1. 在 dc-1 的主要節點上,編輯設定檔並設定:
      PG_MASTER=IPorDNSofDC1Master
      PG_STANDBY=IPorDNSofDC2Standby
    2. 在新主要執行個體上啟用複製功能:
      /opt/apigee/apigee-service/bin/apigee-service apigee-postgresql setup-replication-on-master -f configFIle
    3. 在 dc-2 的待命節點上,編輯設定檔並設定:
      PG_MASTER=IPorDNSofDC1Master
      PG_STANDBY=IPorDNSofDC2Standby
    4. 在 dc-2 的待命節點上,停止伺服器,然後刪除任何現有的 Postgres 資料:
      /opt/apigee/apigee-service/bin/apigee-service apigee-postgresql stop
      rm -rf /opt/apigee/data/apigee-postgresql/

      如有需要,您可以在刪除前備份這些資料。

    5. 在 dc-2 中設定待命節點:
      /opt/apigee/apigee-service/bin/apigee-service apigee-postgresql setup-replication-on-standby -f configFile
  12. 在 dc-1 上更新數據分析設定,並設定組織。
    1. 在 dc-1 的管理伺服器節點上,取得 Postgres 節點的 UUID:
      apigee-adminapi.sh servers list -r dc-1 -p analytics -t postgres-server \
        --admin adminEmail --pwd adminPword --host localhost

      UUID 會顯示在傳回資料的結尾。儲存該值。

    2. 在 dc-2 的管理伺服器節點上,取得 Postgres 節點的 UUID,如上一個步驟所示。儲存該值。
    3. 在 dc-1 的管理伺服器節點上,判斷數據分析和消費者群組的名稱。下方許多指令都需要這項資訊。

      根據預設,數據分析群組的名稱為「axgroup-001」,消費者群組的名稱為「consumer-group-001」。在區域的靜默設定檔中,您可以使用 AXGROUP 屬性設定數據分析群組的名稱。

      如果不確定數據分析和消費者群組的名稱,請使用下列指令顯示:

      apigee-adminapi.sh analytics groups list \
        --admin adminEmail --pwd adminPword --host localhost

      這個指令會在 name 欄位傳回數據分析群組名稱,並在 consumer-groups 欄位傳回消費者群組名稱。

    4. 在 dc-1 的管理伺服器節點上,從數據分析群組中移除現有的 Postgres 伺服器:
      1. 從用戶群組中移除 Postgres 節點:
        apigee-adminapi.sh analytics groups consumer_groups datastores remove \
          -g axgroup-001 -c consumer-group-001 -u UUID \
          -Y --admin adminEmail --pwd adminPword --host localhost

        如果 dc-1 設定為有兩個 Postgres 節點在主/待機模式下運作,請移除這兩個節點:

        apigee-adminapi.sh analytics groups consumer_groups datastores remove \
          -g axgroup-001 -c consumer-group-001 -u "UUID_1,UUID_2" \
          -Y --admin adminEmail --pwd adminPword --host localhost
      2. 從數據分析群組中移除 Postgres 節點:
        apigee-adminapi.sh analytics groups postgres_server remove \
          -g axgroup-001 -u UUID -Y --admin adminEmail \
          --pwd adminPword --host localhost

        如果 dc-1 已設定為有兩個 Postgres 節點以主/待機模式運作,請移除這兩個節點:

        apigee-adminapi.sh analytics groups postgres_server \
          remove -g axgroup-001 -u UUID1,UUID2 -Y --admin adminEmail \
          --pwd adminPword --host localhost
    5. 在 dc-1 的管理伺服器節點上,將新的主要/待命 Postgres 伺服器新增至數據分析群組:
      1. 將兩個 Postgres 伺服器新增至數據分析群組:
        apigee-adminapi.sh analytics groups postgres_server \
          add -g axgroup-001 -u "UUID_1,UUID_2" --admin adminEmail \
          --pwd adminPword --host localhost

        其中 UUID_1 對應 dc-1 中的主要 Postgres 節點,UUID_2 則對應 dc-2 中的待命 Postgres 節點。

      2. 將 PG 伺服器新增至消費者群組,做為主伺服器/待命伺服器:
        apigee-adminapi.sh analytics groups consumer_groups datastores \
          add -g axgroup-001 -c consumer-group-001 -u "UUID_1,UUID_2" --admin adminEmail \
          --pwd adminPword --host localhost
    6. 將 dc-2 的 Qpid 伺服器新增至數據分析群組:
      1. 在 dc-1 的管理伺服器節點上,取得 dc-2 中 Qpid 節點的 UUID:
        apigee-adminapi.sh servers list -r dc-2 -p central -t qpid-server \
          --admin adminEmail --pwd adminPword --host localhost

        UUID 會顯示在傳回資料的結尾。儲存這些值。

      2. 在 dc-1 的管理伺服器節點上,將 Qpid 節點新增至數據分析群組 (執行下列兩項指令):
        apigee-adminapi.sh analytics groups qpid_server \
          add -g axgroup-001 -u "UUID_1" --admin adminEmail \
          --pwd adminPword --host localhost
        
        apigee-adminapi.sh analytics groups qpid_server \
          add -g axgroup-001 -u "UUID_2" --admin adminEmail \
          --pwd adminPword --host localhost
      3. 在 dc-1 的管理伺服器節點上,將 Qpid 節點新增至消費者群組 (執行下列兩項指令):
        apigee-adminapi.sh analytics groups consumer_groups consumers \
          add -g axgroup-001 -c consumer-group-001 -u "UUID_1" \
          --admin adminEmail --pwd adminPword --host localhost
        
        apigee-adminapi.sh analytics groups consumer_groups consumers \
          add -g axgroup-001 -c consumer-group-001 -u "UUID_2" \
          --admin adminEmail --pwd adminPword --host localhost
    7. 從 dc-1 取消註冊並刪除舊的 Postgres 待命伺服器:
      1. 取消註冊現有的 dc-1 Postgres 待命伺服器:
        apigee-adminapi.sh servers deregister -u UUID -r dc-1 \
          -p analytics -t postgres-server -Y --admin adminEmail \
          --pwd adminPword --host localhost

        其中 UUID 是 dc-1 中的舊待命 Postgres 節點。

      2. 刪除現有的 dc-1 Postgres 待命伺服器:
        apigee-adminapi.sh servers delete -u UUID \
          --admin adminEmail --pwd adminPword --host localhost
  13. 使用兩個資料中心的正確複製係數,更新 Cassandra 鍵空間。您只需在任一資料中心的任何 Cassandra 伺服器上執行這個步驟一次:
    1. 啟動 Cassandra cqlsh 公用程式:
      /opt/apigee/apigee-cassandra/bin/cqlsh cassandraIP
    2. 在「cqlsh>」提示執行下列 CQL 指令,設定 Cassandra 鍵空間的複製層級:
      1. ALTER KEYSPACE "identityzone" WITH replication = { 'class': 'NetworkTopologyStrategy', 'dc-1': '3','dc-2': '3' }; 
      2. ALTER KEYSPACE "system_traces" WITH replication = { 'class': 'NetworkTopologyStrategy', 'dc-1': '3','dc-2': '3' };
      3. 使用下列指令查看 keyspace:
        select * from system.schema_keyspaces;
      4. 結束「cqlsh」:
        exit
  14. 在 dc-1 的所有 Cassandra 節點上執行下列 nodetool 指令,釋出記憶體:
    /opt/apigee/apigee-cassandra/bin/nodetool [-u username -pw password] -h cassandraIP cleanup

    只有在為 Cassandra 啟用 JMX 驗證時,才需要傳遞使用者名稱和密碼。

  15. 針對您要在資料中心支援的每個組織和環境:
    1. 在 dc-1 的管理伺服器節點上,將新的 MP_POD 新增至組織:
      apigee-adminapi.sh orgs pods add -o orgName -r dc-2 -p gateway-2 \
        --admin adminEmail --pwd adminPword --host localhost

      其中 gateway-2 是閘道 Pod 的名稱,由 dc-2 設定檔中的 MP_POD 屬性定義。

    2. 將新的訊息處理器新增至組織和環境:
      1. 在 dc-2 的管理伺服器節點上,取得 dc-2 中訊息處理器節點的 UUID:
        apigee-adminapi.sh servers list -r dc-2 -p gateway-2 \
          -t message-processor --admin adminEmail --pwd adminPword --host localhost

        UUID 會顯示在傳回資料的結尾。儲存這些值。

      2. 在 dc-1 的管理伺服器節點上,針對 dc-2 中的每個訊息處理器,將訊息處理器新增至機構的環境:
        apigee-adminapi.sh orgs envs servers add -o orgName -e envName \
          -u UUID --admin adminEmail --pwd adminPword --host localhost
    3. 在 dc-1 的管理伺服器節點上,檢查組織:
      apigee-adminapi.sh orgs apis deployments -o orgName -a apiProxyName \
        --admin adminEmail --pwd adminPword --host localhost

      其中 apiProxyName 是組織中部署的 API Proxy 名稱。