【二】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从未关闭。

相关推荐
徐子元竟然被占了!!5 分钟前
Nginx
运维·nginx
浪客川1 小时前
【百例RUST - 013】泛型
开发语言·后端·rust
图图玩ai1 小时前
SSH 命令管理工具怎么选?从命令收藏到批量执行一次讲清
linux·nginx·docker·ai·程序员·ssh·可视化·gmssh·批量命令执行
CXH7282 小时前
nginx——https
运维·nginx·https
穗余3 小时前
Rust——println!后面的感叹号什么意思【宏】
开发语言·python·rust
Lentou4 小时前
nginx反向代理
运维·nginx
遇见火星4 小时前
linux设置开启启动服务
linux·运维·服务器·nginx
咸鱼翻身小阿橙5 小时前
QT P4
数据库·qt·nginx
Rust研习社6 小时前
Rust 写时克隆智能指针 Cow
后端·rust·编程语言