两台VPS如何实现keepalive连接?
| 方法 |
工具/技术 |
适用场景 |
配置复杂度 |
| SSH空包保持 |
PuTTY/WinSCP |
远程会话保持 |
低 |
| HAProxy负载均衡 |
HAProxy+Keepalived |
高可用服务架构 |
中高 |
| TCP心跳机制 |
自定义脚本 |
长连接应用 |
中 |
| WireGuard隧道 |
WireGuard |
加密通信与连接保持 |
中 |
两台VPS实现稳定Keepalive的完整指南
一、Keepalive的核心方法与技术实现
1. SSH空包保持机制
通过SSH客户端定期发送空包维持连接是最基础的方法。以PuTTY为例:
- 在Connection选项卡中设置"Sending of null packets"为30秒间隔
- 对于WinSCP,需在高级设置中勾选"发送空SSH包"并配置30秒心跳
- 原理是通过TCP层的心跳包防止中间设备断开空闲连接
2. HAProxy+Keepalived高可用方案
适用于生产环境的高可用架构配置步骤:
- 在两台VPS上安装HAProxy和Keepalived
- 配置HAProxy的负载均衡规则(示例配置):
global
log 127.0.0.1 local0
maxconn 2000
user haproxy
group haproxy
defaults
mode http
option httplog
option dontlognull
retries 3
timeout connect 5000ms
timeout client 50000ms
timeout server 50000ms
- 设置Keepalived的VIP漂移和健康检查
二、工具配置详解
1. 常用工具对比
| 工具名称 |
协议支持 |
Keepalive配置位置 |
推荐间隔 |
| PuTTY |
SSH |
Connection→Seconds |
30-60秒 |
| WinSCP |
SCP/SFTP |
高级→连接→Keepalives |
30秒 |
| SecureCRT |
SSH/Telnet |
终端→反空闲设置 |
60秒 |
2. HAProxy进阶配置
listen stats
bind *:1936
stats enable
stats uri /stats
stats refresh 10s
option httpchk
- 主备服务器优先级设置(主服务器100,备服务器90)
三、常见问题与解决方案
| 问题现象 |
可能原因 |
解决方案 |
| 连接频繁超时断开 |
防火墙空闲连接限制 |
调整TCP keepalive时间参数:sysctl -w net.ipv4.tcpkeepalivetime=300 |
| VIP在主备服务器同时出现 |
Keepalived配置错误 |
检查unicastpeer设置和优先级差异 |
| HAProxy后端服务不可达 |
健康检查配置不当 |
调整timeout参数,增加健康检查间隔 |
| SSH会话意外终止 |
网络设备NAT超时 |
组合使用SSH空包和TCP keepalive双重机制 |
四、性能优化建议
- 对于高并发场景,建议调整系统参数:
echo "net.ipv4.tcpkeepaliveintvl = 15" >> /etc/sysctl.conf
echo "net.ipv4.tcpkeepalive_probes = 5" >> /etc/sysctl.conf
- 使用WireGuard替代传统VPN可获得更好的连接保持效果
- 定期监控连接状态日志,及时调整Keepalive参数
通过以上方法,您可以有效解决两台VPS之间的连接保持问题,根据实际业务需求选择最适合的方案。对于关键业务系统,建议采用HAProxy+Keepalived的高可用架构;对于临时性连接需求,SSH空包保持机制则更为简便高效。
发表评论