平滑重启与平滑关闭

优雅的重启、升级和关闭机制是避免在发布新版本的 Pingora 服务器时出现错误或停机的常用方法。

Pingora 的优雅升级机制确保以下几点:

  • 请求的处理保障:请求会由旧实例或新实例中的一个处理,不会因尝试连接到服务器端点而遭遇“连接被拒绝”。
  • 请求的完成保障:在宽限期内能够完成的请求不会被中断。

如何进行优雅升级

步骤 0:配置升级套接字

配置升级套接字(socket)。旧实例和新实例需要约定使用相同的套接字路径。具体配置请参阅相关手册。

步骤 1:启动新实例

使用 --upgrade 命令行选项启动新实例。新实例不会立即尝试监听服务端点,而是尝试从旧实例获取监听套接字。

步骤 2:向旧实例发送 SIGQUIT 信号

向旧实例发送 SIGQUIT 信号,旧实例将开始将监听套接字转移到新实例。

一旦第 2 步成功,新实例将立即开始处理新的传入连接。同时,旧实例进入优雅关闭模式:

  1. 它会等待一段短暂时间(给新实例初始化并准备处理流量的时间)。
  2. 之后,它将停止接受任何新的连接。

优雅机制的关键点

  1. 无缝切换:通过套接字的传递,确保流量从旧实例顺利转移到新实例。
  2. 请求完整性:宽限期内的请求不会被强制中断。
  3. 零停机升级:保证新旧实例的无缝过渡,从而避免停机和连接拒绝。

这种机制特别适合在高负载环境下部署新版本,既保证服务的连续性,又减少用户感知到的影响。