主题
上游连接管理(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 失败或不可用时:
- 标记该 Peer 为不可用
- 根据重试策略选择其他可用 Peer
- 自动记录失败次数,支持恢复检测
通过合理配置 Peer 和连接池,Pingora 可以高效、可靠地管理上游服务器连接,实现稳定的代理服务和灵活的负载均衡策略。