Private Cloud v4.18.01 版
本文說明如何將資料中心 (又稱為區域) 新增至現有資料中心。
新增資料中心前的考量事項
安裝新增資料中心之前,您必須瞭解如何在各資料中心中設定 OpenLDAP、ZooKeeper、Cassandra 和 Postgres 伺服器。您也必須確保兩個資料中心的節點之間已開啟必要的通訊埠。
- OpenLDAP
每個資料中心都有專屬的 OpenLDAP 伺服器,而且已設定複製功能。安裝新資料中心時,您必須設定 OpenLDAP 使用複寫功能,並重新設定現有資料中心中的 OpenLDAP 伺服器,以便使用複寫功能。 - ZooKeeper
對於兩個資料中心的 ZK_HOSTS 屬性,請以相同順序指定兩個資料中心所有 ZooKeeper 節點的 IP 位址或 DNS 名稱,並使用「:observer」修飾符標記任何節點。不含「:observer」修飾符的節點稱為「voters」。設定中必須有奇數個「投票者」。
在這個拓樸中,主機 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 節點都必須有後置字串 ':<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 中取消註冊舊的 Standby 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:新的資料中心
- 在 dc-1 上,使用包含 dc-2 中 Cassandra 節點的新 dc-1 設定檔,在原始 Cassandra 節點上重新執行 setup.sh:
/opt/apigee/apigee-setup/bin/setup.sh -p ds -f configFile1 - 在 dc-1 上,在 Management Server 節點上重新執行 setup.sh:
>/opt/apigee/apigee-setup/bin/setup.sh -p ms -f configFile1 - 在 dc-2 上,請在所有節點上安裝 apigee-setup。詳情請參閱「安裝 Edge apigee-setup 公用程式」。
- 在 dc-2 上,在適當的節點上安裝 Cassandra 和 ZooKeeper:
/opt/apigee/apigee-setup/bin/setup.sh -p ds -f configFile2 - 在 dc-2 上,針對所有 Cassandra 節點執行重建指令,並指定 dc-1 的區域名稱:
> /opt/apigee/apigee-cassandra/bin/nodetool -h cassIP rebuild dc-1 - 在 dc-2 上,在適當的節點上安裝管理伺服器:
> /opt/apigee/apigee-setup/bin/setup.sh -p ms -f configFile2 - 在 dc-2 的管理伺服器節點上,安裝 apigee-provision,以便安裝 apigee-adminapi.sh 公用程式:
> /opt/apigee/apigee-service/bin/apigee-service apigee-provision install - 在 dc-2 上,請在適當的節點上安裝路由和訊息處理器:
> /opt/apigee/apigee-setup/bin/setup.sh -p rmp -f configFile2 - 在 dc-2 上,在適當的節點上安裝 Qpid:
> /opt/apigee/apigee-setup/bin/setup.sh -p qs -f configFile2 - 在 dc-2 上,在適當的節點上安裝 Postgres:
> /opt/apigee/apigee-setup/bin/setup.sh -p ps -f configFile2 - 設定 Postgres 節點的 Postgres 主要執行個體/待命。dc-1 中的 Postgres 節點是主節點,dc-2 中的 Postgres 節點是待命伺服器。
注意:如果 dc-1 已設定為在主/備用模式下執行兩個 Postgres 節點,請在這個程序中使用 dc-1 中現有的 Postgres 主節點做為主伺服器,並使用 dc-2 中的 Postgres 節點做為備用伺服器。稍後在這個程序中,您將在 dc-1 中取消註冊現有的 Postgres 待命伺服器。- 在 dc-1 的主要節點上,編輯設定檔來設定:
PG_MASTER=IP 或 DC1 主節點的 DNS
PG_STANDBY=IP 或 DC2 備援節點的 DNS - 啟用新主要執行個體的複製功能:
> /opt/apigee/apigee-service/bin/apigee-service apigee-postgresql setup-replication-on-master -f configFIle - 在 dc-2 的待命節點上,編輯以下設定檔進行設定:
PG_MASTER=IPorDNSofDC1Master
PG_STANDBY=IPorDNSofDC2Standby - 在 dc-2 的待命節點上,停止伺服器,然後刪除任何現有的 Postgres 資料:
> /opt/apigee/service/bin/apigee-service apigee-postgresql stop
> rm -rf /opt/apigee/data/apigee-postgresql/
注意:您可以先備份這項資料再刪除。 - 在 dc-2 中設定待機節點:
> /opt/apigee/apigee-service/bin/apigee-service apigee-postgresql setup-replication-on-standby -f configFile
- 在 dc-1 的主要節點上,編輯設定檔來設定:
- 在 dc-1 上更新數據分析設定,並設定機構。
- 在 dc-1 的 Management Server 節點上,取得 Postgres 節點的 UUID:
> apigee-adminapi.sh server list -r dc-1 -p analytics -t postgres-server --admin adminEmail --pwd adminPword --host localhost
UUID 會顯示在傳回的資料結尾處。儲存該值。
注意:如果 dc-1 已設定為在主/待機模式下執行兩個 Postgres 節點,輸出內容中就會顯示兩個 IP 位址和 UUID。儲存兩個 UUID。您應該可以根據 IP 判斷哪個 UUID 是主要節點,哪個是待命節點。 - 在 dc-2 的管理伺服器節點上,取得 Postgres 節點的 UUID,如上一個步驟所示。儲存該值。
- 在 dc-1 的管理伺服器節點中,決定分析和消費者群組的名稱。下方的許多指令都需要這項資訊。
預設情況下,分析群組的名稱為 axgroup-001,消費者群組的名稱為 consumer-group-001。在區域的靜默設定檔中,您可以使用 AXGROUP 屬性設定分析群組的名稱。
如果您不確定分析和消費者群組的名稱,請使用以下指令顯示這些名稱:
> apigee-adminapi.sh analytics groups list --admin adminEmail --pwd adminPword --host localhost
這項指令會在名稱欄位中傳回分析群組名稱,並在消費者群組欄位中傳回消費者群組名稱。 - 在 dc-1 的管理伺服器節點中,從 Analytics 群組中移除現有的 Postgres 伺服器:
- 從 consumer-group 移除 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 - 將 Postgres 節點從數據分析群組中移除:
> apigee-adminapi.sh analytics groups postgres_server remove -g axgroup-001 -u UUID -Y --admin adminEmail --pwd adminPword --host localhost localhost-ai google dc-server 為 UID
- 從 consumer-group 移除 Postgres 節點:
-
在 dc-1 的 Management Server 節點上,將新的主要執行個體/待命 Postgres 伺服器新增至數據分析群組:
- 將兩個 Postgres 伺服器新增至數據分析群組:
> apigee-adminapi.sh analytics groups postgres_server add -g axgroup-001 -u "UUID_1,UUID_2" --admin adminEmail --pwd adminPword --pwd adminPword --host_dc2 在主要節點中,是 UUID_1 節點,其中 UUID_1 對應到主要節點。 - 將 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
- 將兩個 Postgres 伺服器新增至數據分析群組:
- 將 dc-2 中的 Qpid 伺服器新增至 Analytics 群組:
- 在 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 會顯示在傳回資料的結尾。儲存這些值。 - 在 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 - 在 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
- 在 dc-1 的管理伺服器節點上,取得 dc-2 中 Qpid 節點的 UUID:
- 從 dc-1 取消註冊並刪除舊的 Postgres 待命伺服器:
- 註銷現有的 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 節點。 - 刪除現有的 dc-1 Postgres 待命伺服器:
注意:這個指令不會解除安裝 Postgres 伺服器節點。只會將其從 Edge 節點清單中移除。之後,您可以視需要從節點解除安裝 Postgres。
> apigee-adminapi.sh 伺服器刪除 -u UUID --admin adminEmail --pwd adminPword --host localhost
- 註銷現有的 dc-1 Postgres 待命伺服器:
- 在 dc-1 的 Management Server 節點上,取得 Postgres 節點的 UUID:
- 請為這兩個資料中心更新 Cassandra 鍵值空間,並設定正確的複製因子。在任一資料中心的任何 Cassandra 伺服器上執行這個步驟一次即可:
注意:下列所有指令都會將複製因數設為「3」,表示叢集中有三個 Cassandra 節點。視安裝需求修改這個值。- 啟動 Cassandra cqlsh 公用程式:
> /opt/apigee/apigee-cassandra/bin/cqlsh cassandraIP - 在「cqlsh>」提示訊息中執行下列 CQL 指令,設定 Cassandra 鍵值空間的複製層級:
- cqlsh>ALTER KEYSPACE "identityzone" WITH 複製 = { 'class': 'NetworkTopologyStrategy', 'dc-1': '3','dc-2': '3' };
- cqlsh> ALTER KEYSPACE "system_traces" WITH replication = { 'class': 'NetworkTopologyStrategy', 'dc-1': '3','dc-2': '3' };
- 使用下列指令查看索引鍵空間:
cqlsh> select * from system.schema_keyspaces; - 退出 cqlsh:
cqlsh> exit
- 啟動 Cassandra cqlsh 公用程式:
- 對 dc-1 中的所有 Cassandra 節點執行下列 nodetool 指令:
> /opt/apigee/apigee-cassandra/bin/nodetool -h cassandraIP 清除所用資源 - 針對您要在各資料中心支援的每個機構和環境:
- 在 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 是 dc-2 設定檔中 MP_POD 屬性定義的閘道 pod 名稱。 - 將新的訊息處理工具新增至組織和環境:
- 在 dc-2 的 Management Server 節點上,取得 dc-2 中訊息處理器節點的 UUID:
> apigee-adminapi.sh server list -r dc-2 -p gateway-2 -t message-processor --admin adminEmail --pwd adminPword --host localhost 資料會在 UUID 結束。
儲存這些值。 - 在 dc-1 的 Management Server 節點上,為 dc-2 中的每個訊息處理器,將訊息處理器新增至機構的環境:
> apigee-adminapi.sh orgs envs server add -o orgName -e envName -u envName --pwd localhostPword --pwd localhostPword --pwd adminPword --pwd adminPword
- 在 dc-2 的 Management Server 節點上,取得 dc-2 中訊息處理器節點的 UUID:
- 在 dc-1 的管理伺服器節點上,檢查機構:
> apigee-adminapi.sh orgs apis deployments -o orgName -a apiProxyName --admin adminEmail --pwd adminPword --host localhost
其中 apiProxyName 是機構中部署的 API Proxy 名稱。
- 在 dc-1 的管理伺服器節點上,將新的 MP_POD 新增至組織: