復原 Apigee Edge 4.52.02

如果在更新至 Edge 4.52.02 的過程中發生錯誤,您可以回溯導致錯誤的元件,然後再次嘗試更新。

您可以將 Edge 4.52.02 回溯至下列任何主要版本:

  • 4.52.01 版
  • 4.52.00 版
  • 版本 4.51.00

回溯版本的過程中,您可能會升級每個元件。此外,您可能需要根據所使用的版本,在回復特定軟體元件前採取特殊步驟。下表列出各種軟體元件,這些元件在回復時可能需要特殊步驟:

復原至版本 軟體的特別注意事項
4.52.01 Cassandra
4.52.00 ZookeeperCassandraQpid
4.51.00 ZookeeperPostgresCassandraQpid

您可能會在下列兩種情況下執行回溯作業:

  1. 復原至先前的重大或次要版本。例如從 4.52.02 變更為 4.52.00。
  2. 回溯至同一版本中的先前修補程式版本。例如從 4.52.00.02 變更為 4.52.00.01。

詳情請參閱 Apigee Edge 發布程序

回溯順序

元件的回溯應依升級的反向順序進行,但管理伺服器應在 Cassandra 之後回溯。您應使用資料中心逐一 (DC-by-DC) 方法,將 Cassandra、執行階段元件和管理伺服器全部回溯,暫時將流量重新導向至運作中的資料中心。

私有雲 4.52.02 的一般回溯順序如下:

單一資料中心

對於單一資料中心設定,還原程序會對執行階段流量和特定管理 API 造成重大影響。

  1. 回退 Qpid 和其他與數據分析相關的元件
  2. 回溯路由器和訊息處理器
  3. 回復 Cassandra
  4. 復原管理伺服器
  5. 回溯 Postgres 和 Zookeeper

多個資料中心

在多資料中心設定中,回復作業應採用逐一資料中心 (DC-by-DC) 方法,將流量暫時重新導向至運作中的資料中心。這可確保流量連續性、避免停機,並為 Cassandra管理伺服器執行階段節點啟用受控的還原程序。

  1. 在所有資料中心中回復 Qpid 和其他與分析相關的元件。
  2. 封鎖第一個資料中心的流量,並將流量重新導向至其他 DC。
  3. 在第一個資料中心中回溯路由器和訊息處理器。
  4. 在第一個資料中心回復 Cassandra。
  5. 第一個資料中心的 Rollback Management 伺服器。
  6. 請取消封鎖第一個資料中心的流量,並按照步驟 2 到 6 操作,直到最後一個資料中心的執行階段節點、Cassandra 和管理伺服器都已回復為止。
  7. 在所有 DC 中回復 Postgres、Zookeeper 和 LDAP。

舉例來說,假設您已將整個 Cassandra 叢集、所有管理伺服器和部分執行階段訊息處理器 (RMP) 從 4.52.01 版升級至 4.52.02 版,並需要執行回溯作業。在這種情況下,請按照以下步驟進行還原:

  1. 封鎖流量至第一個資料中心 (資料中心),並重新路由流量至其他運作的 DC,確保服務持續運作。
  2. 在第一個資料中心回溯路由器和訊息處理器
  3. 從備份或 VM 快照還原,回復第一個資料中心的 Cassandra
  4. 在第一個資料中心回復管理伺服器
  5. 解除第一個資料中心的流量封鎖
  6. 針對每個剩餘資料中心重複執行步驟 1 到 5,直到所有執行階段節點、Cassandra 和管理伺服器都已回溯為止。

誰可以執行回溯

執行回溯作業的使用者應與最初更新 Edge 的使用者相同,或是以 root 身分執行的使用者。

根據預設,Edge 元件會以「apigee」使用者身分執行。在某些情況下,您可能會以不同的使用者身分執行 Edge 元件。舉例來說,如果 Router 必須存取特權通訊埠 (例如 1000 以下的通訊埠),則必須以 root 身分或具有這些通訊埠存取權的使用者身分執行 Router。或者,您可以以一個使用者的身分執行一個元件,以另一個使用者的身分執行另一個元件。

含有通用程式碼的元件

下列 Edge 元件共用通用程式碼。因此,如要回溯節點上的任何一個元件,您必須回溯該節點上的所有元件。

  • edge-management-server (管理伺服器)
  • edge-message-processor (訊息處理器)
  • edge-router (路由器)
  • edge-postgres-server (Postgres Server)
  • edge-qpid-server (Qpid 伺服器)

舉例來說,如果您在節點上安裝了管理伺服器、路由器和訊息處理器,則必須將這三者都回復,才能回復其中任何一個。

Cassandra 的回溯

在特定 Cassandra 節點上執行 Cassandra 的主要升級作業時,Cassandra 會修改儲存在節點中的資料結構定義,因此無法直接回溯。回溯的方法有兩種。您將根據要回溯的升級狀態,使用下列任一方法。

回溯的方法

復原情境

Edge for Private Cloud 4.52.02 包含 Cassandra 升級,以及訊息處理器和管理伺服器用於連線至 Cassandra 的驅動程式。因此,這 3 個元件的升級和回溯作業是緊密相連的。下表列出這三個特定元件的一般回溯情境範例。請按照「回溯順序」一節的說明,回溯其他元件。

本節將根據上述方法,概略說明各種回溯情境,並提供建議的執行方法。

情境 復原策略
單一資料中心,部分 Cassandra 節點已升級 備份還原
單一資料中心,所有 Cassandra 節點皆已升級 備份還原
單一資料中心,所有節點 (Cassandra、管理伺服器和執行階段節點) 皆已升級
多個資料中心,第一個資料中心中的部分/所有 Cassandra 節點已升級 從現有資料中心重建
升級第一個資料中心中的多個資料中心、所有 Cassandra 節點、管理伺服器和執行階段節點

這項操作應一次只在一個資料中心執行。

多個資料中心,升級最後一個資料中心的部分/所有 Cassandra 節點
  • 使用備份功能回復上一個資料中心
  • 使用備份重建功能,一次還原一個資料中心。
在所有資料中心升級多個資料中心、所有 Cassandra 節點、管理伺服器和執行階段節點

這項作業應一次執行一個資料中心。

一般來說,您在回復 Cassandra 時應考量以下事項:

  1. 執行階段或管理元件的回溯

    如果您需要將 Edge Management Server 或 Edge Message Processor 等元件回復至任何資料中心 (DC) 中的舊版 Edge Private Cloud,請務必同時在該特定資料中心回復 Cassandra。這項設定有助於避免管理和執行階段流量失敗。

  2. 使用備份檔案回復

    從 Cassandra 3.11.x 備份的資料與 Cassandra 2.1.x 的資料不相容。如要使用備份還原功能啟用回溯功能,請務必先備份 Cassandra 2.1.x,再執行升級作業。

  3. 隔離資料中心以便回溯

    為避免服務中斷,請確保流量會重新導向至運作正常的資料中心,並阻斷來自正在回復的資料中心的流量。

使用重建功能回復 Cassandra

必要條件

  1. 您在多個資料中心中運作 Edge for Private Cloud 4.51.00 / 4.52.00 / 4.52.01 叢集
  2. 您正在將 Cassandra 從 2.1.X 升級至 3.11.X,但在升級過程中遇到問題
  3. 叢集中至少有 1 個功能正常的資料中心仍使用舊版 Cassandra (Cassandra 2.1.X)

高階步驟

  1. 選擇要回復的資料中心 (部分或完全升級)。將此資料中心的所有應用程式流量重新導向至其他功能正常的資料中心。
  2. 如果 Router 和 Message Processor 已升級,請一次一個地回溯資料中心中的所有 Router 和 Message Processor 節點。
  3. 在一個節點上停止 Cassandra、解除安裝,並清理所有相關資料。
  4. 安裝先前版本的 Bootstrap,並在已清除的節點上設定 Cassandra 2.1.x 版本。
  5. 從仍在執行 Cassandra 2.1.x 的現有功能資料中心重建節點。
  6. 請針對資料中心中剩餘的每個 Cassandra 節點,依序執行步驟 3 至 5。
  7. 在資料中心重新執行管理伺服器設定。
  8. 進行測試,驗證復原作業。完成驗證後,請將應用程式流量重新導向至已還原的資料中心。
  9. 針對需要回溯的其他資料中心,重複執行上述步驟。

詳細步驟說明如何清除叢集中現有的節點,並使用這些節點來重建節點:

從要回溯的節點開始

  1. 請先確認流量已重新導向至功能完整的資料中心,再繼續進行後續步驟。
  2. 如果 Router 和 Message Processor 已升級,請逐一將資料中心中的所有 Router 和 message processor 節點回溯至舊版
  3. 在節點上停止 Cassandra:
    /opt/apigee/apigee-service/bin/apigee-service apigee-cassandra stop
  4. 從節點解除安裝 Cassandra 軟體:
    /opt/apigee/apigee-service/bin/apigee-service apigee-cassandra uninstall
  5. 從節點中移除資料目錄:
    rm -rf /opt/apigee/data/apigee-cassandra
  6. 下載並執行要回溯至的舊版 Edge for Private Cloud 的 bootstrap:

    範例:如何回溯至 4.52.01

  7. 下載 4.52.01 版的 Bootstrap:
    curl https://software.apigee.com/bootstrap_4.52.01.sh -o /tmp/bootstrap_4.52.01.sh -u ‘uName:pWord’
  8. 執行 4.52.01 的引導程序:
    sudo bash /tmp/bootstrap_4.52.01.sh apigeeuser=uName apigeepassword=pWord
  9. 在節點上安裝 Cassandra 軟體:
    apigee-service apigee-cassandra install
  10. /opt/apigee/apigee-cassandra/source/conf/cassandra-env.sh 檔案中新增下列屬性。
    JVM_OPTS="$JVM_OPTS -Dcassandra.replace_address=<cass_ip-address>"

    範例:

    JVM_OPTS="$JVM_OPTS -Dcassandra.replace_address=10.0.0.1"

  11. 在節點上設定 Cassandra:
    /opt/apigee/apigee-setup/bin/setup.sh -p c -f configFile
  12. 在 Cassandra 啟動後,請從以下檔案中移除上述 CWC:/opt/apigee/apigee-cassandra/source/conf/cassandra-env.sh 檔案。
  13. 重新啟動 Cassandra 節點
    apigee-service apigee-cassandra restart
  14. 提供運作中資料中心的名稱,在節點上執行重建作業:
    /opt/apigee/apigee-cassandra/bin/nodetool rebuild -h <node-IP> <functional-dc>

    範例:

    /opt/apigee/apigee-cassandra/bin/nodetool rebuild -h 10.0.0.1 dc-2

  15. 針對您要在資料中心中回溯的每個節點,重複執行上述步驟。

資料中心的所有 Cassandra 節點都已回溯及重建

  1. 在要回溯的資料中心中,執行任何管理伺服器節點的設定。請確認管理伺服器來自已復原的版本。如果沒有,請一併回復管理伺服器
  2. 將管理伺服器回溯至舊版

  3. 停止管理伺服器:
    /opt/apigee/apigee-service/bin/apigee-service edge-management-server stop
  4. 如果您使用營利功能,請一併解除安裝營利功能:
    /opt/apigee/apigee-service/bin/apigee-service edge-mint-gateway uninstall
  5. 解除安裝 edge-gateway 和 apigee-cassandra-client:
    /opt/apigee/apigee-service/bin/apigee-service edge-gateway uninstall
    /opt/apigee/apigee-service/bin/apigee-service apigee-cassandra-client uninstall
  6. 下載並執行舊版的 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
  7. 管理伺服器設定

  8. 執行管理伺服器節點的設定:
    /opt/apigee/apigee-setup/bin/setup.sh -p mt -f configFile
  9. 完成上述步驟後,請將流量重新導向至已復原的資料中心。

重建後的最佳化

在上述步驟中,節點中的所有資料會在重建期間從遠端資料中心串流傳輸。所有副本都已串流至本機資料中心後,您可以使用修復功能來最佳化這項程序。這樣可避免跨資料中心串流,且應該比從遠端資料中心重建所有節點更快。

範例:假設您在本機資料中心有六個 Cassandra 節點。根據預設,Apigee 的複寫因數為 3,因此每個節點都會擁有 50% 的資料。在這種情況下,您可以按照上述程序重建節點 #1 和 #4。針對節點 #2、#3、#5 和 #6,請按照下列步驟還原備份並執行修復作業。

  1. 請按照上述步驟在本機資料中心重建複本。
  2. 針對剩餘的節點,請依序按照下列步驟操作。
  3. 還原您在這個節點擷取的備份 (請注意:由於備份是在啟動 Cassandra 升級前擷取,因此可能會包含過時的資料):
    /opt/apigee/apigee-service/bin/apigee-service apigee-cassandra restore backup_file

    如果您有節點的 VM 快照,可以還原快照,而非還原 Cassandra 備份。

  4. 備份還原後,請在節點上啟動 Cassandra 服務:
    /opt/apigee/apigee-service/bin/apigee-service apigee-cassandra start
  5. 在節點上執行修復作業,以便從現有資料中心串流最新資料:
    /opt/apigee/apigee-cassandra/bin/nodetool -h <node-IP> repair -dc <local-dc-name>

    範例:

    /opt/apigee/apigee-cassandra/bin/nodetool -h 10.0.0.1 repair -dc dc-1

  6. 針對要修復的每個節點,重複執行上述步驟 2 中提到的所有步驟

使用備份 / VM 快照回復 Cassandra

如果您已升級整個 Cassandra 叢集,並且想要回溯,這就是唯一可用的程序。此外,Apigee 備份內容會依節點而異。您無法將從一個節點取得的備份還原到另一個節點。Cassandra 備份包含節點中繼資料資訊 (例如 IP 位址、環狀位置等)。

必要條件

  1. 您正在將 Cassandra 從 2.1.X 升級至 3.11.X,但在升級期間遇到問題。
  2. 在回溯升級之前,您已備份節點。備份是在嘗試將 2.1.X 升級至 3.11.X 之前建立的。

高階步驟

  1. 選擇要回溯的資料中心 (部分或完全升級)。將這個資料中心的所有執行階段流量重新導向至其他功能正常的資料中心。
  2. 如果路由器和訊息處理工具已升級,請一次一個地回復資料中心中的所有路由器和訊息處理工具節點
  3. 在一個節點上停止 Cassandra、解除安裝,並清理所有相關資料。
  4. 安裝先前版本的 Bootstrap,並在已清除的節點上設定 Cassandra 2.1.x 版本。
  5. 停止 Cassandra 節點並清理所有相關資料。
  6. 從升級前備份的 Cassandra 節點還原資料。
  7. 針對資料中心的每個剩餘 Cassandra 節點重複執行步驟 3 到 6,每次一個節點。
  8. 在資料中心重新執行管理伺服器設定。
  9. 執行測試,驗證復原作業。完成驗證後,請將執行階段流量重新導向至已還原的資料中心。
  10. 針對需要回溯的其他資料中心,重複執行上述步驟。
  11. (選用) 如果所有資料中心的 Cassandra 節點之間存在資料不一致的情況,請在所有資料中心的所有 Cassandra 節點上執行修復指令。

使用備份/虛擬機快照回溯 Cassandra 的詳細步驟

叢集中有 1 個 Cassandra 節點

  1. 請先確認流量已重新導向至功能完整的資料中心,再繼續進行後續步驟。
  2. 如果路由器和訊息處理器已升級,請逐一將資料中心中的所有路由器和訊息處理器節點回溯至舊版
  3. 在節點上停止 Cassandra:
    /opt/apigee/apigee-service/bin/apigee-service apigee-cassandra stop
  4. 從節點解除安裝 Cassandra 軟體:
    /opt/apigee/apigee-service/bin/apigee-service apigee-cassandra uninstall
  5. 從節點中移除資料目錄:
    rm -rf /opt/apigee/data/apigee-cassandra
  6. 下載並執行要回溯至的舊版 Edge for Private Cloud 的 bootstrap:

    範例:如何回溯至 4.52.01

  7. 下載 4.52.01 版的 Bootstrap:
    curl https://software.apigee.com/bootstrap_4.52.01.sh -o /tmp/bootstrap_4.52.01.sh -u ‘uName:pWord’
  8. 執行 4.52.01 的引導程序:
    sudo bash /tmp/bootstrap_4.52.01.sh apigeeuser=uName apigeepassword=pWord
  9. 在節點上設定 Cassandra:
    /opt/apigee/apigee-setup/bin/setup.sh -p c -f configFile
  10. 在節點上停止 Cassandra:
    /opt/apigee/apigee-service/bin/apigee-service apigee-cassandra stop
  11. 刪除節點上的資料目錄:
    rm -rf /opt/apigee/data/apigee-cassandra/data
  12. 還原備份:
    /opt/apigee/apigee-service/bin/apigee-service apigee-cassandra restore backup_file
  13. 在節點上啟動 Cassandra 服務
    /opt/apigee/apigee-service/bin/apigee-service apigee-cassandra start
  14. 請逐一重複執行每個 Cassandra 節點的步驟。
  15. 在要回溯的資料中心中,執行任何管理伺服器節點的設定。請確認管理伺服器來自已復原的版本。如果沒有,請一併回復管理伺服器
  16. 完成上述步驟後,請將流量重新導向至已復原的資料中心。
  17. (選用) 如果資料中心之間的資料不一致,請在所有資料中心的所有 Cassandra 節點上執行修復指令。
    /opt/apigee/apigee-cassandra/bin/nodetool -h <node-IP> repair -pr

回復 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 還原至先前的版本。

復原至先前的版本

如要回溯至先前的主要或次要版本,請在每個代管元件的節點上執行下列操作:

  1. 下載要回溯至的版本的 bootstrap.sh 檔案:

    • 如要回復至 4.51.00,請下載 bootstrap_4.51.00.sh
  2. 停止要復原的元件:
    1. 如要回復節點上任何含有通用程式碼的元件,您必須全部停止,如以下範例所示:
      /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
    2. 如要回溯節點上的任何其他元件,請停止該元件:
      /opt/apigee/apigee-service/bin/apigee-service component stop
  3. 如果您要回溯營利功能,請從所有管理伺服器和訊息處理器節點中解除安裝:
    /opt/apigee/apigee-service/bin/apigee-service edge-mint-gateway uninstall
  4. 解除安裝元件,以便在節點上回溯:
    1. 如要回復節點上的任何含有通用程式碼的元件,您必須解除安裝 edge-gatewayapigee-cassandra-client 元件群組,如以下範例所示:
      /opt/apigee/apigee-service/bin/apigee-service edge-gateway uninstall
      /opt/apigee/apigee-service/bin/apigee-service apigee-cassandra-client uninstall
    2. 如要回復節點上的任何其他元件,請只卸載該元件,如以下範例所示:
      /opt/apigee/apigee-service/bin/apigee-service component uninstall

      其中 component 是元件名稱。

    3. 如要回復 Edge Router,除瞭解除安裝 edge-gateway 元件群組外,您還必須刪除 /opt/nginx/conf.d 檔案的內容:
      cd /opt/nginx/conf.d
      rm -rf *
  5. 解除安裝 apigee-setup 的 4.52.02 版:
    /opt/apigee/apigee-service/bin/apigee-service apigee-setup uninstall
  6. 安裝 apigee-service 公用程式 4.51.00 版及其依附元件。以下範例會安裝 apigee-service 的 4.51.00 版:
    sudo bash /tmp/bootstrap_4.51.00.sh apigeeuser=uName apigeepassword=pWord

    其中 uNamepWord 是您從 Apigee 收到的使用者名稱和密碼。如果省略 pWord,系統會提示您輸入。

    如果出現錯誤,請確認您已在步驟 1 中下載 bootstrap.sh 檔案。

  7. 安裝 apigee-setup
    /opt/apigee/apigee-service/bin/apigee-service apigee-setup install
  8. 安裝舊版元件:
    /opt/apigee/apigee-setup/bin/setup.sh -p component -f configFile

    其中 component 是安裝的元件,而 configFile 是舊版的設定檔。

  9. 如果要回復 Qpid,請清除 iptables:
    sudo iptables -F
  10. 針對代管您要回溯的元件的每個節點重複執行這個程序。

復原至先前的修補程式版本

如要將元件回溯至特定修補程式版本,請在每個代管元件的節點上執行下列操作:

  1. 下載特定元件版本:
    /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 component

    例如:

    yum --showduplicates list edge-ui
  2. 使用 apigee-setup 安裝元件:
    /opt/apigee/apigee-setup/bin/setup.sh -p component -f configFile

    例如:

    /opt/apigee/apigee-setup/bin/setup.sh -p ui -f configFile

    請注意,安裝元件時,您只需指定元件名稱,而非版本。

  3. 針對代管您要回溯的元件的每個節點重複執行這個程序。

復原 mTLS

如要回復 mTLS 更新,請在所有主機上執行下列步驟:

  1. 停止 Apigee:
    apigee-all stop
  2. 停止 mTLS:
    apigee-service apigee-mtls uninstall
  3. 重新安裝 mTLS:
    apigee-service apigee-mtls install
    apigee-service apigee-mtls setup -f /opt/silent.conf