如果在更新至 Edge 4.16.09 時發生錯誤,您可以復原導致錯誤的元件,然後再嘗試更新。舉例來說,如果更新至 Postgres 9.4 失敗,您可以只復原 Postgres 節點,然後再次嘗試更新。
有兩種情況會建議您執行復原作業:
- 復原至較舊版本。例如從 4.16.09 到 4.16.05。
- 復原至相同版本的舊版。
請依下方程序執行這兩種情況的復原作業。
誰可以執行復原作業
執行復原作業的使用者,應與原先更新 Edge 的使用者,或以根層級執行的使用者相同。
根據預設,Edge 元件會以使用者「apigee」的形式執行。在某些情況下,您可能會以不同使用者的身分執行 Edge 元件。舉例來說,如果路由器需要存取特殊權限通訊埠 (例如 1000 以下的通訊埠),您就必須以根層級或有權存取這些通訊埠的使用者的身分執行路由器。或者,您也可以以單一使用者的身分執行某個元件,並以其他使用者的身分執行另一個元件。
哪些元件可以復原
執行復原作業時,請注意下列狀況:
- 下列五個 Edge 元件共用通用程式碼。因此,如要復原節點上五個元件的其中一個,就必須復原節點上安裝的五個元件中任一項目。舉例來說,如果您在節點中安裝了管理伺服器、路由器和訊息處理器,就必須復原三個節點,才能復原其中一個。
共用程式碼的五個元件如下:- 管理伺服器
- 路由器
- 訊息處理器
- Qpid 伺服器
- Postgres 伺服器
- 如果您是從 Edge 4.16.01 更新,請勿復原 Cassandra。這個 Edge 版本包含 Cassandra 的更新版本。如果您復原任何元件,請保留 Cassandra 的 4.16.09 版。
- 這個版本不包含新版 qpidd。因此,您不需要復原 qpidd。
正在復原 4.16.09 版
本節包含將 Edge 4.16.09 復原至舊版的程序。這個部分分為兩個部分:
- 將 Postgres 更新復原至 9.4 版
每個更新程序的最後一部分是將 Postgres 節點更新至 9.4 版。如果更新失敗,您可以使用這項程序復原更新。 - 復原所有其他 Edge 元件
請按照這項程序復原任何其他 Edge 元件。
復原 Postgres 9.4 更新
如要在主要待命設定中更新 Postgres 更新時復原 Postgres 更新,您必須:
- 將新的待命節點升級為 Postgres 主要執行個體。新的 Postgres 主版本會與您先前安裝的 Edge 版本相同。
- 將舊待命節點設為新主要執行個體的待命節點。舊的待命節點版本與您先前安裝的 Edge 版本相同。
- 向數據分析和消費者群組註冊新的主要和待命節點。
復原作業完成後,就無法再使用舊的主要節點。然後,您就可以停用舊的主要節點。
- 確認新的待命 Postgres 節點正在執行:
> /opt/apigee/apigee-service/bin/apigee-all 狀態
如果 Postgres 未執行,請啟動:
> /opt/apigee/apigee-service/bin/apigee-all start - 確保 Postgres 已在舊的主要節點和舊的待命節點上停止:
> /opt/apigee/apigee-service/bin/apigee-all 狀態
如果 Postgres 正在執行,則停止:
> /opt/apigee/apigee-service/bin/apigee-serviceedge-postgres-apigee-service/apigee
apigee> /opt/apigee-service/ab - 如果已安裝過舊待命節點,請在舊待命節點上啟動 Qpid:
> /opt/apigee/apigee-service/bin/apigee-service Edge-qpid-server start
注意:在許多設定中,舊的待命節點只會託管 Postgres,而非 Qpid。 - 將新的待命節點升級為 Postgres 主要執行個體:
- 將新的待命節點升級為新的主要節點:
> apigee-service apigee-postgresql 推動-standby-to-master new_standby_IP
如果收到系統提示,請輸入「apigee」的使用者密碼 (預設為「postgres」)。 - 編輯您用來安裝目前 Edge 版本的設定檔,指定以下內容:
新主版本的# IP 位址:
PG_MASTER=new_standby_IP
# 舊待命節點的 IP 位址
PG_STANDBY=old_standby_IP - 設定新主要資料庫:
> /opt/apigee/apigee-service/bin/apigee-service apigee-postgresql setup-replication-on-master -f configFile
- 將新的待命節點升級為新的主要節點:
- 重新建立舊的待命節點:
- 編輯您用來安裝目前 Edge 版本的設定檔,指定以下內容:
新主版本的# IP 位址:
PG_MASTER=new_standby_IP
# 舊待命節點的 IP 位址
PG_STANDBY=old_standby_IP - 移除舊待命節點上的資料目錄:
> cd /opt/apigee/data/apigee-postgresql/pgdata
> rm -rf * - 將舊待命節點重新設為新主要執行個體的待命節點:
> /opt/apigee/apigee-service/bin/apigee-service apigee-postgresql setup-replication-on-standby -f configFile - 確認 Postgres 在舊的待命節點上運作:
> /opt/apigee/apigee-service/bin/apigee-all 狀態
如果應用程式未執行,請啟動:
> /opt/apigee/apigee-service/bin/apigee-serviceedge-postgres-server start
- 編輯您用來安裝目前 Edge 版本的設定檔,指定以下內容:
- 透過查看新主要執行個體的 /opt/apigee/apigee-postgresql/conf/pg_hba.conf 檔案,確認已新增待命節點。
- 在管理伺服器中執行下列指令,查看目前的數據分析和消費者群組資訊:
> curl -u sysAdminEmail:password http://<ms_IP>:8080/v1/analytics/groups/ax
這個指令會傳回「name」欄位中的數據分析群組名稱,以及在「consumer-groups」欄位中傳回消費者群組名稱。也會透過 postgres-server 欄位和 datastores 欄位傳回舊 Postgres 主要執行個體和待命節點的 UUID。您應 格式為:
{
"name" : "axgroup-001",
"properties" : {
},
"VALIDATE~test", "sgilson~prod" ] - 在舊的主要節點上執行以下 cURL 指令,取得舊主要執行個體的 UUID 位址:
> curl -u sysAdminEmail:password http://<node_IP>:8084/v1/servers/self
輸出內容的結尾應該會顯示執行中節點的 UUID 位址:
如果 Postgres 伺服器未執行,您可以在管理伺服器上執行下列指令來判斷 UUID:
> curl -u sysAdminEmail:password http://<ms_IP>:8080/v1/servers?pod=analytics
這個指令的輸出內容會列出各個 Postres IP 位址的 UUID。 - 重複執行上一個步驟,取得舊待命節點和新主要執行個體的 IP 位址。
- 從消費者群組中移除舊的主要和待命節點:
> curl -u sysAdminEmail:password -X DELETE "http://<ms_IP>:8080/v1/analytics/groups/ax/axgroup-001/consumer-group-001 UID
masterUUID,standbyUUID 與您查看上述目前的數據分析和消費者群組資訊時,會與上方顯示的順序相同。您可能需要將這些項目指定為 standbyUUID,masterUUID。
consumer-groups 的 datastores 屬性現在應為空白。 - 從 Analytics (分析) 群組中移除舊的主要和待命節點:
> curl -u sysAdminEmail:password -X DELETE "http://<ms_IP>:8080/v1/analytics/groups/ax/axgroup-001/servers?uuid=postserver-type=standbyUUID。 - 註冊新的 PG 主要節點和待命節點。
- 驗證數據分析群組:
> curl -u sysAdminEmail:password http://<ms_IP>:8080/v1/analytics/groups/ax
您應該會看到數據分析群組和消費者群組中列出的新主要和待命節點 UUID。 - 重新啟動 Edge Management Server:
> /opt/apigee/apigee-service/bin/apigee-service Edge-management-server restart - 重新啟動所有 Qpid 伺服器:
> /opt/apigee/apigee-service/bin/apigee-service Edge-qpid-server restart - 重新啟動所有 Postgres 伺服器:
> /opt/apigee/apigee-service/bin/apigee-service Edge-postgres-server restart - 在兩個伺服器上發出下列指令碼,驗證複製狀態。系統應在兩台伺服器上顯示相同的結果,確保複製成功:
在新的主要執行個體上,請執行:
> /opt/apigee/apigee-service/bin/apigee-service apigee-postgresql postgres-check-master
確認其為主要執行個體。
在舊的待命節點上:
> /opt/apigee/apigee-service/bin/apigee-service apigee-postgresql postgres-check-standby
確認該節點顯示為待命。 - 提出多個 API 要求後,重複上一個步驟,確保節點為同步狀態。
- 按照將 Apigee Edge 更新至 4.16.09 版中的程序,停用舊的 Postgres 主要執行個體。
注意:如果舊的主要節點正在執行 Qpid,您可以將該伺服器保留在伺服器中,以便執行 Qpid。確認伺服器正在執行。如果不是,請啟動下列步驟:
> /opt/apigee/apigee-service/bin/apigee-service Edge-management-server start
或者,您也可以解除安裝舊主要執行個體的 Qpid,然後在新的主要節點上安裝 Qpid,如下所述。解除安裝 Qpid 後,您可以停用舊的主要節點。
舊主要執行個體的 Uninstal Qpid,並在新的主要執行個體上安裝 Qpid
請按照下列程序將 Qpid 從舊的主要執行個體解除安裝,並在新的主要執行個體上安裝:
- 禁止訊息處理器對舊主要執行個體存取 Qpid 通訊埠 5672,方法是對所有訊息處理器執行下列指令:
> iptables -A OUTPUT -p tcp -d 10.233.147.20 --dport 5672 -j DROP - 執行下列指令,確保 Qpid 訊息佇列沒有任何內容。Qpid 必須先處理完所有待處理的訊息,才能解除安裝:
> qpid-stat -q
指令會顯示包含 msg、msgIn 和 msgOut 計數的資料表。系統會依據 msg=0 和 msgIn=msgOut 所處理的訊息,處理所有郵件。 - 在舊主要執行個體上執行下列指令,判定舊主要執行個體上的 Qpid 伺服器的 UUID。請儲存這項資訊,以便在稍後的程序中使用:
> curl -u sysAdminEmail:password http://<node_IP>::8083/v1/servers/self - 停止使用舊資料庫的 Qpid:
> /opt/apigee/apigee-service/bin/apigee-service Edge-qpid-server stop
> /opt/apigee/apigee-service/bin/apigee-service apigee-qpidd stop - 解除安裝 Qpid 伺服器:
> /opt/apigee/apigee-service/bin/apigee-serviceedge-qpid-server uninstall
> /opt/apigee/apigee-service/bin/apigee-service apigee-qpidd uninstall - 從 analytics 和消費端群組中移除舊的 Qpid 伺服器:
> curl -u sysAdminEmail:password -X DELETE -H "Content-Type: application/json" -d '' "http://<ms_IP>:8080/v1/analytics/curl/ax/ax - 將舊的 Qpid 伺服器從 Zookeeper 中移除:
> curl -u sysAdminEmail:password -X DELETE http://<ms_IP>:8080/v1/servers/qpid_UUID - 在新的主要節點上安裝 Qpid:
> /opt/apigee/apigee-setup/bin/setup.sh -p qs -f configFile - 在新主要執行個體上執行下列指令,以判斷新主要執行個體上的 Qpid 伺服器的 UUID。請儲存這項資訊,以便在稍後的程序中使用:
> curl -u sysAdminEmail:password http://<node_IP>::8083/v1/servers/self - 使用 analytics 和消費性群組註冊新的 Qpid 伺服器:
> curl -u - 重新啟動所有訊息處理器:
> /opt/apigee/apigee-service/bin/apigee-service Edge-message-processor restart - 請在新的 Qpid 伺服器上執行下列指令,以檢查是否已建立佇列:
> qpid-stat -q
當 Qpid 伺服器處理訊息時,請確認 msg、msgIn 和 msgOut 是處於更新狀態。
從 4.16.09 版復原個別元件
在執行復原的過程中,您必須下載目前 Edge 版本的 Bootstrap.sh 檔案:
- 如要復原至 4.16.05 版,請下載 bootstrap_4.16.05.sh
- 如要復原至 4.16.01, downlaod Bootstrap.sh
針對要復原的每個節點執行以下步驟:
- 停止元件即可復原:
-
如果您復原節點中的下列任一元件,就必須全部停止:管理伺服器、路由器、訊息處理器、Qpid 伺服器或 Postgres 伺服器:
- > apigee-service Edge-management-server stop
- > apigee-service Edge-router stop
- > apigee-service Edge-message-processor 停止
- > apigee-service Edge-qpid-server stop
- > apigee-service Edge-postgres-server stop
-
如果要復原節點上的任何其他元件,請停止該元件:
- > apigee-service comp 停止
-
如果您復原節點中的下列任一元件,就必須全部停止:管理伺服器、路由器、訊息處理器、Qpid 伺服器或 Postgres 伺服器:
- 如要復原「營利」功能,請將該節點從所有管理伺服器和訊息處理器節點中解除安裝:
> apigee-service Edge-mint-gateway 解除安裝 - 解除安裝該元件即可在節點上復原:
- 如果您復原節點上的下列任何元件,請全數解除安裝:管理伺服器、路由器、訊息處理器、Qpid 伺服器或 Postgres 伺服器:
> apigee-service Edge-gateway uninstall - 如果復原節點上的任何其他元件,請只解除安裝該元件:
> apigee-service comp 解除安裝
- 如果您復原節點上的下列任何元件,請全數解除安裝:管理伺服器、路由器、訊息處理器、Qpid 伺服器或 Postgres 伺服器:
- 如果復原路由器,就必須刪除 /opt/nginx/conf.d 的內容:
> cd /opt/nginx/conf.d
> rm -rf * -
如要復原元件:
- 解除安裝 4.16.09 版的 apigee-setup:
> /opt/apigee/apigee-service/bin/apigee-service apigee-setup uninstall - 下載 4.16.01 或 4.16.05 版的 bootstrap.sh:
4.16.01 版本:
> curl https://software.apigee.com/bootstrap.sh -o /tmp/bootstrap.sh
boot.4/boot.com/boot.com/boot.com/ - 安裝 4.16.01 或 4.16.05 apigee-service 公用程式和依附元件:
> sudo bash /tmp/bootstrap.sh apigeeuser=uName apigeepassword=pWord
其中 uName 和 pWord 是你透過 Apigee 取得的使用者名稱和密碼。如果省略 pWord,系統會提示您輸入。 - 安裝 apigee-setup 4.16.01 或 4.16.05 版:
> /opt/apigee/apigee-service/bin/apigee-service apigee-setup install - 安裝元件的 4.16.01 或 4.16.05 版本:
> /opt/apigee/apigee-setup/bin/setup.sh -p comp -f configFile
其中 comp 是要安裝的元件,configFile 為 4.16.16.16.1。
- 解除安裝 4.16.09 版的 apigee-setup:
-
如要將元件復原至 4.16.05 的特定版本:
- 下載特定元件版本:
> /<instal_dir>/apigee/apigee-service/bin/apigee-service comp-version install
其中 comp-version 是要安裝的元件和版本。例如:
> /<instal_dir>/apigee/apigee-service/bin/apigee-service Edge-ui-4.16.05-0.0.3649 install
如果您使用 Apigee 線上存放區,可以用下列指令來判斷可用的元件版本:
yum --showsduplicate list - 使用 apigee-setup
安裝元件:
> /<install_dir>/apigee/apigee-setup/bin/setup.sh -p comp -f configFile
舉例來說:
> /<install_dir>/apigee/apigee-setup/bin/setup.sh -p uiFile
- 下載特定元件版本:
如果在復原期間遇到問題,請與 Apigee 支援團隊聯絡。