之前的文章里写过HaProxy可以做高性能负载平衡服务器,可以很有效的在多台HTTP服务器之间实现实现负载平衡,而且HaProxy还支持TCP(四层)负载平衡,这就意味着我们可以利用HaProxy给已经被墙的某些服务搭个跳板,或者利用这个做前端加速SS的访问速度。

点击图片打开原图地址

今天我将利用HaProxy在国内的BGP机房作为跳板,为我法国的一个SS服务器进行加速。HaProxy可以部署在任何VPS或者容器服务上。这里使用的是Ubuntu操作系统,同时CentOS也可以用相同的方法安装。

执行安装:
apt-get install haproxy
yum install haproxy

修改配置文件(使用yum/apt-get安装的配置文件在/etc/haproxy/目录下)
vim /etc/haproxy/haproxy.cfg

我在这里贴一个配置范例,你可以根据你的需要修改.

#Global部分可以直接使用默认配置
global
log 127.0.0.1 local2
chroot /var/lib/haproxy
pidfile /var/run/haproxy.pid
maxconn 4000
user haproxy
group haproxy
daemon
#Default部分除了mode可以保留http以外其他有http的项目都需要注释掉比方说httplog和httpclose
defaults
mode http
log global
option dontlognull
option httpclose
#option httplog
option tcplog
#option forwardfor
option redispatch
timeout connect 10000 # default 10 second time out if a backend is not found
timeout client 300000
timeout server 300000
maxconn 60000
retries 3
#设置前端(Haproxy监听端口)
frontend tcp-proxy-front
bind *:8088
mode tcp
default_backend tcp-proxy-back
#设置后端(SS服务器端口)
backend tcp-proxy-back
mode tcp
balance leastconn #HaProxy有多种负载平衡算法,当前是使用连接数最少的服务器,可以切换为"roundrobin(轮询)""static-rr(权重)"更多方式可以参考官方文档
server tcp-proxy 10.1.27.20:10021 #假定为该IP,可以不在同一局域网内
#server tcp-proxy-2 10.1.27.21:10021 #设定负载平衡

启动HaProxy
service haproxy start

简单设置后HaProxy就处于工作状态了,如果你有硬件防火墙,不要忘记开放端口.

直接看SS客户端似乎看不出什么变化,这里测速试试.
上图是通过HaProxy前端的测速结果

下图是没有前端直接连接的测速结果

由于我目前的宽带是长城宽带,所以结果可能略为奇怪,如果是电信联通的话效果可能会更好,该方法也可以为已经被墙的SSH或SS做跳板,使用一台国外的可以正常连接的服务器安装HaProxy然后代理无法连接的服务器即可.

头图版权:櫻@幻像黒兎 | PID=55242277