如果在更新至 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
- 復原管理伺服器
舉例來說,假設您已將整個 Cassandra 叢集、所有管理伺服器和幾個 RMP 從 4.52.02 版升級至 4.53.00 版,現在想還原。在這種情況下,你會:
- 逐一回溯所有 RMP
- 使用備份還原整個 Cassandra 叢集
- 逐一回溯 Edge Management 伺服器節點
誰可以執行回溯
執行回溯的使用者,應與當初更新 Edge 的使用者相同,或是以根層級身分執行的使用者。
根據預設,Edge 元件會以「apigee」使用者身分執行。在某些情況下,您可能會以不同使用者身分執行 Edge 元件。舉例來說,如果 Router 必須存取專屬通訊埠 (例如低於 1000 的通訊埠),則必須以根身分或有權存取這些通訊埠的使用者身分執行 Router。或者,您可能會以一個使用者身分執行一個元件,並以另一個使用者身分執行另一個元件。
具有通用程式碼的元件
下列 Edge 元件共用通用程式碼。因此,如要將節點上的任何一個元件回復原狀,必須將該節點上的所有元件回復原狀。
edge-management-server
(管理伺服器)edge-message-processor
(訊息處理器)edge-router
(路由器)edge-postgres-server
(Postgres 伺服器)edge-qpid-server
(Qpid 伺服器)
舉例來說,如果您在節點上安裝了管理伺服器、路由器和訊息處理器,如要回溯其中任何一個,就必須回溯全部三個。
回溯 Cassandra
在特定節點上執行 Cassandra 主要升級時,Cassandra 會修改儲存在該節點上的資料結構定義。因此無法直接進行就地復原。
復原情境
Cassandra 4.0.X 適用於 Edge for Private Cloud 4.53.00,且與 Private Cloud 4.52.02 的其他元件相容。
下表彙整了各種可用的復原策略:
情境 | 復原策略 |
---|---|
單一 DC,部分 Cassandra 節點已升級 | 使用備份 |
單一 DC,所有 Cassandra 節點都已升級 | 請勿復原 Cassandra。其他元件可以回溯。 |
單一 DC,所有節點 (Cassandra 和其他節點) 皆已升級 | 請勿復原 Cassandra。其他元件可以回溯。 |
多個 DC,其中一個 DC 的部分節點已升級 | 從現有 DC 重新建構 |
多個 DC,某些 DC 中的所有 Cassandra 節點都已升級 | 從現有 DC 重新建構 |
多個 DC,正在升級最後一個 DC 的 Cassandra 節點 | 請嘗試完成升級。如果無法執行這項操作,請使用備份還原 1 個 DC。從復原的 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 元件回復原狀,而 Cassandra 仍維持在 4.0.13 版。
- 在整個 Cassandra 叢集升級至 4.0.X 後進行回溯:如果整個 Cassandra 叢集在升級至 Private Cloud 4.53.00 版時升級至 4.0.X 版,建議您繼續使用這個叢集設定,不要回溯 Cassandra。Private Cloud 4.52.02 版的邊緣管理伺服器、邊緣訊息處理器、邊緣路由器等元件,與 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 (Up/Normal) 狀態。如果特定節點停止運作,請排解問題並重新啟動這些節點,再繼續操作。請參考以下範例:
/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 的啟動程序檔案。
- 建立或編輯
/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:
# Install cassandra version 3.11.X
/opt/apigee/apigee-service/bin/apigee-service apigee-cassandra install
# Setup cassandra while passing standard configuration file/opt/apigee/apigee-service/bin/apigee-service apigee-cassandra setup -f configFile
# Ensure Cassandra version is correct and service is running/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
- 從
/opt/apigee/customer/application/cassandra.properties
檔案中移除先前新增的額外設定。 - 在資料中心的所有 Cassandra 種子節點上,逐一重複執行步驟 3 到 10。
- 在資料中心其餘的 Cassandra 節點上,逐一重複步驟 3 到 10。
- 從執行舊版 Cassandra 的資料中心重建資料中心中的所有節點。一次對一個節點執行這個步驟:
/opt/apigee/apigee-cassandra/bin/nodetool rebuild -dc <name of working DC>
這項程序可能需要一些時間。如有需要,可以調整
streamingthroughput
。查看nodetool netstats
,瞭解作業完成狀態。 - (選用) 如果資料未重建,請在 Cassandra 節點中執行修復指令。
/opt/apigee/apigee-cassandra/bin/nodetool -h node-IP repair -pr
- 逐一重新啟動資料中心的所有 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 流量重新導向至該資料中心。
- 針對要復原的每個資料中心,重複上述步驟。
# 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
必要條件
- 您正在將 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 的啟動程序檔案:
- 建立或編輯
/opt/apigee/customer/application/cassandra.properties
檔案: - 確認檔案屬於 apigee 使用者,且可供讀取:
- 安裝及設定 Cassandra:
# 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
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 服務並還原備份。詳情請參閱備份與還原說明文件:
# 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
備份最佳化 (進階選項)
如果備份還原時有包含最新資料的副本可用,您或許就能盡量減少 (或避免) 資料遺失。如有副本,請在還原備份後,對還原的節點執行修復作業。
附錄
如何識別種子節點
在資料中心內的任何 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
- 如要回溯節點上含有通用程式碼的任何元件,必須停止所有元件,如下列範例所示:
- 如要還原 Monetization,請從所有管理伺服器和 Message Processor 節點解除安裝:
/opt/apigee/apigee-service/bin/apigee-service edge-mint-gateway uninstall
- 解除安裝元件,在節點上還原:
- 如要還原節點上的共用程式碼元件,必須解除安裝所有元件,方法是解除安裝
edge-gateway
元件群組,如下列範例所示:/opt/apigee/apigee-service/bin/apigee-service edge-gateway uninstall
- 如要復原 Nginx,請按照下列步驟操作:
###Find the apigee-nginx RPM rpm -qa | grep -i "apigee-nginx" ###Remove the apigee-nginx RPM dnf remove apigee-nginx-1.26.x
- 如要還原節點上的任何其他元件,請只解除安裝該元件,如下列範例所示:
/opt/apigee/apigee-service/bin/apigee-service component uninstall
其中 component 是元件名稱。
- 如要復原 Edge 路由器,除瞭解除安裝
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
- 安裝 4.52.02 版的
apigee-service
公用程式及其依附元件。以下範例會安裝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