离线升级 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
有问题请与我们随时沟通!