如果在更新至 Edge 4.16.09 時發生錯誤,您可以復原導致錯誤的元件,然後再次嘗試更新。舉例來說,如果 Postgres 9.4 更新失敗,您可以只復原 Postgres 節點,然後再次嘗試更新。
您可能需要在以下兩種情況下執行復原:
- 復原至舊版本。例如從 4.16.09 降級至 4.16.05。
- 復原至相同版本中的舊版。
請按照下列程序,為這兩種情況執行復原作業。
誰可以執行復原
執行復原作業的使用者應與原先更新 Edge 的使用者相同,或以 root 身分執行的使用者。
根據預設,Edge 元件會以「apigee」使用者身分執行。在某些情況下,您可能會以不同使用者身分執行 Edge 元件。舉例來說,如果路由器必須存取特殊權限通訊埠 (例如低於 1000 的通訊埠),則必須以 root 身分或具備這些通訊埠存取權的使用者身分執行路由器。或者,您也可以以某個使用者的身分執行一個元件,並以另一個使用者的身分執行另一個元件。
可復原的元件
執行復原作業時,請注意下列情況:
- 下列五個 Edge 元件共用程式碼。因此,如要復原節點上的五個元件中的任何一個,您必須復原節點上安裝的五個元件中的任何一個。舉例來說,如果您在節點上安裝了管理伺服器、路由器和訊息處理器,則必須復原這三個元件,才能復原其中任何一個元件。
共用程式碼的五個元件如下:- 管理伺服器
- 路由器
- 訊息處理器
- Qpid 伺服器
- Postgres 伺服器
- 如果您是從 Edge 4.16.01 更新,請勿復原 Cassandra。這個 Edge 版本包含更新版 Cassandra。如果您復原任何元件,請將 Cassandra 保持在 4.16.09 版本。
- 這個版本不含新版 qpidd。因此,您不必復原 qpidd。
復原 4.16.09
本節說明將 Edge 4.16.09 復原至先前版本的程序。本節分為兩個部分:
- 將 Postgres 更新復原至 9.4 版
每個更新程序的最後一個部分,是將 Postgres 節點更新至 9.4 版。如果更新失敗,您可以使用這項程序復原更新。 - 復原所有其他 Edge 元件
請按照這項程序復原任何其他 Edge 元件。
如要復原 Postgres 9.4 更新
如要在主備設定中更新 Postgres 時復原 Postgres 更新,請按照下列步驟操作:
- 將新的待命節點升級為 Postgres 主要節點。新的 Postgres 主節點版本會與先前的 Edge 安裝版本相同。
- 將舊的待命節點設為新主要節點的待命節點。舊的待命節點會與先前的 Edge 安裝版本相同。
- 向數據分析和消費者群組註冊新的主要和待命節點。
復原完成後,就不再需要舊的主節點。接著,您可以停用舊的主節點。
- 確認新的待命 Postgres 節點正在運作:
> /opt/apigee/apigee-service/bin/apigee-all status
如果 Postgres 未運作,請啟動:
> /opt/apigee/apigee-service/bin/apigee-all start - 確認舊主節點和舊待命節點上的 Postgres 已停止:
> /opt/apigee/apigee-service/bin/apigee-all status
如果 Postgres 正在執行,請停止:
> /opt/apigee/apigee-service/bin/apigee-service edge-postgres-server stop
> /opt/apigee/apigee-service/bin/apigee-service apigee-postgresql stop - 如果已安裝,請在舊的待命節點上啟動 Qpid:
> /opt/apigee/apigee-service/bin/apigee-service edge-qpid-server start
注意:在許多設定中,舊的待命節點只會託管 Postgres,而不會託管 Qpid。 - 將新的待命節點升級為 Postgres 主要節點:
- 將新的待命節點升級為「新主節點」:
> apigee-service apigee-postgresql promote-standby-to-master new_standby_IP
如果出現提示訊息,請輸入「apigee」使用者的 Postgres 密碼,預設值為「postgres」。 - 編輯用於安裝目前 Edge 版本的設定檔,指定下列項目:
# 新主要執行個體的 IP 位址:
PG_MASTER=new_standby_IP
# 舊待命節點的 IP 位址
PG_STANDBY=old_standby_IP - 設定新的主要節點:
> /opt/apigee/apigee-service/bin/apigee-service apigee-postgresql setup-replication-on-master -f configFile
- 將新的待命節點升級為「新主節點」:
- 重建舊的待命節點:
- 編輯用於安裝目前 Edge 版本的設定檔,指定下列項目:
# 新主要執行個體 的 IP 位址:
PG_MASTER=new_standby_IP
# 舊待命執行個體 節點的 IP 位址
PG_STANDBY=old_standby_IP - 移除舊待命節點上的資料目錄:
> cd /opt/apigee/data/apigee-postgresql/pgdata
> rm -rf * - 重新設定舊的待命節點,使其成為新主節點的待命節點:
> /opt/apigee/apigee-service/bin/apigee-service apigee-postgresql setup-replication-on-standby -f configFile - 確認 Postgres 在舊的待命節點上執行:
> /opt/apigee/apigee-service/bin/apigee-all status
如果未執行,請啟動:
> /opt/apigee/apigee-service/bin/apigee-service edge-postgres-server start
- 編輯用於安裝目前 Edge 版本的設定檔,指定下列項目:
- 查看新主節點上的 /opt/apigee/apigee-postgresql/conf/pg_hba.conf 檔案,確認已新增備用節點。
- 在管理伺服器上執行下列指令,查看目前的數據分析和消費者群組資訊:
> curl -u sysAdminEmail:password http://<ms_IP>:8080/v1/analytics/groups/ax
這項指令會在 name 欄位中傳回數據分析群組名稱,並在 consumer-groups 下方的 name 欄位中傳回消費者群組名稱。此外,也會在 postgres-server 欄位和 datastores 欄位中傳回舊 Postgres 主要和待命節點的 UUID。您應該會看到以下格式的輸出內容:
{
"name" : "axgroup-001",
"properties" : {
},
"scopes" : [ "VALIDATE~test", "sgilson~prod" ],
"uuids" : {
"qpid-server" : [ "8381a053-433f-4382-bd2a-100fd37a1592", "4b6856ec-ef05-498f-bac6-ef5f0d5f6521" ],
"postgres-server" : [ "ab1158bd-1d59-4e2a-9c95-24cc2cfa6edc:27f90844-efab-4b32-8a23-8f85cdc9a256" ]
},
"consumer-groups" : [ {
"name" : "consumer-group-001",
"consumers" : [ "8381a053-433f-4382-bd2a-100fd37a1592", "4b6856ec-ef05-498f-bac6-ef5f0d5f6521" ],
"datastores" : [ "ab1158bd-1d59-4e2a-9c95-24cc2cfa6edc:27f90844-efab-4b32-8a23-8f85cdc9a256" ],
"properties" : { }
} ],
"data-processors" : {
}
} - 在舊主節點上執行下列 cURL 指令,取得舊主節點的 UUID 位址:
> curl -u sysAdminEmail:password http://<node_IP>:8084/v1/servers/self
您應該會在輸出內容結尾看到節點的 UUID,格式如下:
"type" : [ "postgres-server" ],
"uUID" : "599e8ebf-5d69-4ae4-aa71-154970a8ec75"
注意:edge-postgres-server 服務必須處於執行中狀態。如果 Postgres 伺服器未執行,您可以在管理伺服器上執行下列指令,判斷 UUID:
> curl -u sysAdminEmail:password http://<ms_IP>:8080/v1/servers?pod=analytics
這個指令的輸出內容會列出每個 Postres 節點 IP 位址的 UUID。 - 重複上述步驟,取得舊待命節點和新主要節點的 IP 位址。
- 從消費者群組中移除舊的主要和待命節點:
> curl -u sysAdminEmail:password -X DELETE "http://<ms_IP>:8080/v1/analytics/groups/ax/axgroup-001/consumer-groups/consumer-group-001/datastores/masterUUID,standbyUUID" -v
其中 axgroup-001 和 consumer-group-001 是數據分析和消費者群組的預設名稱。 masterUUID,standbyUUID 的順序與您在上方查看目前數據分析和消費者群組資訊時顯示的順序相同。您可能需要將其指定為 standbyUUID,masterUUID。
consumer-groups 的 datastores 屬性現在應為空白。 - 從數據分析群組中移除舊的主要和待命節點:
> curl -u sysAdminEmail:password -X DELETE "http://<ms_IP>:8080/v1/analytics/groups/ax/axgroup-001/servers?uuid=masterUUID,standbyUUID&type=postgres-server" -v
uuids 下方的 postgres-server 屬性現在應為空白。 - 向數據分析和消費者群組註冊新的 PG 主要和待命節點:
> curl -u sysAdminEmail:password -X POST -H "Content-Type: application/json" -d '' "http://<ms_IP>:8080/v1/analytics/groups/ax/axgroup-001/servers?uuid=masterUUID,standbyUUID&type=postgres-server" -v
> curl -u sysAdminEmail:password -X POST -H "Content-Type: application/json" -d '' "http://<ms_IP>:8080/v1/analytics/groups/ax/axgroup-001/consumer-groups/consumer-group-001/datastores?uuid=masterUUID,standbyUUID" -v - 驗證數據分析群組:
> curl -u sysAdminEmail:password http://<ms_IP>:8080/v1/analytics/groups/ax
您應該會看到數據分析群組和消費者群組中列出的新主要和待命節點 UUID。 - 重新啟動 Edge Management Server:
> /opt/apigee/apigee-service/bin/apigee-service edge-management-server restart - 重新啟動所有 Qpid 伺服器:
> /opt/apigee/apigee-service/bin/apigee-service edge-qpid-server restart - 重新啟動所有 Postgres 伺服器:
> /opt/apigee/apigee-service/bin/apigee-service edge-postgres-server restart - 在兩部伺服器上執行下列指令碼,驗證複製狀態。系統應在兩部伺服器上顯示相同的結果,確保複製成功:
在新主伺服器上執行:
> /opt/apigee/apigee-service/bin/apigee-service apigee-postgresql postgres-check-master
確認系統顯示該伺服器為主伺服器。
在舊的待命節點上:
> /opt/apigee/apigee-service/bin/apigee-service apigee-postgresql postgres-check-standby
確認系統顯示為待命狀態。 - 提出多個 API 要求後,請重複執行上一個步驟,確保節點已同步。
- 按照「將 Apigee Edge 更新至 4.16.09」中的程序,停用舊的 Postgres 主要執行個體。
注意:如果舊的主要節點執行 Qpid,您可以讓該伺服器繼續執行 Qpid。確認該服務正在執行。如果沒有,請啟動:
> /opt/apigee/apigee-service/bin/apigee-service edge-management-server start
或者,您也可以從舊主節點解除安裝 Qpid,並在新主節點上安裝 Qpid,如下所述。解除安裝 Qpid 後,即可停用舊的主節點。
從舊主節點解除安裝 Qpid,並在新主節點安裝 Qpid
請按照下列程序,從舊主節點解除安裝 Qpid,並在新的主節點上安裝:
- 在所有訊息處理器上執行下列指令,禁止訊息處理器存取舊主節點上的 Qpid 通訊埠 5672:
> iptables -A OUTPUT -p tcp -d 10.233.147.20 --dport 5672 -j DROP - 執行下列指令,確保 Qpid 訊息佇列為空白。Qpid 必須處理完所有待處理訊息,才能解除安裝:
> qpid-stat -q
這個指令會顯示一個表格,其中包含 msg、msgIn 和 msgOut 的計數。當 msg=0 且 msgIn=msgOut 時,所有訊息都會處理完畢。 - 在舊主節點上執行下列指令,判斷舊主節點上 Qpid 伺服器的 UUID。請儲存這項資訊,以便在後續程序中使用:
> curl -u sysAdminEmail:password http://<node_IP>::8083/v1/servers/self - 停止舊主節點上的 Qpid:
> /opt/apigee/apigee-service/bin/apigee-service edge-qpid-server stop
> /opt/apigee/apigee-service/bin/apigee-service apigee-qpidd stop - 解除安裝 Qpid 伺服器:
> /opt/apigee/apigee-service/bin/apigee-service edge-qpid-server uninstall
> /opt/apigee/apigee-service/bin/apigee-service apigee-qpidd uninstall - 從數據分析和消費者群組中移除舊的 Qpid 伺服器:
> curl -u sysAdminEmail:password -X DELETE -H "Content-Type: application/json" -d '' "http://<ms_IP>:8080/v1/analytics/groups/ax/axgroup-001/consumer-groups/consumer-group-001/consumers/qpid_UUID" -v
> curl -u sysAdminEmail:password -X DELETE "http://<ms_IP>:8080/v1/analytics/groups/ax/axgroup-001/servers?uuid=qpid_UUID&type=qpid-server" -v - 從 Zookeeper 移除舊的 Qpid 伺服器:
> curl -u sysAdminEmail:password -X DELETE http://<ms_IP>:8080/v1/servers/qpid_UUID - 在新主節點上安裝 Qpid:
> /opt/apigee/apigee-setup/bin/setup.sh -p qs -f configFile - 在新主節點上執行下列指令,判斷新主節點上 Qpid 伺服器的 UUID。請儲存這項資訊,以便在後續程序中使用:
> curl -u sysAdminEmail:password http://<node_IP>::8083/v1/servers/self - 向數據分析和消費者群組註冊新的 Qpid 伺服器:
> curl -u sysAdminEmail:password -X POST -H "Content-Type: application/json" -d '' "http://<ms_IP>:8080/v1/analytics/groups/ax/axgroup-001/servers?uuid=qpid_UUID&type=qpid-server" -v
> curl -u sysAdminEmail:password -X POST -H "Content-Type: application/json" -d '' "http://<ms_IP>:8080/v1/analytics/groups/ax/axgroup-001/consumer-groups/consumer-group-001/consumers?uuid=qpid_UUID" -v - 重新啟動所有訊息處理器:
> /opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart - 在新 Qpid 伺服器上執行下列指令,確認佇列已建立:
> qpid-stat -q
確認 Qpid 伺服器處理訊息時,msg、msgIn 和 msgOut 會更新。
如要復原 4.16.09 的個別元件
執行復原作業時,您必須下載目前 Edge 版本的 bootstrap.sh 檔案:
- 如要復原至 4.16.05,請下載 bootstrap_4.16.05.sh
- 如要復原至 4.16.01,請下載 bootstrap.sh
針對託管要復原元件的每個節點:
- 停止要復原的元件:
-
如要復原節點上的下列任一元件,必須停止所有元件:Management Server、Router、訊息處理器、Qpid Server 或 Postgres Server:
- > apigee-service edge-management-server stop
- > apigee-service edge-router stop
- > apigee-service edge-message-processor stop
- > apigee-service edge-qpid-server stop
- > apigee-service edge-postgres-server stop
-
如要復原節點上的任何其他元件,請只停止該元件:
- > apigee-service comp stop
-
如要復原節點上的下列任一元件,必須停止所有元件:Management Server、Router、訊息處理器、Qpid Server 或 Postgres Server:
- 如要復原營利功能,請從所有管理伺服器和訊息處理器節點解除安裝:
> apigee-service edge-mint-gateway uninstall - 解除安裝元件,在節點上復原:
- 如果您要復原節點上的下列任何元件,請將其全部解除安裝:Management Server、Router、訊息處理器、Qpid Server 或 Postgres Server:
> apigee-service edge-gateway uninstall - 如要復原節點上的任何其他元件,請只解除安裝該元件:
> apigee-service comp uninstall
- 如果您要復原節點上的下列任何元件,請將其全部解除安裝:Management Server、Router、訊息處理器、Qpid Server 或 Postgres Server:
- 如要復原路由器,則必須刪除 /opt/nginx/conf.d 的內容:
> cd /opt/nginx/conf.d
> rm -rf * -
如要復原元件:
- 解除安裝 4.16.09 版的 apigee-setup:
> /opt/apigee/apigee-service/bin/apigee-service apigee-setup uninstall - 下載 4.16.01 或 4.16.05 版本的 bootstrap.sh:
4.16.01:
> curl https://software.apigee.com/bootstrap.sh -o /tmp/bootstrap.sh
4.16.05:
> curl https://software.apigee.com/bootstrap_4.16.05.sh -o /tmp/bootstrap.sh - 安裝 4.16.01 或 4.16.05 apigee-service 公用程式和依附元件:
> sudo bash /tmp/bootstrap.sh apigeeuser=uName apigeepassword=pWord
其中 uName 和 pWord 是您從 Apigee 取得的使用者名稱和密碼。如果省略 pWord,系統會提示您輸入。 - 安裝 4.16.01 或 4.16.05 版的 apigee-setup:
> /opt/apigee/apigee-service/bin/apigee-service apigee-setup install - 安裝 4.16.01 或 4.16.05 版元件:
> /opt/apigee/apigee-setup/bin/setup.sh -p comp -f configFile
其中 comp 是要安裝的元件,configFile 是 4.16.01 或 4.16.05 設定檔。
- 解除安裝 4.16.09 版的 apigee-setup:
-
如要將元件復原至 4.16.05 版本的特定版本:
- 下載特定元件版本:
> /<instal_dir>/apigee/apigee-service/bin/apigee-service comp-version install
其中 comp-version 是要安裝的元件和版本。例如:
> /<instal_dir>/apigee/apigee-service/bin/apigee-service edge-ui-4.16.05-0.0.3649 install
如果您使用的是 Apigee 線上存放區,可以使用下列指令判斷可用的元件版本:
> yum --showduplicates list comp
例如:
> yum --showduplicates list edge-ui - 使用 apigee-setup 安裝元件:
> /<install_dir>/apigee/apigee-setup/bin/setup.sh -p comp -f configFile
例如:
> /<install_dir>/apigee/apigee-setup/bin/setup.sh -p ui -f configFile
請注意,您只需在安裝時指定元件名稱。
- 下載特定元件版本:
如果復原時發生問題,請與 Apigee 支援團隊聯絡。