【二】pingora入门:命令行选项、配置、服务优雅升级

原文发布在:【二】pingora入门:命令行选项、配置、服务优雅升级

写在前面

书接上回:【一】pingora入门:负载均衡 和 健康检查

还没有看过前一篇文章的,建议先看看哦。

同样的,这篇博客的内容来源于:quick_start

命令行选项

Pingora Server 提供了许多内置功能,我们只需要单行更改就能使用上这些功能

rust 复制代码
fn main() {
    let mut my_server = Server::new(Some(Opt::parse_args())).unwrap();
    ...
}

做出这一更改后,Pingora 将消耗传递给负载均衡器的命令行参数。我们可以通过运行

rust 复制代码
cargo run -- -h

我们应该会看到一个帮助菜单,其中列出了我们现在可以使用的参数列表。在接下来的章节中,我们将利用这些参数,使用负载均衡器做更多事情

在后台运行

通过参数 -d--daemon 可以让程序在后台运行。

rust 复制代码
cargo run -- -d

要停止该服务,可以向其发送 SIGTERM 信号以实现优雅关机,在这种情况下,该服务将停止接受新请求,但会在退出前尝试完成所有正在进行的请求。

rust 复制代码
pkill -SIGTERM load_balancer

(SIGTERM 是 pkill 的默认信号)。

配置

Pingora 配置文件有助于定义如何运行服务。下面是一个配置文件示例,其中定义了服务可以有多少个线程、pid 文件的位置、错误日志文件和升级协调socket(我们稍后会解释)。

复制下面的内容,将其放入你的项目目录下名为 conf.yaml 的文件中。

yaml 复制代码
---
version: 1
threads: 2
pid_file: /tmp/load_balancer.pid
error_log: /tmp/load_balancer_err.log
upgrade_sock: /tmp/load_balancer.sock

要使用此conf文件:

shell 复制代码
cat /tmp/load_balancer.pid

RUST_LOG=INFO 位于此处,以便服务填充错误日志

现在你可以找到服务的 pid

shell 复制代码
 cat /tmp/load_balancer.pid

服务优雅升级(Linux only)

假设我们更改了负载均衡器的代码,并重新编译了二进制文件。现在,我们要将后台运行的服务升级到这个更新的版本。

如果我们只是简单地停止旧服务,然后启动新服务,那么中间到达的一些请求可能会丢失。幸运的是,Pingora 提供了一种优雅的方法来升级服务。

具体做法是,首先向运行中的服务器发送 SIGQUIT 信号,然后使用参数 -u \ --upgrade 启动新服务器。

shell 复制代码
pkill -SIGQUIT load_balancer && \
RUST_LOG=INFO cargo run -- -c conf.yaml -d -u

在此过程中,运行中的旧服务器将等待并将其监听sockets移交给新服务器。然后,旧服务器开始运行,直到所有正在进行的请求都完成为止。

从客户端的角度来看,服务始终在运行,因为监听sockets从未关闭。

相关推荐
Linux运维老纪2 小时前
Nginx常用配置之详解(Detailed Explanation of Common Nginx Configurations)
计算机网络·nginx·微服务·云原生·架构·云计算·运维开发
苹果醋35 小时前
Golang的容器编排实践
运维·vue.js·spring boot·nginx·课程设计
WITLab5 小时前
Rust 实践教程-开发工具及简单配置(002)
rust
花姐夫Jun6 小时前
基于CentOS的Docker + Nginx + Gitee + Jenkins部署总结
nginx·docker·centos·jenkins
暗碳7 小时前
termux配置nginx+php
运维·nginx·php
运维搬运工14 小时前
nginx
运维·nginx
ChineHe14 小时前
nginx基础篇 - 入门介绍与安装教程
运维·nginx
嗑瓜子儿溜茶水儿14 小时前
docker 部署 NginX
nginx·docker·容器
一二小选手17 小时前
【Nginx】Nginx代理模式相关概念解释及Nginx安装
java·nginx·代理模式
Elcker20 小时前
Koi技术教程-Tauri-第一章 Tauri简介
javascript·rust