SS/SSR做负载均衡的两种方法-荒岛

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

负载均衡最大的作用就是0宕机,可以做到宕机秒切换。SS/SSR的PC客户端都有负载均衡的功能,而且还可以根据延迟进行负载均衡,但iOS端就有点蛋疼了,一直使用PotatsoLite的我有时候真的挺需要这个功能的。

这里介绍两种方法,第一种用HAProxy,第二种用Nginx。个人推荐用Nginx,因为HAProxy不支持UDP,如果是用来玩游戏,那就有点蛋疼了。而且有时候也确实需要用到UDP。

这里我准备了3台机器,一台用来做负载均衡服务器,另外两台跑SSR服务,实现功能:两台SSR机器如有某一台挂了,本地客户端可以自动切换并连接到正常运行的那一台。

这里补充一下,LEDE软路由是有这个HAProxy功能的,而且做SS/SSR负载均衡的话,建议HAProxy是搭建在本地,因为如果你搭建在服务器上,你跑HAProxy的那台机器挂了也就失去了负载均衡的意义。

两个前提条件:

1:所有的SS/SSR密码必须一致。

2:所有的SS/SSR加密方式必须一致。如果是SSR,那么协议/混淆也必须一致。

先安装:

yum -y install haproxy

将默认的配置文件做一个备份:

mv /etc/haproxy/haproxy.cfg /etc/haproxy/haproxy.cfg.bak

新建一个配置文件:

nano /etc/haproxy/haproxy.cfg

写入下面的配置:

global chroot /var/lib/haproxy pidfile /var/run/haproxy.pid user haproxy group haproxy

defaults mode tcp #服务器默认的工作模式 balance roundrobin #服务器默认使用的均衡模式 retries 3 #三次连接失败表示服务器不可用 maxconn 5000 #最大连接数 timeout connect 500ms #连接超时 timeout client 3s #客户端超时 timeout server 3s #服务器超时

listen WebPanel mode http #这里使用HTTP模式 bind 0.0.0.0:50000 #WEB服务端口 stats refresh 5s #自动刷新时间 stats uri / #WEB管理地址 stats auth imlala:lala.im #账号密码 stats hide-version #隐藏版本 stats admin if TRUE #验证通过则赋予管理权

listen USA bind 0.0.0.0:50001 #服务端口 server usa1 1.2.3.4:55555 check inter 500 rise 2 fall 4 weight 100 #SS/SSR服务器地址与端口 server usa2 2.2.3.4:55555 check inter 500 rise 2 fall 4 weight 50 #SS/SSR服务器地址与端口

listen JP bind 0.0.0.0:50002 #服务端口 server jp1 3.2.3.4:55555 check inter 500 rise 2 fall 4 weight 100 #SS/SSR服务器地址与端口 server jp2 4.2.3.4:55555 check inter 500 rise 2 fall 4 weight 50 #SS/SSR服务器地址与端口

这里详细说一下这个配置里面的各项作用:

首先你需要将listen WebPanel段下的web管理员账户密码做一下修改。然后你就可以看到listen USA/JP这两段这里了。

一个listen代表一个服务,你可以把它分为多个组。现在假设你在美国有2台机器,日本有2台机器,那么就可以分成两组,组与组之间没有联系,HAProxy只会给在同一个组里面的机器做负载均衡。但这样我们得在HAProxy内起两个服务端口,一个端口用于美国,一个端口用于日本。如果你想将所有的机器都加在一个组里面也是可以的,这样就可以让4台机器做负载均衡。怎么选择看你自己。

server后面首先跟名字,名字随便起呗,自己能够区分就行。紧接着跟这台机器的公网IP+端口,端口也就是SS/SSR的端口。

check是检测的意思,这段配置很重要:

inter:单位毫秒,我配置的500,即500毫秒检测一次目标服务器。

rise2:设定健康状态检查中,某离线的服务器从离线状态转换至正常状态需要成功检查的次数,这里我设置的2次。

fall4:确认服务器从正常状态转换为不可用状态需要检查的次数,这里是4次。

weight:权重,值越大代表这台机器工作的机会越多,这里我们可以把一台线路较好的机器的权重设置高一些。

配置完成之后,务必关闭SELinux,否则我们无法使用systemd去正常运行HAProxy(这是一个坑):

sed -i ’s/SELINUX=enforcing/SELINUX=disabled/g’ /etc/selinux/config setenforce 0

启动HAProxy:

systemctl start haproxy systemctl enable haproxy

这样HAProxy就配置好了,可以访问WEB面板确认服务器是否都在正常工作,如下图显示绿色就是正常:

本地客户端在配置的时候就填写这台HAProxy服务器的IP+服务端口。

因为我这边目前正在使用LEDE软路由,我的推荐是有LEDE那就直接在LEDE上面设置:

这样设置之后并没有完成,HAProxy甚至都不会运行,我们还需要添加一个节点:

之后把账号设置里面的节点改为刚才添加的,如果在上方多出一个“负载均衡”的检测就说明配置完成:

现在介绍Nginx的方法,还是先安装:

yum -y install nginx

然后在Nginx的主配置文件内写一个include,因为我们需要用到stream段,这个段和http段是平级的,不能内嵌到http段使用:

echo “include /etc/nginx/tcpconf.d/*.conf;” » /etc/nginx/nginx.conf

创建一个存放配置文件的目录:

mkdir -p /etc/nginx/tcpconf.d

新建一个配置文件:

nano /etc/nginx/tcpconf.d/ssproxy.conf

写入如下配置:

stream {

upstream imlala {
    server 1.2.3.4:55555 weight=7;
    server 2.2.3.4:55555 weight=3;
}

server {
listen 50003;
    listen 50003 udp;
    proxy\_pass imlala;
}

}

这边我使用的是weight(权重)模式,可以去掉这两个设置让Nginx默认用于轮询模式。

最后我还看了一下Caddy,结果发现很可惜这个WEB服务器目前还不能够支持TCP/UDP的负载均衡,但可以实现中转的功能,并且配置也很简单,这里顺带记录一下。

首先在安装的时候得添加net插件:

curl https://getcaddy.com | bash -s personal net

然后新建配置文件:

nano /etc/caddy/Caddyfile

写入如下配置就能进行中转了:

proxy :50004 1.2.3.4:55555 { }

proxy :50005 2.2.3.4:55555 { }

注意,此时的Caddy启动时必须加上-type=net,插件功能才能生效:

caddy -type=net -conf=/etc/caddy/Caddyfile

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

See Also

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

现在服务器(vps)的入门配置一般内存在512M,甚至有更小的256M、128M,小到“发指”,被戏称为“小鸡”。随着vps的价格一路狂跌,再遇上打折促销,加上季付年付等优惠手段,你完全能在1、2美元左右淘到一个512M内存的vps。当我们 …

同一个宇宙

冰岛最著名的太空科幻游戏,EVE,在国内被译作《星战前夜》。这是个小误译,在游戏设定中,人类穿过EVE之门来到新伊甸星系,并建立新的家园。这里的eve不是前夜的意思,而是典指夏娃。 EVE的开发公司叫CCP,和我们的执政党缩写一样。 03年 …

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

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

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

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