准备工作
首先你手里需要 2 个或以上小鸡装了 ss/ssr。这里演示我们有 4 个装有 ss/ssr 的小鸡,取名为小鸡 A、B、C、D,搭建在各自上面的 ss/ssr 的 ip 和端口分别为:1.1.1.1:10000、2.2.2.2:20000、3.3.3.3:30000、4.4.4.4:40000;再准备一个服务器搭建 nginx 做负载均衡用,取名为小鸡 E,这台服务器最好是国内的,可以感知小鸡 A、B、C、D 是否被墙。
特别注意:
需要负载均衡的小鸡之间(同一组,下面有讲),ss/ssr 的账号密码协议加密混淆什么的都得一样。ssr 可以兼容 ss,如果使用 ss 软件,小鸡的 ss 和 ssr 可以混用;如果使用 ssr 软件,小鸡都必须是 ssr,且除 ip 和端口外,所有设置必须相同。
安装 nginx
在小鸡 E 上安装 nginx,推荐使用 Ubuntu/Debian 系统,Centos 当然也可以,但是 Centos 默认 yum 源里面没有 nginx。下面演示的 Centos 系统为 7 版本。
Ubuntu/Debian
apt-get update
apt-get install nginx -y
service nginx start
Centos7
yum update
sudo rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
yum install nginx -y
service nginx start
安装完毕后,在浏览器中输入小鸡 E 的 ip 地址,能打开网站即为成功。否则检查 nginx 是否启动,阿里腾讯等服务商需要额外检查防火墙是否开放 80 端口。
NGINX
配置负载均衡
创建并打开一个自定义的配置文件
mkdir -p /etc/nginx/tcpconf.d
vi /etc/nginx/tcpconf.d/ssrproxy.conf
写入如下配置:
stream {
upstream group1 {
server 1.1.1.1:10000;
server 2.2.2.2:20000;
}
server {
listen 10000;
listen 10000 udp;
proxy_pass group1;
}
upstream group2 {
server 3.3.3.3:30000;
server 4.4.4.4:40000;
}
server {
listen 20000;
listen 20000 udp;
proxy_pass group2;
}
}
解释:
这里一共有两组:group1 和 group2
使用小鸡 E 的 10000 端口来转发流量到小鸡 A(1.1.1.1)或小鸡 B(2.2.2.2)
使用小鸡 E 的 20000 端口转发流量到小鸡 C(3.3.3.3)或小鸡 D(4.4.4.4)
形如 1.1.1.1:10000 这样的,就是你的小鸡 A、B、C、D 们上的 ss/ssr 的 ip 地址和端口了,
不能错了。每个组都有一个或多个流量转发的对象,比如 group1 里有 1.1.1.1 和 2.2.2.2,不是说流量同时转发到这两个服务器,而是通过 nginx 的负载均衡,自动轮询并转发流量到合适的服务器。
之后我们找到 nginx 的主配置文件,将上面自定义配置加载进 nginx 里。主配置文件一般在/etc/nginx/nginx.conf或者 /etc/nginx/conf/nginx.conf
里。
echo "include /etc/nginx/tcpconf.d/*.conf;" >> /etc/nginx/nginx.conf
重启一下 nginx 使配置生效
service nginx restart
如何使用
在 ss/ssr 客户端填写配置中,ip 地址就是小鸡 E 的 ip 地址,端口就是小鸡 E 用来转发流量的端口,其他配置不变。借助负载均衡,你无需手动切换客户端的服务器,就能实现自动切换到可用的服务器了。
例如:
假设小鸡 E(负责负载均衡的服务器)的 ip 为 5.5.5.5,填写的 ip 就是 5.5.5.5。端口如果填写 10000,相当于使用小鸡 A 和小鸡 B;
端口如果填写 20000,相当于使用小鸡 C 和小鸡 D。如果你想要所有的小鸡都在一个自动切换里,就把所有小鸡的 ip 和地址填写在同一组里。