新增資料中心

私有雲 v4.18.01 的邊緣

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

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

在安裝新增資料中心之前,您必須瞭解如何跨資料中心設定 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 節點,指定資料中心內 ZooKeeper 節點的 IP 位址或 DNS 名稱。
  • 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.404:2,110

    在這個部署模式中,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 中的舊待命節點

  • 通訊埠需求
    您必須確保兩個資料中心的節點之間開啟了必要的通訊埠。 如需通訊埠圖表,請參閱安裝規定

更新現有的資料中心

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

建立設定檔

下方所示為兩個資料中心的靜音設定檔,其中每個資料中心都有 6 個節點,如安裝拓撲所示。請注意,dc-1 的設定檔會將其他設定新增至:

  • 設定 OpenLDAP 的複製功能,來進行兩個 OpenLDAP 節點的複製作業。
  • 將新的 Cassandra 和 ZooKeeper 節點從 dc-2 新增至 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-1 共用檔案 (當中包含 dc-2 的 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 節點執行 rebuild 指令,並指定 dc-1 的區域名稱:
    > /opt/apigee/apigee-cassandra/bin/nodetool -h cassIP 重新建構 dc-1
  6. 在 dc-2 上,在適當的節點上安裝管理伺服器:
    > /opt/apigee/apigee-setup/bin/setup.sh -p ms -f configFile2
  7. 在 dc-2 的管理伺服器節點中,安裝 apigee-provision,這個 API 會安裝 apigee-adminapi.sh 公用程式:
    > /opt/apigee/apigee-service/bin/apigee-service apigee-provision 安裝
  8. 在 dc-2 上,在適當的節點中安裝路徑和訊息處理器:
    > /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 節點是待命伺服器。

    注意:如果 dc-1 已設定為有兩個 Postgres 節點在主要/待命模式下執行,則做為此程序的一部分,請使用 dc-1 中的現有主 Postgres 節點做為主要執行個體,並使用 dc-2 中的 Postgres 節點做為待命伺服器。在這個程序的後續部分中,您將在 dc-1 中取消註冊現有的 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 伺服器清單 -r dc-1 -p analytics -t postgres-server --admin adminEmail --pwd adminPword --host localhost

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

      注意:如果 dc-1 設為有兩個 Postgres 節點在主要/待命模式中執行,輸出結果中就會顯示兩個 IP 位址和 UUID。儲存兩個 UUID。 您應可透過 IP 判斷要用於主要執行個體的 UUID,以及要用於待命節點的 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

      這個指令會傳回「名稱」欄位中的分析群組名稱,以及「Consumer-groups」欄位中的消費者群組名稱。
    4. dc-1 的管理伺服器節點上,將現有的 Postgres 伺服器從分析群組中移除:
      1. 從 consumer-group 中移除 Postgres 節點:
        > apigee-adminapi.sh analytics groups - 移除 -g axgroup-001 -c consumer-group-001 -c consumer-group-001 -u <使用者群組> - <管理員名稱> - <伺服器> UID <管理員名稱>.<伺服器名稱>.<管理員 > 位於 UID1。 dcPword 使用者仍為 localhost 2 由 localhost 2 使用。


      2. 將 Postgres 節點從數據分析群組中移除:
        > apigee-adminapi.sh analytics groups postgres_server remove -g axgroup-001 -u UUID -Y --admin adminEmail --pwd adminPword --host localhost2 localhost2 含有兩個 Postgres 節點。


    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 --host2 localhost
        其中 UUID_1 對應至主要節點。
      2. 將 PG 伺服器新增至 consumer-group 做為主要/standby:
        > apigee-adminapi.sh analytics groups consumer_groups datastores add -g axgroup-001 -c consumer-group-001 -u "UUID_1,UUID_2" --admin adminPword --pwd adminPword --pwd
    6. dc-2 中的 Qpid 伺服器新增至數據分析群組:
      1. 在 dc-1 的管理伺服器節點上,取得 dc-2 中 Qpid 節點的 UUID:
        > apigee-adminapi.sh 伺服器清單 -r dc-2 -p central -t qpid-server --admin adminEmail --pwd adminPword --host 傳回資料於 UPUID。

        儲存這些值。
      2. 在 dc-1 的管理伺服器節點上,將 Qpid 節點新增至 Analytics (分析) 群組 (執行這兩項指令):
        >apigee-adminapi.sh Analytics (分析) 群組 qpid_server add -g axgroup-001 -u "UUID_1 --manage2 localhost-qserver API"UUID_1 --pwd ApigeePword --pwd adminPword --host2word

      3. 在 dc-1 的管理伺服器節點上將 Qpid 節點新增至消費端群組 (執行這兩項指令):
        > apigee-adminapi.sh analytics groups consumer_groups 消費者 add -g axgroup-001 -c consumer-group-001 -u "UUID_1" --admin localhost-groups-2202292.02.22522529.2522572

    7. 從 dc-1 中取消註冊並刪除舊的 Postgres 待命伺服器:
      1. 取消註冊現有的 dc-1 Postgres 待命伺服器:
        > apigee-adminapi.sh 伺服器取消註冊 -u UUID -r dc-1 -p analytics -t postgres-server -Y --admin adminEmail --pwd adminPword --host localhost-1

      2. 刪除現有的 dc-1 Postgres 待命伺服器:
        注意:這個指令不會解除安裝 Postgres 伺服器節點。只會從 Edge 節點清單中移除。如有需要,您之後可以視需要從節點解除安裝 Postgres。
        > apigee-adminapi.sh 伺服器刪除 -u UUID --admin adminEmail --pwd adminPword --host localhost
  13. 使用正確的複製係數來更新兩個資料中心的 Cassandra 索引鍵空間。您在任一資料中心的任何 Cassandra 伺服器上只需執行這個步驟一次:

    注意:以下所有指令均將複製係數設為「3」,代表叢集中的三個 Cassandra 節點。視需要修改安裝值。
    1. 啟動 Cassandra cqlsh 公用程式:
      > /opt/apigee/apigee-cassandra/bin/cqlsh cassandraIP
    2. 請在「cqlsh>」提示中執行下列 CQL 指令,以便設定 Cassandra 金鑰空間的複製層級:
      1. cqlsh> ALTER KEYSPACE "identityzone" WITH 複製功能 = { 'class': 'NetworkTopologyStrategy', 'dc-1': '3','dc-2': '3' };
      2. cqlsh> ALTER KEYSPACE "system_traces" WITH 複製功能 = { 'class': 'NetworkTopologyStrategy', 'dc-1': '3','dc-2': '3' };
      3. 使用下列指令查看索引鍵空間:
        cqlsh> select * from system.schema_keyspaces;
      4. 結束 cqlsh:
        cqlsh> 結束
  14. 對 dc-1 的所有 Cassandra 節點執行以下 nodetool 指令,直到釋放記憶體:
    > /opt/apigee/apigee-cassandra/bin/nodetool -h cassandraIP 清理
  15. 針對您要跨資料中心支援的每個機構和每個環境:
    1. 在 dc-1 的管理伺服器節點上,將新的 MP_POD 新增至機構:
      > apigee-adminapi.sh orgs Pod add -o orgName -r dc-2 -p gateway-2 --admin adminEmail --pwd adminPword --host 2

    2. 將新的訊息處理器新增至機構和環境:
      1. 在 dc-2 的管理伺服器節點上,取得 dc-2 中訊息處理器節點的 UUID:
        > apigee-adminapi.sh 伺服器清單 -r dc-2 -p gateway-2 -t message-processor --admin adminEmail --pwd adminPword --host localhost 傳回的資料。

        儲存這些值。
      2. 在 dc-1 的管理伺服器節點上,針對 dc-2 中的每個訊息處理器,將訊息處理器新增至機構的環境:
        > apigee-adminapi.sh orgs envs 伺服器 add -o localhostName -e envName -u UUID --admin adminEmail --adminword
    3. 在 dc-1 的管理伺服器節點上,查看以下機構:
      > apigee-adminapi.sh orgs apis Deployment -o orgName -a apiProxyName --admin adminEmail --pwd adminPword --host localhost

      其中 apiProxyName 是部署於機構中的 API Proxy 名稱。