平滑重启与平滑关闭
优雅的重启、升级和关闭机制是避免在发布新版本的 Pingora 服务器时出现错误或停机的常用方法。
Pingora 的优雅升级机制确保以下几点:
- 请求的处理保障:请求会由旧实例或新实例中的一个处理,不会因尝试连接到服务器端点而遭遇“连接被拒绝”。
- 请求的完成保障:在宽限期内能够完成的请求不会被中断。
如何进行优雅升级
步骤 0:配置升级套接字
配置升级套接字(socket)。旧实例和新实例需要约定使用相同的套接字路径。具体配置请参阅相关手册。
步骤 1:启动新实例
使用 --upgrade
命令行选项启动新实例。新实例不会立即尝试监听服务端点,而是尝试从旧实例获取监听套接字。
步骤 2:向旧实例发送 SIGQUIT 信号
向旧实例发送 SIGQUIT
信号,旧实例将开始将监听套接字转移到新实例。
一旦第 2 步成功,新实例将立即开始处理新的传入连接。同时,旧实例进入优雅关闭模式:
- 它会等待一段短暂时间(给新实例初始化并准备处理流量的时间)。
- 之后,它将停止接受任何新的连接。
优雅机制的关键点
- 无缝切换:通过套接字的传递,确保流量从旧实例顺利转移到新实例。
- 请求完整性:宽限期内的请求不会被强制中断。
- 零停机升级:保证新旧实例的无缝过渡,从而避免停机和连接拒绝。
这种机制特别适合在高负载环境下部署新版本,既保证服务的连续性,又减少用户感知到的影响。