離線升級 OpenResty Edge
注意
升級前請與 OpenResty Inc. 的同事約定升級時間。1. 獲取離線包
如果您沒有名稱為 OpenResty-Edge-Offline-VERSION.tar.gz
的離線包,請使用郵箱在 OpenResty 下載中心 登入並下載。
tar xf OpenResty-Edge-Offline-VERSION.tar.gz
# 如: tar xf OpenResty-Edge-Offline-22.6.1-15.tar.gz
通常離線包裡會包含以下內容:
openresty-postgresql.tar.gz
,僅升級時使用openresty-postgresql12.tar.gz
openresty-edge-admin.tar.gz
openresty-edge-node.tar.gz
openresty-edge-log-server.tar.gz
update-admin-db.sh
,僅升級時使用update-log-server-db.sh
,僅升級時使用init-admin-db.sh
,僅安裝時使用init-log-server-db.sh
,僅安裝時使用
2. 升級 Log Server 資料庫
升級資料庫程式
如果你的系統中已經安裝了 openresty-postgresql 請使用
openresty-postgresql.tar.gz
; 如果你的系統中已經安裝了 openresty-postgresql12 請使用openresty-postgresql12.tar.gz
。# 把 openresty-postgresql[12].tar.gz 傳輸到 Log Server DB 所在的機器上 tar xf openresty-postgresql[12].tar.gz cd openresty-postgresql[12] sudo bash upgrade.sh
升級資料庫 Schema
# 把 update-log-server-db.sh 傳輸到 Log Server DB 所在的機器上 bash update-log-server-db.sh
3. 升級 Log Server
檢視並記錄升級前的版本資訊:
# centos/redhat/fedora rpm -q openresty-edge-log-server # or rpm -q openresty-edge-log-server-prod # debian/ubuntu dpkg -l | grep openresty-edge-log-server # or dpkg -l | grep openresty-edge-log-server-prod
升級
# 把 openresty-edge-log-server.tar.gz 傳輸到 Log Server 所在的機器上 tar xf openresty-edge-log-server.tar.gz cd openresty-edge-log-server sudo bash upgrade.sh
降級
如升級失敗,可以執行以下步驟進行降級:
# 下載降級指令碼 curl -O https://openresty.com/client/oredge/downgrade-edge-log-server-offline.sh # 放到舊的 Log Server 的離線安裝包的目錄中 cp downgrade-edge-log-server-offline.sh <old-packages-dir> # 執行降級指令碼 sudo bash downgrade-edge-log-server-offline.sh
4. 升級 Edge Node
先升級 1~2
個 Edge Node,沒問題後再全部升級,升級過程中請關注錯誤日誌。
檢視並記錄升級前的軟體版本:
# centos/redhat/fedora rpm -q openresty-edge-node # or rpm -q openresty-edge-node-prod # debian/ubuntu dpkg -l | grep openresty-edge-node # or dpkg -l | grep openresty-edge-node-prod
切走流量,如果您是使用 Edge 的 DNS,請按照以下步驟進行;否則,請根據您實際情況進行。
把準備升級的 Edge Node 節點下線:
- 進入【閘道器叢集】頁面
- 對節點所在叢集進行【編輯】
- 修改節點【狀態】為【關閉 DNS,關閉叢集快取】
- 儲存
等待節點不再有流量。可透過檢視訪問日誌檢查是否還有流量:
tail -f /usr/local/oredge-node/logs/access.log
此過程需要等待 DNS 過期,較為耗時。
升級:
# 把 openresty-edge-node.tar.gz 傳輸到 Edge Node 所在的機器上 tar xf openresty-edge-node.tar.gz cd openresty-edge-node sudo bash upgrade.sh
降級
如升級失敗,可以執行以下步驟進行降級:
# 下載降級指令碼 curl -O https://openresty.com/client/oredge/downgrade-edge-node-offline.sh # 放到舊的 Edge Node 的離線安裝包的目錄中 cp downgrade-edge-node-offline.sh <old-packages-dir> # 執行降級指令碼 sudo bash downgrade-edge-node-offline.sh
5. 升級 Edge Admin 資料庫
- 備份資料庫
執行備份命令前,請先檢查磁碟空間是否足夠。
# 請替換 127.0.0.1 成實際的 IP,替換 5432 成實際的埠。
/usr/local/openresty-postgresql12/bin/pg_dump or_edge_admin \
-h 127.0.0.1 -p 5432 -U postgres --schema-only \
| gzip > db_edge_admin_schema_$(date '+%Y-%m-%d').sql.gz
/usr/local/openresty-postgresql12/bin/pg_dump or_edge_admin \
-h 127.0.0.1 -p 5432 -U postgres --data-only \
| gzip > db_edge_admin_data_$(date '+%Y-%m-%d').sql.gz
升級資料庫程式
如果你的系統中已經安裝了 openresty-postgresql 請使用
openresty-postgresql.tar.gz
; 如果你的系統中已經安裝了 openresty-postgresql12 請使用openresty-postgresql12.tar.gz
。# 把 openresty-postgresql[12].tar.gz 傳輸到 Edge Admin 資料庫所在的機器上 tar xf openresty-postgresql[12].tar.gz cd openresty-postgresql[12] sudo bash upgrade.sh
升級資料庫 Schema
# 把 update-admin-db.sh 傳輸到 Edge Admin 資料庫所在的機器上 bash update-admin-db.sh
6. 升級 Edge Admin
檢視並記錄升級前的軟體版本:
# centos/redhat/fedora rpm -q openresty-edge-admin # or rpm -q openresty-edge-admin-prod # debian/ubuntu dpkg -l | grep openresty-edge-admin # or dpkg -l | grep openresty-edge-admin-prod
升級
# 把 openresty-edge-admin.tar.gz 傳輸到 Edge Admin 所在的機器上 tar xf openresty-edge-admin.tar.gz cd openresty-edge-admin sudo bash upgrade.sh
降級
如升級失敗,可以執行以下步驟進行降級:
# 下載降級指令碼 curl -O https://openresty.com/client/oredge/downgrade-edge-admin-offline.sh # 放到舊的 Edge Admin 的離線安裝包的目錄中 cp downgrade-edge-admin-offline.sh <old-packages-dir> # 執行降級指令碼 sudo bash downgrade-edge-admin-offline.sh
7. 重新編譯
需要重新編譯應用,建議按照這樣的順序來:
- 先重新編譯幾個流量較少的不包含泛域名的 HTTP 應用
- 重新編譯幾個大流量的不包含泛域名的 HTTP 應用
- 全量編譯所有包含泛域名的應用
- 全量編譯所有應用
- 編譯全域性規則
# 在 admin 機器上
cd /usr/local/oredge-admin/
# 重新編譯升級相容配置
sudo /bin/bash utils/recompile-apps.sh upgrade-config
# 重新編譯指定應用 ( APP-ID 替換為應用 ID)
sudo /bin/bash utils/recompile-apps.sh http APP-ID
# 重新編譯所有應用
sudo /bin/bash utils/recompile-apps.sh wildcard-http
sudo /bin/bash utils/recompile-apps.sh http
sudo /bin/bash utils/recompile-apps.sh http_proxy
sudo /bin/bash utils/recompile-apps.sh socks5_proxy
# 重新編譯全域性規則
sudo /bin/bash utils/recompile-apps.sh global
# 重新編譯waf規則
sudo /bin/bash utils/recompile-apps.sh waf
# 重新編譯dns
sudo /bin/bash utils/recompile-apps.sh dns
# 重新編譯全域性動作
sudo /bin/bash utils/recompile-apps.sh global-action
# 重新編譯閘道器節點(可能會觸發 node 節點過載)
sudo /bin/bash utils/recompile-apps.sh gateway
如果業務指標都表現正常,升級完成!
如果 HTTP/HTTPS 應用數量很多,可能這一步的編譯時間會比較長:
sudo /bin/bash utils/recompile-apps.sh http
此時,我們推薦用另外一個工具,來併發編譯,如下命令將啟動 4 個程序來編譯:
sudo /bin/bash utils/parallel-recompile.sh
如果不夠快,也可以指定更大的併發,但是不能超過 8,比如:
sudo /bin/bash utils/parallel-recompile.sh 8
有問題請與我們隨時溝通!