教程 pingora tutorial

上游连接管理(Peer)

Pingora 支持通过 Peer 管理与上游服务器的连接。
正确配置和管理 Peer 可以提高代理性能、稳定性和可用性。

什么是 Peer

  • Peer 代表一个上游服务器或服务器组
  • 负责处理客户端请求的转发
  • 提供连接池、复用和故障恢复机制

配置上游服务器

在配置文件中定义 Peer:

yaml
proxy:
  upstreams:
    - name: backend
      servers:
        - "127.0.0.1:8000"
        - "127.0.0.1:8001"
      max_connections: 50
      retry_policy:
        retries: 3
        backoff: 100ms

`

参数说明

参数 说明
name 上游服务器名称
servers 上游服务器地址列表
max_connections 最大并发连接数
retry_policy 失败重试策略,包括重试次数和间隔

连接复用

Pingora 的 Peer 自动管理连接池,支持长连接复用:

rust
let peer = Peer::new("127.0.0.1:8000");
peer.get_connection()?; // 从连接池获取或新建
  • 减少频繁建立 TCP/TLS 连接的开销
  • 提高请求处理效率
  • 支持 HTTP/1.1 和 HTTP/2 多路复用

负载均衡策略

Pingora 提供多种上游负载均衡策略:

  • 轮询(Round-Robin):均匀分配请求
  • 最少连接(Least Connections):优先发送到活跃连接最少的服务器
  • 自定义策略:可通过过滤器或回调实现

故障处理与切换

当某个 Peer 失败或不可用时:

  1. 标记该 Peer 为不可用
  2. 根据重试策略选择其他可用 Peer
  3. 自动记录失败次数,支持恢复检测

通过合理配置 Peer 和连接池,Pingora 可以高效、可靠地管理上游服务器连接,实现稳定的代理服务和灵活的负载均衡策略。