shadowsocks借助nginx实现负载均衡,自动切换“零”宕机

by Homeagain, at 04 November 2019, tags : 中转 服务器 端口 点击纠错 点击删除
使用CN2/CN2GIA顶级线路,支持Shadowsocks/V2ray科学上网,支持支付宝付款,每月仅需 5 美元
## 加入品葱精选 Telegram Channel ##

现在服务器(vps)的入门配置一般内存在512M,甚至有更小的256M、128M,小到“发指”,被戏称为“小鸡”。随着vps的价格一路狂跌,再遇上打折促销,加上季付年付等优惠手段,你完全能在1、2美元左右淘到一个512M内存的vps。当我们手上的vps越来越多,就可以将他们通过负载均衡统一起来,实现自动切换0宕机的ss/ssr“系统”。

一、准备工作

首先你手里需要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端口。

shadowsocks借助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和地址填写在同一组里。

五、一些说明

  • 小鸡E选用国内服务器,一个好处是ss/ssr服务器如果被wall,国内服务器可以感知到。如果是在国外就做不到这点。
  • 小鸡E选用国内服务器另一个好处是:中转。如果你出国网速慢,很可能是因为你的出口线路不好;vps服务商的机房一般处于骨干网络,将小鸡E作为中转节点可以利用骨干网络的优势;完全不用担心中转就多出了一个路由节点,因为你不走中转,网络也会走其他节点,使用中转相当于你规划了路由。很多人觉得负载均衡后速度快了的原因就在这里。
  • 中转的方法有很多,开源软件haproxy可以中转,iptables可以中转,ss/ssr同样也可以中转,使用redirect字段就可以。但是nginx相对来说是完美的,nginx除了中转还能负载均衡,haproxy也可以负载均衡但是无法中转udp。

如果单纯用来中转,可以看看本站这篇文章:

通过iptables端口转发来实现ss/ssr的中转

本文系作者 @homeagain 原创发布在 懵比小站。未经许可,禁止转载。

最简单好用的 VPS,没有之一,注册立得 100 美金
comments powered by Disqus

See Also

翻墙软件与中国VPN推荐,2020年5月最新 - 墙妈妈

最后修改于: 2020年6月6日 翻墙软件现状 市场上的翻墙软件多如牛毛,如果你有幸访问国外苹果/安卓应用商店,搜一下”VPN”,能找到几十上百款APP,其中大部分我都试过,没几个能用的。我原本想做一次地毯式测试,但后来失去了耐心,实在太 …

Shadowsocks无法使用后的简单排除方法 | 逗比根据地

广告 本文最后更新于 2018年11月7日 18:53 可能会因为没有更新而失效。如已失效或需要修正,请留言! 每一个使用过Shadowsocks的人,几乎都会出现过Shadowsocks突然无法使用的情况,然而很多人并不知道怎么办,网上的 …