中转机借助Nginx实现负载均衡,自动切换“零”宕机
中转机借助Nginx实现负载均衡,自动切换“零”宕机
home again现在服务器(vps)的入门配置一般内存在512M,甚至有更小的256M、128M,小到“发指”,被戏称为“小鸡”。随着vps的价格一路狂跌,再遇上打折促销,加上季付年付等优惠手段,你完全能在1、2美元左右淘到一个512M内存的vps。当我们手上的vps越来越多,就可以将他们通过负载均衡统一起来,实现自动切换0宕机。
准备工作
无论是SS、SSR还是V2ray,又或者是其他,都是一个思路,下面演示把它们统称为代理。
这里演示我们有4个装有代理的小鸡,分别为小鸡A、B、C、D,ip和端口分别为:1.1.1.1:10000、2.2.2.2:20000、3.3.3.3:30000、4.4.4.4:40000;准备一台国内服务器搭建nginx做负载均衡用,取名为小鸡E。
需要负载均衡的小鸡之间(同一组,下面有讲),除了ip和端口之外,代理的账号密码协议加密混淆什么的都得一样,否则负载均衡会失败。
二、安装nginx
在小鸡E上安装nginx,推荐使用Ubuntu/Debian系统,Centos当然也可以,但是Centos默认yum源里面没有nginx,我们需要添加额外的源。
Ubuntu/Debian |
Centos7
yum update |
安装完毕后,在浏览器中输入小鸡E的ip地址,能打开网站即为成功。否则检查nginx是否启动,阿里腾讯等服务商需要额外检查防火墙是否开放80端口。
配置负载均衡
创建并打开一个自定义的配置文件
mkdir -p /etc/nginx/tcpconf.d |
写入如下配置:
stream { |
这里一共分成了两组:group1和group2。使用小鸡E的10000端口对应group1,用来转发流量到小鸡A(1.1.1.1)或小鸡B(2.2.2.2),小鸡E的20000端口对应group2,用来转发流量到小鸡C(3.3.3.3)或小鸡D(4.4.4.4)。每个组都有一个或多个流量转发的对象,比如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 |
如何使用
在代理客户端填写配置中,ip地址就是小鸡E的ip地址,端口就是小鸡E用来转发流量的端口,其他配置不变。借助负载均衡,你无需手动切换客户端的服务器,就能实现自动切换到可用的服务器了。
例如:假设小鸡E(负责负载均衡的服务器)的ip为5.5.5.5,填写的ip就是5.5.5.5。端口如果填写10000,相当于使用小鸡A和小鸡B;端口如果填写20000,相当于使用小鸡C和小鸡D。如果你想要所有的小鸡都在一个自动切换里,就把所有小鸡的ip和地址填写在同一组里。
一些说明
- 小鸡E选用国内服务器,一个好处是代理服务器如果被wall,国内服务器可以感知到。选用国外服务器就做不到。
- 中转的方法有很多,开源软件haproxy可以中转,iptables可以中转。但是nginx相对来说是完美的,nginx除了中转还能负载均衡,还能同时支持udp和tcp。haproxy也可以负载均衡但不支持udp。
如果单纯用来中转,可以看看本站这篇文章:
通过iptables端口转发来实现ss/ssr的中转