树莓派 Ubuntu 实现 sslocal 负载匀衡

由于某些原因,我配置了多个 ssserver,windows 客户端可以简单配置负载匀衡,而在 linux 上面需要借助 haproxy。

首先,因为我的服务是 aes-255-gcm 加密方式,需要升级 ss 客户端。

pip install https://github.com/shadowsocks/shadowsocks/archive/master.zip -U

修改 sslocal 配置,server 连接的是本地 haproxy 端口,增加/etc/shadowsocks/default.json

{
    "server": "127.0.0.1",
    "server_port": 8888,
    "local_address": "127.0.0.1",
    "local_port": 1234,
    "password": "password",
    "timeout": 50,
    "method": "aes-256-gcm",
    "fast_open": true,
    "workers": 2
}

为 sslocal 增加 service,增加/etc/systemd/system/sslocal.service

[Unit]
Description=Shadowsocks
After=network.target

[Service]
ExecStart=/usr/local/bin/sslocal -c /etc/shadowsocks/default.json
Restart=on-abort

[Install]
WantedBy=multi-user.target

好了,sslocal 的部分说完了,接下来 apt 安装 haproxy,修改/etc/haproxy/haproxy.cfg,增加以下行。

listen status
    bind *:1111
    mode  http
    stats refresh 30s
    stats uri /status
    stats realm Haproxy
    stats auth admin:admin

frontend ss-in
    mode tcp
    bind *:8888
    default_backend ss-out

backend ss-out
    mode tcp
    option tcp-check
    balance roundrobin
    server xxx <server>:<port> check
    server yyy <server>:<port> check
    server zzz <server>:<port> check

配置完成还要改一下 systemd,/etc/systemd/system/haproxy.service,修改 After 和 Wants 字段,用 network-online.target 替换 network.target。

最后用 systemd 启动 haproxy 和 sslocal。

sudo systemd enable haproxy
sudo systemd enable sslocal

参考链接

求教如何让 ss 客户端支持 aes-256-gcm 加密方式

guyskk/shadowsocks-server.service

多 Shadowsocks 服务器负载均衡

解决 Haproxy 用 Systemd 启动失败的问题