復原 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 Cassandra、Zookeeper、Qpid
4.51.00 Cassandra、Zookeeper、Qpid、Postgres

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

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

詳情請參閱 Apigee Edge 發布程序

回溯順序

元件應以相反的順序進行回溯,但管理伺服器應在 Cassandra 之後回溯。

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

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

舉例來說,假設您已將整個 Cassandra 叢集、所有管理伺服器和幾個 RMP 從 4.52.01 版升級至 4.52.02 版,並希望回溯。在這種情況下,您需要:

  1. 逐一回復所有 RMP
  2. 使用備份還原整個 Cassandra 叢集
  3. 逐一回溯 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 快照」中的步驟操作。

回溯步驟

  1. 從要回溯的節點開始:
    • 在節點上停止 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>
    • 針對要回溯的每個節點,重複執行上述步驟。
  2. 所有節點都已復原及重建後:
    • 執行任何管理伺服器節點的設定。請確認管理伺服器來自已復原的版本。如果沒有,請一併回復管理伺服器。
    • 停止管理伺服器:
      /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,請按照下列步驟還原備份並執行修復作業。

  1. 請按照步驟操作,直到步驟 6 為止,以便在本機資料中心中重建複本。
  2. 針對剩餘的節點,請依序按照下列步驟操作。
    • 還原您在這個節點擷取的備份 (請注意:由於備份是在啟動 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。

清除及還原備份/VM 快照

如果您已升級整個 Cassandra 叢集,並且想回溯,這就是唯一可用的程序。

此外,Apigee 備份內容會依節點而異。無法將從一個節點取得的備份還原到另一個節點。Cassandra 備份包含節點中繼資料資訊 (例如 IP 位址、環狀位置等)。

  1. 叢集中有 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

回復 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
      curl https://software.apigee.com/bootstrap_4.51.00.sh -o /tmp/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-gateway 元件群組,才能將這些元件全部解除安裝,如以下範例所示:
      /opt/apigee/apigee-service/bin/apigee-service edge-gateway 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 comp

    例如:

    yum --showduplicates list edge-ui
  2. 使用 apigee-setup 安裝元件:
    /opt/apigee/apigee-setup/bin/setup.sh -p comp -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