如果在更新至 Edge 4.52.02 的過程中發生錯誤,您可以回溯導致錯誤的元件,然後再次嘗試更新。
您可以將 Edge 4.52.02 回溯至下列主要版本:
- 4.52.01 版
- 4.52.00 版
- 版本 4.51.00
回溯版本的過程中,您可能需要回溯所有已升級的元件。此外,您可能需要考量特殊考量,才能根據所使用的版本,回復特定軟體元件。下表列出各種軟體,這些軟體在回復時可能需要特殊步驟:
復原至版本 | 軟體的特別注意事項 |
---|---|
4.52.01 | Cassandra |
4.52.00 | Cassandra、Zookeeper、Qpid |
4.51.00 | Cassandra、Zookeeper、Qpid、Postgres |
您可能會在下列兩種情況下執行回溯:
- 還原至先前的重大或次要版本。例如從 4.52.02 變更為 4.52.00。
- 回溯至同一版本中的先前修補程式版本。例如從 4.52.00.02 變更為 4.52.00.01。
詳情請參閱 Apigee Edge 發布程序。
回溯順序
元件應以相反的順序進行回溯,但管理伺服器應在 Cassandra 之後回溯。
私有雲 4.52.02 的一般回溯順序如下所示:
- 回退 Postgres、Qpid 和其他與數據分析相關的元件
- 回溯路由器和訊息處理器
- 回溯 Cassandra、Zookeeper
- Rollback Management 伺服器
舉例來說,假設您已將整個 Cassandra 叢集、所有管理伺服器和幾個 RMP 從 4.52.01 版升級至 4.52.02 版,並希望回溯。在這種情況下,您需要:
- 逐一回復所有 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 的主要升級作業時,Cassandra 會修改儲存在節點中的資料結構定義,因此無法直接回溯。回溯的方法有兩種。您將根據要回溯的升級狀態,使用其中一種方法。
回溯的方法
清除叢集中的現有節點,並使用這些節點來重建節點
如果叢集中至少有一個仍使用舊版 Cassandra (Cassandra 2.1.22) 的完整運作資料中心,您可以按照這個程序操作。如果您已升級整個 Cassandra 叢集,並想要回溯,則必須按照「清除並還原備份或 VM 快照」中的步驟操作。
回溯步驟
- 從要回溯的節點開始:
- 在節點上停止 Cassandra:
/opt/apigee/apigee-service/bin/apigee-service apigee-cassandra stop
- 從節點解除安裝 Cassandra 軟體:
/opt/apigee/apigee-service/bin/apigee-service apigee-cassandra uninstall
- 從節點中移除資料目錄:
rm -rf /opt/apigee/data/apigee-cassandra
- 下載並執行要回溯至的舊版 Edge for Private Cloud 的引導程序。
範例:如要回復至 4.52.01,
- 下載 4.52.01 版的 Bootstrap:
curl https://software.apigee.com/bootstrap_4.52.01.sh -o /tmp/bootstrap_4.52.01.sh -u ‘uName:pWord’
- 執行 4.52.01 的引導程序:
sudo bash /tmp/bootstrap_4.52.01.sh apigeeuser=uName apigeepassword=pWord
- 在節點上設定 Cassandra:
/opt/apigee/apigee-setup/bin/setup.sh -p c -f configFile
- 提供運作中資料中心的名稱,在節點上執行重建作業:
/opt/apigee/apigee-cassandra/bin/nodetool rebuild -h <node-IP> <functional-dc>
- 針對要回溯的每個節點,重複執行上述步驟。
- 在節點上停止 Cassandra:
- 所有節點都已復原及重建後:
- 執行任何管理伺服器節點的設定。請確認管理伺服器來自已復原的版本。如果沒有,請一併回復管理伺服器。
- 停止管理伺服器:
/opt/apigee/apigee-service/bin/apigee-service edge-management-server stop
- 如果您使用營利功能,請一併解除安裝營利功能:
/opt/apigee/apigee-service/bin/apigee-service edge-mint-gateway uninstall
- 解除安裝管理伺服器:
/opt/apigee/apigee-service/bin/apigee-service edge-gateway uninstall
- 下載並執行舊版的 Bootstrap。例如,執行下列步驟即可下載及執行 4.52.01 版的 Bootstrap:
curl https://software.apigee.com/bootstrap_4.52.01.sh -o /tmp/bootstrap_4.52.01.sh -u ‘uName:pWord’
sudo bash /tmp/bootstrap_4.52.01.sh apigeeuser=uName apigeepassword=pWord - 執行管理伺服器節點的設定:
/opt/apigee/apigee-setup/bin/setup.sh -p mt -f configFile
重建後的最佳化
在上述步驟中,節點中的所有資料會在重建期間從遠端資料中心串流傳輸。所有副本都已串流至本機資料中心後,您可以使用修復功能來最佳化這項程序。這樣可避免跨資料中心串流,且應該比從遠端資料中心重建所有節點更快。
範例:假設您在本機資料中心有六個 Cassandra 節點。根據預設,Apigee 的複寫因數為 3,因此每個節點都擁有 50% 的資料。在這種情況下,您可以按照上述程序重建節點 #1 和 #4。針對節點 #2、#3、#5 和 #6,請按照下列步驟還原備份並執行修復作業。
- 請按照步驟操作,直到步驟 6 為止,以便在本機資料中心中重建複本。
- 針對剩餘的節點,請依序按照下列步驟操作。
- 還原您在這個節點擷取的備份 (請注意:由於備份是在啟動 Cassandra 升級前擷取,因此可能會包含過時的資料):
/opt/apigee/apigee-service/bin/apigee-service apigee-cassandra restore backup_file
- 如果您有節點的 VM 快照,可以還原快照,而非還原 Cassandra 備份。
- 備份還原後,請在節點上啟動 Cassandra 服務:
/opt/apigee/apigee-service/bin/apigee-service apigee-cassandra start
- 在節點上執行修復作業,以便從現有資料中心串流傳輸最新資料:
/opt/apigee/apigee-cassandra/bin/nodetool -h <node-IP> repair -dc <local-dc-name>
- 針對要修復的每個節點重複執行步驟 3 到 6。
- 還原您在這個節點擷取的備份 (請注意:由於備份是在啟動 Cassandra 升級前擷取,因此可能會包含過時的資料):
清除及還原備份/VM 快照
如果您已升級整個 Cassandra 叢集,並且想回溯,這就是唯一可用的程序。
此外,Apigee 備份內容會依節點而異。無法將從一個節點取得的備份還原到另一個節點。Cassandra 備份包含節點中繼資料資訊 (例如 IP 位址、環狀位置等)。
- 叢集中有 1 個 Cassandra 節點:
- 停止節點上的 Cassandra 服務:
/opt/apigee/apigee-service/bin/apigee-service apigee-cassandra stop
- 從節點解除安裝 Cassandra 軟體:
/opt/apigee/apigee-service/bin/apigee-service apigee-cassandra uninstall
- 從節點中移除資料目錄:
rm -rf /opt/apigee/data/apigee-cassandra
- 下載並執行要回溯至的舊版 Edge for Private Cloud 的 bootstrap。
範例:如何回溯至 4.52.01
- 下載 4.52.01 版的 Bootstrap:
curl https://software.apigee.com/bootstrap_4.52.01.sh -o /tmp/bootstrap_4.52.01.sh -u ‘uName:pWord’
- 執行 4.52.01 的引導程序:
sudo bash /tmp/bootstrap_4.52.01.sh apigeeuser=uName apigeepassword=pWord
- 在節點上設定 Cassandra:
/opt/apigee/apigee-setup/bin/setup.sh -p c -f configFile
- 使用「從備份還原」一節中的程序,在節點上還原備份。
- 在節點上停止 Cassandra:
/opt/apigee/apigee-service/bin/apigee-service apigee-cassandra stop
- 刪除資料目錄:
rm -rf /opt/apigee/data/apigee-cassandra/data
- 還原備份:
/opt/apigee/apigee-service/bin/apigee-service apigee-cassandra restore backup_file
- 在節點上啟動 Cassandra 服務:
/opt/apigee/apigee-service/bin/apigee-service apigee-cassandra start
- 請逐一重複執行每個 Cassandra 節點的步驟。
- 一次修復一個節點:
/opt/apigee/apigee-cassandra/bin/nodetool -h <node-IP> repair -pr
- 停止節點上的 Cassandra 服務:
回復 Zookeeper 3.8.3 更新
如果您要回復至 4.52.00 或 4.51.00 版本,請先參閱一些特殊步驟,再回復 Zookeeper。這些步驟請參見「回溯」一節。
如果您要回溯至 4.52.01 版,請按照「回溯至前一個主要或次要版本」一節的說明,將 Zookeeper 回溯至任何軟體。
復原 Qpid
如果您要回溯至 4.52.00 或 4.51.00 版本,請先參閱一些特殊步驟,再回溯 Qpid。這些步驟請參見「回溯」一節。
如果您要回溯至 4.52.01 版,請按照「回溯至先前的主要或次要版本」一文所列的步驟,回溯 Qpid。
復原 Postgres 10.17 更新
如果您要回溯至 4.51.00 版,請先參閱一些特殊步驟,再回溯 Postgres。這些步驟請參見「回溯」一節。
如果您要回溯至 4.52.01 或 4.52.00 版本,請按照「回溯至先前的主要或次要版本」一節所述,將 Postgres 回溯至任何軟體。
復原至先前的主要或次要版本
如要回溯至先前的主要或次要版本,請在每個代管元件的節點上執行下列操作:
-
下載要回溯至的版本的
bootstrap.sh
檔案:- 如要回溯至 4.51.00,請下載
bootstrap_4.51.00.sh
:curl https://software.apigee.com/bootstrap_4.51.00.sh -o /tmp/bootstrap_4.51.00.sh
- 如要回溯至 4.51.00,請下載
- 停止要復原的元件:
- 如要回復節點上的任何含有通用程式碼的元件,您必須全部停止,如以下範例所示:
/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.52.02 版:/opt/apigee/apigee-service/bin/apigee-service apigee-setup uninstall
- 安裝
apigee-service
公用程式 4.51.00 版及其依附元件。以下範例會安裝apigee-service
的 4.51.00 版:sudo bash /tmp/bootstrap_4.51.00.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.51.05-0.0.3749 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