如果在更新至 Edge 4.53.00 時發生錯誤,您可以回溯導致錯誤的元件,然後再次嘗試更新。
您可以將 Edge 4.53.00 降級至以下次要版本:
- 版本 4.52.02
回溯版本的過程中,您可能需要回溯所有已升級的元件。此外,在將 Cassandra 回溯至 4.52.02 版時,請特別考量以下事項。
您可能會在下列兩種情況下執行回溯:
- 還原至先前的重大或次要版本。例如從 4.53.00 變更為 4.52.02。
- 回溯至同一版本中的先前修補程式版本。例如從 4.53.00.01 變更為 4.53.00.00。
詳情請參閱 Apigee Edge 發布程序。
回溯順序
元件應以相反的順序進行回溯,但管理伺服器應在 Cassandra 之後回溯。
Private Cloud 4.53.00 的一般回溯順序如下:
- 回退 Postgres、Qpid 和其他與數據分析相關的元件
- 回溯路由器和訊息處理器
- 回溯 Cassandra、Zookeeper
- Rollback Management 伺服器
舉例來說,假設您已將整個 Cassandra 叢集、所有管理伺服器和幾個 RMP 從 4.52.02 版升級至 4.53.00 版,並希望回溯。在這種情況下,您需要:
- 逐一回復所有 RMP
- 使用備份還原整個 Cassandra 叢集
- 逐一回溯 Edge Management 伺服器節點
誰可以執行回溯
執行回溯的使用者應與最初更新 Edge 的使用者相同,或是以 root 身分執行的使用者。
根據預設,Edge 元件會以「apigee」使用者身分執行。在某些情況下,您可能會以不同的使用者身分執行 Edge 元件。舉例來說,如果 Router 必須存取特權連接埠 (例如 1000 以下的連接埠),則必須以 root 身分或具有這些連接埠存取權的使用者身分執行 Router。或者,您可以以一個使用者的身分執行一個元件,以另一個使用者的身分執行另一個元件。
含有通用程式碼的元件
下列 Edge 元件共用通用程式碼。因此,如要回溯節點上的任何一個元件,您必須回溯該節點上的所有元件。
edge-management-server
(管理伺服器)edge-message-processor
(訊息處理器)edge-router
(路由器)edge-postgres-server
(Postgres 伺服器)edge-qpid-server
(Qpid 伺服器)
舉例來說,如果您在節點上安裝了管理伺服器、路由器和訊息處理器,則必須將這三者全部都回復,才能回復其中任何一個。
Cassandra 的回溯
在特定節點上執行 Cassandra 的主要升級作業時,Cassandra 會修改該節點上儲存資料的結構定義。因此,無法直接在原地回復。
復原情境
在 Private Cloud 4.52.02 的其他元件中,Cassandra 4.0.X 與 Edge for Private Cloud 4.53.00 相容。
請參閱下表,瞭解可用的各種回溯策略:
情境 | 復原策略 |
---|---|
單一資料中心,部分 Cassandra 節點已升級 | 使用備份 |
單一資料中心,所有 Cassandra 節點皆已升級 | 請勿回復 Cassandra。其他元件則可還原。 |
單一資料中心,所有節點 (Cassandra 和其他節點) 皆已升級 | 請勿回復 Cassandra。其他元件則可還原。 |
多個資料中心,其中一個資料中心的部分節點已升級 | 從現有資料中心重新建構 |
多個資料中心,部分資料中心中的所有 Cassandra 節點升級 | 從現有資料中心重新建構 |
多個資料中心,升級最後一個資料中心的 Cassandra 節點 | 請嘗試完成升級。如果無法執行,請使用備份回溯 1 個 DC。從已復原的 DC 重新建構剩餘的 DC。 |
多個資料中心,所有 Cassandra 節點都已升級 | 請勿回復 Cassandra。其他元件則可還原。 |
多個 DC,所有節點 (Cassandra 和其他) 皆已升級 | 請勿回復 Cassandra。其他元件則可還原。 |
一般注意事項
考慮回溯時,請注意下列事項:
- 執行階段或管理元件的回溯:如果您想將 edge-management-server、edge-message-processor 或任何非 Cassandra 元件回溯至 Private Cloud 4.52.02 版,建議您不要回溯 Cassandra。與 Private Cloud 4.53.00 一併提供的 Cassandra 與 Edge for Private Cloud 4.52.02 的所有非 Cassandra 元件相容。在 Cassandra 仍為 4.0.13 版時,您可以使用本文所列方法回溯非 Cassandra 元件。
- 在整個 Cassandra 叢集升級至 4.0.X 後回復:如果整個 Cassandra 叢集升級至 4.0.X 版本,以便升級至 Private Cloud 4.53.00 版本,建議您繼續使用這個叢集設定,而不要回復 Cassandra。私有雲版本 4.52.02 的 edge-management-server、edge-message-processor、edge-router 等元件,與 Cassandra 4.0.X 版本相容。
- 在 Cassandra 升級期間回復 Cassandra:如果在 Cassandra 升級期間遇到問題,建議您考慮回復。您可以根據升級過程中的狀態,遵循本文列出的回溯策略。
- 使用備份回復:從 Cassandra 4.0.X 建立的備份與 Cassandra 3.11.X 的備份不相容。如要使用備份還原功能回復 Cassandra,必須先備份 Cassandra 3.11.X,再嘗試升級。
使用重建功能回復 Cassandra
必要條件
- 您在多個資料中心中運作 Edge for Private Cloud 4.52.02 叢集。
- 您正在將 Cassandra 從 3.11.X 升級至 4.0.X,但在升級過程中遇到問題。
- 叢集中至少有一座運作正常的資料中心仍執行舊版 Cassandra (Cassandra 3.11.X)。
這項程序會使用現有資料中心的串流資料。這可能需要大量時間,具體取決於 Cassandra 儲存的資料量。您應準備好在回溯作業進行期間,將執行階段流量從這個資料中心轉移。
大致步驟
- 選取要回復的資料中心 (部分或完全升級)。將執行階段流量轉移至其他運作中的資料中心。
- 找出資料中心中的種子節點,並從其中一個種子節點開始。
- 停止、解除安裝及清理 Cassandra 節點。
- 在節點上安裝舊版 Cassandra,並視需要進行設定。
- 移除先前新增的額外設定。
- 針對資料中心的所有種子節點,逐一重複上述步驟。
- 針對資料中心中所有剩餘的 Cassandra 節點,逐一重複上述步驟。
- 逐一重建現有功能性資料中心的節點。
- 重新啟動資料中心中與 Cassandra 連線的所有 edge-* 元件。
- 測試並將流量轉回這個資料中心。
- 逐一重複執行每個資料中心的步驟。
詳細步驟
-
請選取要升級所有或部分 Cassandra 節點的資料中心。在資料中心的 Cassandra 節點進行回溯時,將所有執行階段 Proxy 流量和管理流量轉移至其他資料中心。
在節點上執行
nodetool ring
指令時,請確認所有 Cassandra 節點均處於 UN (正常運作) 狀態。如果特定節點發生故障,請先排解問題並重新啟動這些節點,再繼續操作。請參考以下範例:
/opt/apigee/apigee-cassandra/bin/nodetool status
Datacenter: dc-1 ================ Status=Up/Down |/ State=Normal/Leaving/Joining/Moving -- Address Load Tokens Owns (effective) Host ID Rack UN DC1-1IP1 456.41 KiB 1 100.0% 78fc4ddd-2ed9-4a8c-98a2-63a38c2f1920 ra-1 UN DC1-1IP2 870.93 KiB 1 100.0% 160db01a-64ab-43a7-b9ea-3b7f8f66d52b ra-1 UN DC1-1IP3 824.08 KiB 1 100.0% 21d61543-d59e-403a-bf5d-bfe7f664baa6 ra-1 Datacenter: dc-2 ================ Status=Up/Down |/ State=Normal/Leaving/Joining/Moving -- Address Load Tokens Owns (effective) Host ID Rack UN DC2-1IP1 802.08 KiB 1 100.0% 583e0576-336d-4ce7-9729-2ae74e0abde2 ra-1 UN DC2-1IP2 844.4 KiB 1 100.0% fef794d5-f4c2-4a4e-bb05-9adaeb4aea4b ra-1 UN DC2-1IP3 878.12 KiB 1 100.0% 3894b3d9-1f5a-444d-83db-7b1e338bbfc9 ra-1您可以在節點上執行
nodetool describecluster
,瞭解整個叢集的目前狀態。舉例來說,以下是 2 個資料中心叢集的例項,其中所有 DC-1 節點皆使用 Cassandra 4 版,而所有 DC-2 節點皆使用 Cassandra 3 版:# On nodes where Cassandra is upgraded
/opt/apigee/apigee-cassandra/bin/nodetool describecluster
Cluster Information: Name: Apigee Snitch: org.apache.cassandra.locator.PropertyFileSnitch DynamicEndPointSnitch: enabled Partitioner: org.apache.cassandra.dht.RandomPartitioner Schema versions: 2eadcd74-0245-309a-9992-3625afa70038: [DC-1-IP1, DC-1-IP2, DC-1-IP3] 129dc15e-198e-3c11-b64c-701044a3a1ad: [DC-2-IP1, DC-2-IP2, DC-2-IP3] Stats for all nodes: Live: 6 Joining: 0 Moving: 0 Leaving: 0 Unreachable: 0 Data Centers: dc-1 #Nodes: 3 #Down: 0 dc-2 #Nodes: 3 #Down: 0 Database versions: 4.0.13: [DC-1-IP1:7000, DC-1-IP2:7000, DC-1-IP3:7000] 3.11.16: [DC-2-IP1:7000, DC-2-IP2:7000, DC-2-IP3:7000] Keyspaces: system_schema -> Replication class: LocalStrategy {} system -> Replication class: LocalStrategy {} auth -> Replication class: NetworkTopologyStrategy {dc-2=3, dc-1=3} cache -> Replication class: NetworkTopologyStrategy {dc-2=3, dc-1=3} devconnect -> Replication class: NetworkTopologyStrategy {dc-2=3, dc-1=3} dek -> Replication class: NetworkTopologyStrategy {dc-2=3, dc-1=3} user_settings -> Replication class: NetworkTopologyStrategy {dc-2=3, dc-1=3} apprepo -> Replication class: NetworkTopologyStrategy {dc-2=3, dc-1=3} kms -> Replication class: NetworkTopologyStrategy {dc-2=3, dc-1=3} identityzone -> Replication class: NetworkTopologyStrategy {dc-2=3, dc-1=3} audit -> Replication class: NetworkTopologyStrategy {dc-2=3, dc-1=3} analytics -> Replication class: NetworkTopologyStrategy {dc-2=3, dc-1=3} keyvaluemap -> Replication class: NetworkTopologyStrategy {dc-2=3, dc-1=3} counter -> Replication class: NetworkTopologyStrategy {dc-2=3, dc-1=3} apimodel_v2 -> Replication class: NetworkTopologyStrategy {dc-2=3, dc-1=3} system_distributed -> Replication class: SimpleStrategy {replication_factor=3} system_traces -> Replication class: SimpleStrategy {replication_factor=2} system_auth -> Replication class: SimpleStrategy {replication_factor=1} # On nodes where Cassandra is not upgraded/opt/apigee/apigee-cassandra/bin/nodetool describecluster
Cluster Information: Name: Apigee Snitch: org.apache.cassandra.locator.PropertyFileSnitch DynamicEndPointSnitch: enabled Partitioner: org.apache.cassandra.dht.RandomPartitioner Schema versions: 2eadcd74-0245-309a-9992-3625afa70038: [DC-1-IP1, DC-1-IP2, DC-1-IP3] 129dc15e-198e-3c11-b64c-701044a3a1ad: [DC-2-IP1, DC-2-IP2, DC-2-IP3] - 找出資料中心中的種子節點:請參閱附錄中的「如何找出種子節點」一節。在其中一個種子節點上執行下列步驟:
- 停止、解除安裝及清理 Cassandra 節點中的資料。請在這個資料中心中,選擇 Cassandra 4 版的第一個種子節點。別說了。
# Stop Cassandra service on the node
/opt/apigee/apigee-service/bin/apigee-service apigee-cassandra stop
# Uninstall Cassandra software/opt/apigee/apigee-service/bin/apigee-service apigee-cassandra uninstall
# Wipe out Cassandra datarm -rf /opt/apigee/data/apigee-cassandra
- 在節點上安裝舊版 Cassandra 軟體,並設定一些設定。 執行 Edge for Private Cloud 4.52.02 的引導檔案。
# Download bootstrap of 4.52.02curl https://software.apigee.com/bootstrap_4.52.02.sh -o /tmp/bootstrap_4.52.02.sh -u uName:pWord
# Execute bootstrap of 4.52.02sudo bash /tmp/bootstrap_4.52.02.sh apigeeuser=uName apigeepassword=pWord
設定 Cassandra 設定
- 建立或編輯
/opt/apigee/customer/application/cassandra.properties
檔案。 - 將下列內容加入檔案。
ipOfNode
是 Cassandra 用來與其他 Cassandra 節點通訊的節點 IP 位址:conf_jvm_options_custom_settings=-Dcassandra.replace_address=ipOfNode -Dcassandra.allow_unsafe_replace=true
- 請確認 apigee 使用者擁有該檔案並可讀取:
chown apigee:apigee /opt/apigee/customer/application/cassandra.properties
- 安裝及設定 Cassandra:
- 安裝 Cassandra 3.11.X 版本:
/opt/apigee/apigee-service/bin/apigee-service apigee-cassandra install
- 傳遞標準設定檔來設定 Cassandra:
/opt/apigee/apigee-service/bin/apigee-service apigee-cassandra setup -f configFile
- 請確認已安裝 Cassandra 3.11.X 且服務正在執行:
/opt/apigee/apigee-service/bin/apigee-service apigee-cassandra version
/opt/apigee/apigee-service/bin/apigee-service apigee-cassandra status
- 安裝 Cassandra 3.11.X 版本:
- 確認節點已啟動。請在這個節點和叢集中的其他節點上檢查下列指令。節點應回報處於「UN」(向上/正常) 狀態:
/opt/apigee/apigee-cassandra/bin/nodetool status
- 從檔案
/opt/apigee/customer/application/cassandra.properties
中移除先前新增的額外設定。 - 依序對資料中心的所有 Cassandra 種子節點重複執行步驟 3 至 6。
- 請依序對資料中心的所有剩餘 Cassandra 節點重複執行步驟 3 至 6。
- 從執行舊版 Cassandra 的資料中心重建資料中心中的所有節點。請一次處理一個節點:
/opt/apigee/apigee-cassandra/bin/nodetool rebuild -dc <name of working DC>
這個程序可能需要一些時間。如有需要,您可以調整streamingthroughput
。使用以下指令查看狀態:/opt/apigee/apigee-cassandra/bin/nodetool netstats
- 逐一重新啟動資料中心中的所有 edge-* 元件:
/opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
/opt/apigee/apigee-service/bin/apigee-service edge-router restart
/opt/apigee/apigee-service/bin/apigee-service edge-management-server restart
/opt/apigee/apigee-service/bin/apigee-service edge-qpid-server restart
/opt/apigee/apigee-service/bin/apigee-service edge-postgres-server restart
- 驗證並將流量轉回這個資料中心。針對這個資料中心的執行階段流量和管理 API 執行一些驗證作業,並開始將 Proxy 和管理 API 流量重新導向至該資料中心。
- 針對要回溯的每個資料中心重複執行上述步驟。
使用備份還原 Cassandra
必要條件
- 您正在將 Cassandra 從 3.11.X 升級至 4.0.X,但在升級過程中遇到問題。
- 您已備份要回溯的節點。備份是在嘗試從 3.11.X 升級至 4.0.X 之前完成。
步驟
選取要回溯的節點。如果您要使用備份檔案回復資料中心中的所有節點,請先從種子節點開始。請參閱附錄中的「如何識別種子節點」一節。
停止、解除安裝及清除 Cassandra 節點:
# Stop Cassandra service on the node
/opt/apigee/apigee-service/bin/apigee-service apigee-cassandra stop
# Uninstall Cassandra software/opt/apigee/apigee-service/bin/apigee-service apigee-cassandra uninstall
# Wipe Cassandra datarm -rf /opt/apigee/data/apigee-cassandra
在節點上安裝舊版 Cassandra 軟體並進行設定:
- 執行 Edge for Private Cloud 4.52.02 的引導檔案:
# Download bootstrap for 4.52.02
curl https://software.apigee.com/bootstrap_4.52.02.sh -o /tmp/bootstrap_4.52.02.sh -u ‘uName:pWord’
# Execute bootstrap for 4.52.02sudo bash /tmp/bootstrap_4.52.02.sh apigeeuser=uName apigeepassword=pWord
- 建立或編輯
/opt/apigee/customer/application/cassandra.properties
檔案: - 請確認檔案由 apigee 使用者擁有,且可供讀取:
- 安裝及設定 Cassandra:
停止 Cassandra 服務並還原備份。詳情請參閱備份與還原說明文件:
# Stop Cassandra service on the node
/opt/apigee/apigee-service/bin/apigee-service apigee-cassandra stop
# Wipe the data directory in preparation for restorerm -rf /opt/apigee/data/apigee-cassandra/data
# Restore the backup taken before the upgrade attempt/opt/apigee/apigee-service/bin/apigee-service apigee-cassandra restore backupFile
備份還原後,請移除其他設定:
從檔案
/opt/apigee/customer/application/cassandra.properties
中移除先前新增的設定。在節點上啟動 Cassandra 服務:
/opt/apigee/apigee-service/bin/apigee-service apigee-cassandra start
針對每個要使用備份檔案回復的 Cassandra 節點,重複執行上述步驟。
所有 Cassandra 節點都還原後,請逐一重新啟動所有 edge-* 元件:
/opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
/opt/apigee/apigee-service/bin/apigee-service edge-router restart
/opt/apigee/apigee-service/bin/apigee-service edge-management-server restart
/opt/apigee/apigee-service/bin/apigee-service edge-qpid-server restart
/opt/apigee/apigee-service/bin/apigee-service edge-postgres-server restart
conf_jvm_options_custom_settings=-Dcassandra.replace_address=ipOfNode -Dcassandra.allow_unsafe_replace=true
chown apigee:apigee /opt/apigee/customer/application/cassandra.properties
# Install Cassandra version 3.11.X/opt/apigee/apigee-service/bin/apigee-service apigee-cassandra install
# Set up Cassandra with the standard configuration file/opt/apigee/apigee-service/bin/apigee-service apigee-cassandra setup -f configFile
# Verify Cassandra version and check service status/opt/apigee/apigee-service/bin/apigee-service apigee-cassandra version
/opt/apigee/apigee-service/bin/apigee-service apigee-cassandra status
確認節點已啟動。請在這個節點和叢集中的其他節點上檢查下列指令。節點應回報此節點處於「UN」狀態:
/opt/apigee/apigee-cassandra/bin/nodetool status
備份最佳化 (進階選項)
如果您有含最新資料的備用資源,在還原備份時,您可以盡量減少 (或完全避免) 資料遺失。如果有可用的副本,請在還原備份後,針對已還原的節點執行修復作業。
附錄
如何識別種子節點
在資料中心的任何 Cassandra 節點上執行下列指令:
/opt/apigee/apigee-service/bin/apigee-service apigee-cassandra configure -search conf_cassandra_seeds
這個指令會輸出多行內容。請找出輸出內容的最後一行。最後一行列出的 IP 位址是種子節點。在以下範例中,DC-1-IP1
、DC-1-IP2
、DC-2-IP1
和 DC-2-IP2
是種子節點 IP:
Found key conf_cassandra_seeds, with value, "127.0.0.1", in /opt/apigee/apigee-cassandra/token/default.properties Found key conf_cassandra_seeds, with value, 127.0.0.1, in /opt/apigee/apigee-cassandra/token/application/cassandra.properties Found key conf_cassandra_seeds, with value, "DC-1-IP1, DC-1-IP2, DC-2-IP1, DC-2-IP2", in /opt/apigee/token/application/cassandra.properties apigee-configutil: apigee-cassandra: # OK
復原至先前的主要或次要版本
如要回溯至先前的主要或次要版本,請在每個代管元件的節點上執行下列操作:
-
下載要回溯至的版本的
bootstrap.sh
檔案:- 如要回溯至 4.52.02 版,請下載
bootstrap_4.52.02.sh
:curl https://software.apigee.com/bootstrap_4.52.02.sh -o /tmp/bootstrap_4.52.02.sh
- 如要回溯至 4.52.02 版,請下載
- 停止要復原的元件:
- 如要回復節點上任何含有一般程式碼的元件,您必須停止所有元件,如以下範例所示:
/opt/apigee/apigee-service/bin/apigee-service edge-management-server stop
/opt/apigee/apigee-service/bin/apigee-service edge-router stop
/opt/apigee/apigee-service/bin/apigee-service edge-message-processor stop
/opt/apigee/apigee-service/bin/apigee-service edge-qpid-server stop
/opt/apigee/apigee-service/bin/apigee-service edge-postgres-server stop
- 如要回復節點上的任何「其他」元件,請停止該元件:
/opt/apigee/apigee-service/bin/apigee-service component stop
- 如要回復節點上任何含有一般程式碼的元件,您必須停止所有元件,如以下範例所示:
- 如果您要回溯營利功能,請從所有管理伺服器和訊息處理器節點中解除安裝:
/opt/apigee/apigee-service/bin/apigee-service edge-mint-gateway uninstall
- 解除安裝元件,以便在節點上回溯:
- 如要回復節點上的任何含有通用程式碼的元件,您必須解除安裝
edge-gateway
元件群組,才能將這些元件全部解除安裝,如以下範例所示:/opt/apigee/apigee-service/bin/apigee-service edge-gateway uninstall
- 如要回復節點上的任何其他元件,請只卸載該元件,如以下範例所示:
/opt/apigee/apigee-service/bin/apigee-service component uninstall
其中 component 是元件名稱。
- 如要回復 Edge Router,除瞭解除安裝
edge-gateway
元件群組外,您還必須刪除/opt/nginx/conf.d
檔案的內容:cd /opt/nginx/conf.d
rm -rf *
- 如要回復節點上的任何含有通用程式碼的元件,您必須解除安裝
- 解除安裝
apigee-setup
4.53.00 版:/opt/apigee/apigee-service/bin/apigee-service apigee-setup uninstall
- 安裝
apigee-service
公用程式 4.52.02 版及其依附元件。以下範例會安裝apigee-service
的 4.52.02 版:sudo bash /tmp/bootstrap_4.52.02.sh apigeeuser=uName apigeepassword=pWord
其中 uName 和 pWord 是您從 Apigee 收到的使用者名稱和密碼。如果省略 pWord,系統會提示您輸入。
如果您收到錯誤訊息,請確認您已在步驟 1 中下載
bootstrap.sh
檔案。 - 安裝
apigee-setup
:/opt/apigee/apigee-service/bin/apigee-service apigee-setup install
- 安裝舊版元件:
/opt/apigee/apigee-setup/bin/setup.sh -p component -f configFile
其中 component 是要安裝的元件,configFile 則是舊版的設定檔。
- 如果您要回復 Qpid,請清除 iptables:
sudo iptables -F
- 針對代管您要回溯的元件的每個節點重複執行這個程序。
復原至先前的修補程式版本
如要將元件回溯至特定修補程式版本,請在每個代管元件的節點上執行下列操作:
- 下載特定元件版本:
/opt/apigee/apigee-service/bin/apigee-service component_version install
其中 component_version 是要安裝的元件和修補程式版本。例如:
/opt/apigee/apigee-service/bin/apigee-service edge-ui-4.53.00-0.0.20254 install
如果您使用的是 Apigee 線上存放區,可以使用下列指令判斷可用的元件版本:
yum --showduplicates list comp
例如:
yum --showduplicates list edge-ui
- 使用
apigee-setup
安裝元件:/opt/apigee/apigee-setup/bin/setup.sh -p comp -f configFile
例如:
/opt/apigee/apigee-setup/bin/setup.sh -p ui -f configFile
請注意,安裝元件時,您只需指定元件名稱,而非版本。
- 針對代管您要回溯的元件的每個節點重複執行這個程序。
復原 mTLS
如要回復 mTLS 更新,請在所有主機上執行下列步驟:
- 停止 Apigee:
apigee-all stop
- 停止 mTLS:
apigee-service apigee-mtls uninstall
- 重新安裝 mTLS:
apigee-service apigee-mtls install
apigee-service apigee-mtls setup -f /opt/silent.conf