方案
使用机场或者有多个小鸡的人,某个线路故障了,就得手动切换 ss 线路,实在太麻烦了,能不能自动负载均衡,使用可用的 VPS 呢?
答案是肯定的,这就是今天的主角—— Haproxy。
但是这个方案有个前提,那就是每个 ss 的密码和加密方式必须一样。
安装
1
sudo apt install haproxy
配置
1
2
sudo mv /etc/haproxy/haproxy.cfg /etc/haproxy/haproxy.cfg.bak # 备份
sudo vim /etc/haproxy/haproxy.cfg # 编辑配置文件
输入配置
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
global
log /dev/log local0
log /dev/log local1 notice
user root
group root
daemon
defaults
log global
mode tcp
timeout connect 5s
timeout client 5s
timeout server 5s
option dontlognull
option redispatch
retries 3
listen status
bind *:1111
mode http
stats refresh 30s
stats uri /status
stats realm Haproxy
stats auth admin:admin
stats hide-version
stats admin if TRUE
frontend shadowsocks-in
mode tcp
bind *:8388
default_backend shadowsocks-out
backend shadowsocks-out
mode tcp
option tcp-check
balance roundrobin
server servername1 xxxxx1.com:8088 check
server servername2 xxxxx2.net:8080 check
server servername3 12.34.56.78:9999 check
server servername4 123.234.234.123:443 check
配置分为五大部分:
-
global:全局配置,这里主要是配置了日志
-
defaults:默认配置,也是一些全局配置
-
listen:监听配置,我在
1111
端口配置了 http 监控页面,访问ip:1111/status
,认证用户名和密码都是admin
,具体含义参考博客「haproxy监控页面和页面详细参数」 -
frontend:前端配置,Shadowsocks 数据流从这里进入,流向指定后端,注意这里的端口号,即为 ss 客户端的输入端口
-
backend:后端配置,
balance
指定负载平衡方式,每个服务器写为一个 server 行,server 支持域名或 IP。如果使用域名,重启服务出现问题,可以参考博客「解决 Haproxy 用 Systemd 启动失败的问题」。
负载平衡方式只有简单的几种,复杂的需要查文档,可以参考「关于haproxy负载均衡的算法整理」
roundrobin:简单轮询,该算法是动态的,对于实例启动慢的服务器权重会在运行中调整
static-rr:根据权重分配,权重在后端 server 中设置
leastconn:根据服务器最少连接分配,这个模式适合长连接应用
使用
启动 haproxy:
1
sudo service haproxy start|stop|status|reload|restart|force-reload # 控制 haproxy 的运行
修改shadowsocks配置:
1
2
3
4
5
6
7
8
9
{
"server":"haproxy宿主机ip",
"server_port":8388,
"local_address":"127.0.0.1",
"local_port":1080,
"password":"你密码",
"timeout":600,
"method":"aes-256-cfb"
}
Haproxy 会将多个 ss 线路进行负载均衡整合,也即用 haproxy 宿主机一个 ss 线路,代替了原来多个 ss 线路,这样就不用手动选择了。
客户端
各代理方式推荐的客户端:
V2ray | ShadowsocksR | Shadowsocks | |
---|---|---|---|
VPS | V2ray配置脚本 | ssr配置脚本 | ssr配置脚本 |
Windows | V2RayN | shadowsocksr-csharp | Shadowsocks Windows |
MacOS | V2RayX或V2RayU | ShadowsocksX-NG | ShadowsocksX-NG |
Linux | 官方V2ray或Qv2ray | ssr一键使用脚本 | Shadowsocks Qt5 |
iOS | Shadowrocket | Potatso Lite、Shadowrocket | Potatso Lite、Shadowrocket |
Android | - | Shadowsocks Android | Shadowsocks Android |
参考
- 多Shadowsocks服务器负载均衡
- 解决 Haproxy 用 Systemd 启动失败的问题
- 利用haproxy做ss多线路的负载均衡
- 利用HAProxy实现ss-local多IP均衡负载
- Shadowsocks 客户端推荐