使用HaProxy中转TCP流量

注意:此文章年代久远,很多内容因为当时作者的知识水平有限可能有错误之处。

引言

每到“晚高峰”时段,很多地区的国际出口速度都会严重下降(比如我们学校),这很大程度上并不是因为主机商处的带宽被占用,而是你被本地区的运营商限制了国际出口速度,以保证大客户(企业、政府)的需要。而阿里云主机IP段位于IDC机房,恰恰是被保护国际出口速度的,所以我们可以通过阿里云主机转发流量来达到加速的目的。

安装并配置HaProxy

对于CentOS7系统:

1
yum -y install haproxy

阿里云没有安装nano编辑器,进行安装

1
yum install nano

打开HaProxy的配置文件

1
nano /etc/haproxy/haproxy.cfg

删除其中的全部文件,替换为以下内容

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
global

defaults
log global
mode tcp
option dontlognull
timeout connect 5000
timeout client 50000
timeout server 50000

frontend server-in
bind *:6666
default_backend server-out

backend server-out
server server1 233.233.233.233 maxconn 20480

其中233.233.233.233替换为TCP协议的代理服务器地址,bind*=6666处讲6666改成TCP代理服务的端口。

如果你希望转发多个端口,那么将6666改成例如80-8000意为将阿里云主机的80-8000端口TCP数据转发到233.233.233.233的80-8000端口上。

2. 启动与使用

按照上面配置好HaProxy之后就可以启动服务了:

# 如果你是 Debian/Ubuntu 系统,那么用这些命令:

启动:/etc/init.d/haproxy start

停止:/etc/init.d/haproxy stop

重启:/etc/init.d/haproxy restart

重载:/etc/init.d/haproxy reload

状态:/etc/init.d/haproxy status

# 如果你是 CentOS 7 系统,那么用这些命令:

启动:systemctl start

停止:systemctl stop haproxy.service

重启:systemctl restart haproxy.service

状态:systemctl status haproxy.service

启动之后只需要将你TCP代理服务中原来的国外VPS的公网IP换成阿里云的公网IP即可使用。

测试无误之后,设置开机自启动,对于CentOS7:

自启动:systemctl enable haproxy.service