# 1. 升级 Node

先升级 1~2 个 Node,没问题后再全部升级,升级过程中请关注错误日志。

  • 查看并记录升级前的软件版本:

    # centos/redhat/fedora
    rpm -q openresty-edge-node-prod
    
    # debian/ubuntu
    dpkg -l | grep openresty-edge-node-prod
    
  • 把准备升级的 Node 节点下线:

    • 进入【网关集群】页面
    • 对节点所在集群进行【编辑】
    • 修改节点【状态】为【关闭 DNS,关闭集群缓存】
    • 保存
  • 等待节点不再有流量。可通过查看访问日志确定:

    tail -f /usr/local/oredge-node/logs/access.log
    
  • 下载升级脚本:

    # centos
    curl -O https://openresty.com/client/centos/upgrade-edge-node-prod.sh
    
    # redhat
    curl -O https://openresty.com/client/rhel/upgrade-edge-node-prod.sh
    
    # fedora
    curl -O https://openresty.com/client/fedora/upgrade-edge-node-prod.sh
    
    # ubuntu
    curl -O https://openresty.com/client/ubuntu/upgrade-edge-node-prod.sh
    
    # debian
    curl -O https://openresty.com/client/debian/upgrade-edge-node-prod.sh
    
  • 执行升级脚本

    sudo bash -x upgrade-edge-node-prod.sh
    
  • 如升级失败,可执行以下步骤回滚:

    • 降级软件版本:

      # centos/redhat/fedora, 请替换 [% package-version-number %] 为实际版本号
      sudo yum downgrade -y openresty-edge-node-prod-[% package-version-number %].noarch
      
      # debian/ubuntu, 请替换 [% package-version-number %] 为实际版本号
      sudo apt-get install openresty-edge-node-prod=[% package-version-number %]
      
    • 还原旧服务:

      sudo systemctl start upgrade-oredge-node
      

# 2. 升级 Log Server

  • 升级时序库(如果您当前的 Log Server 版本 <= 0.0.1.88,则需要执行此步骤

    • 安装时序库:

      # centos/redhat/fedora
      # 如果 postgresql 版本是 12,则执行:
      sudo yum install -y openresty-postgresql12-timescaledb
      # 如果 postgresql 版本是 9,则执行:
      sudo yum install -y openresty-postgresql-timescaledb
      
      # debian/ubuntu
      # 如果 postgresql 版本是 12,则执行:
      sudo apt install -y openresty-postgresql12-timescaledb
      # 如果 postgresql 版本是 9,则执行:
      sudo apt install -y openresty-postgresql-timescaledb
      
    • 配置时序库:

      # postgresql.conf 的路径根据实际修改,以下是默认路径
      (sudo grep -vF "shared_preload_libraries = 'timescaledb'" /var/postgres/data/postgresql.conf; echo "shared_preload_libraries = 'timescaledb'") | sudo tee /var/postgres/data/postgresql.conf
      
      sudo /etc/init.d/openresty-postgresql restart
      
  • 升级前请准备以下文件:(如缺少,请联系我们进行确认)

    update-log-server-db-[% script-version-number %].sh

  • 升级数据库:

    # 请替换 [% script-version-number %] 为实际的版本号
    bash update-log-server-db-[% script-version-number %].sh
    
  • 下载升级脚本:

    # centos
    curl -O https://openresty.com/client/centos/upgrade-edge-log-server-prod.sh
    
    # redhat
    curl -O https://openresty.com/client/rhel/upgrade-edge-log-server-prod.sh
    
    # fedora
    curl -O https://openresty.com/client/fedora/upgrade-edge-log-server-prod.sh
    
    # ubuntu
    curl -O https://openresty.com/client/ubuntu/upgrade-edge-log-server-prod.sh
    
    # debian
    curl -O https://openresty.com/client/debian/upgrade-edge-log-server-prod.sh
    
  • 执行升级脚本:

    sudo bash -x upgrade-edge-log-server-prod.sh
    
  • 如升级失败,可执行以下步骤回滚:

    • 降级软件版本:

      # centos/redhat/fedora, 请替换 [% package-version-number %] 为实际版本号
      sudo yum downgrade -y openresty-edge-log-server-prod-[% package-version-number %].noarch
      
      # debian/ubuntu, 请替换 [% package-version-number %] 为实际版本号
      sudo apt-get install openresty-edge-log-server-prod=[% package-version-number %]
      
    • 还原旧服务:

      sudo systemctl start upgrade-oredge-log-server
      

# 3. 升级 Admin

  • 升级前请准备以下文件:(如缺少,请联系我们进行确认)

    update-admin-db-[% script-version-number %].sh

  • 升级数据库:

    # 请替换 [% script-version-number %] 为实际的版本号
    bash update-admin-db-[% script-version-number %].sh
    
  • 下载升级脚本:

    # centos
    curl -O https://openresty.com/client/centos/upgrade-edge-admin-prod.sh
    
    # redhat
    curl -O https://openresty.com/client/rhel/upgrade-edge-admin-prod.sh
    
    # fedora
    curl -O https://openresty.com/client/fedora/upgrade-edge-admin-prod.sh
    
    # ubuntu
    curl -O https://openresty.com/client/ubuntu/upgrade-edge-admin-prod.sh
    
    # debian
    curl -O https://openresty.com/client/debian/upgrade-edge-admin-prod.sh
    
  • 执行升级脚本:

    sudo bash -x upgrade-edge-admin-prod.sh
    
  • 如升级失败,可执行以下步骤回滚:

    • 降级软件版本:

      # centos/redhat/fedora, 请替换 [% package-version-number %] 为实际版本号
      sudo yum downgrade -y openresty-edge-admin-prod-[% package-version-number %].noarch
      
      # debian/ubuntu, 请替换 [% package-version-number %] 为实际版本号
      sudo apt-get install openresty-edge-admin-prod=[% package-version-number %]
      
    • 还原旧服务:

      sudo systemctl start upgrade-oredge-admin
      

# 4. 重新编译

  • 重新编译应用,建议按照这样的顺序来:

    1. 先重新编译几个流量较少的应用
    2. 重新编译几个大流量应用
    3. 全量编译所有应用
    4. 编译全局规则
    # 在 admin 机器上
    cd /usr/local/oredge-admin/
    # 重新编译指定应用 ( APP-ID 替换为应用 ID)
    sudo bash utils/recompile-apps.sh http APP-ID
    # 重新编译所有应用
    sudo bash utils/recompile-apps.sh http
    sudo bash utils/recompile-apps.sh http_proxy
    sudo bash utils/recompile-apps.sh socks5_proxy
    # 重新编译全局规则
    sudo bash utils/recompile-apps.sh global
    # 重新编译waf规则
    sudo bash utils/recompile-apps.sh waf
    # 重新编译dns
    sudo bash utils/recompile-apps.sh dns
    # 重新编译全局动作
    sudo bash utils/recompile-apps.sh global-action
    # 重新编译网关节点(可能会触发 node 节点重载)
    sudo bash utils/recompile-apps.sh gateway
    

有问题我们随时沟通 😃