一.背景
公司使用专线与第三方公司进行系统交互,给定了我们业务IP的使用范围,防火墙策略只开放业务IP范围之内的IP地址才能访问,如果源IP不在业务IP范围之内,那么通过互联IP过去是访问不了的。我们的做法是为了不影响现有业务,找一台服务器配置业务IP,然后通过台服务器做4层代理进行转发即可。 四层代理常见的开源方案有Haproxy、Nginx等,Nginx一般用来做7层代理相对较多,不过也支持4层代理。本着最简单和高效的原则,最终选定Haproxy理由如下:
1.软件体积小,高性能、稳定。
2.我们的需求只是做4层代理,7层代理不需要,尽管Haproxy也支持7层代理,但是它最初的优势就是4层代理。
3.专业的事交给专业的人,软件也是如此,强调4层代理建议使用Haproxy而非Nginx, 尽管Nginx也可以做到。
如果是Centos7安装Haproxy也很简单了,直接yum install haproxy, 配置一下haproxy.cfg,启动systemctl start haproxy即可。 但是之前的系统是Centos6.3, 属于相对很老的系统。Centos6的yum源已经停止更新和支持,不能直接使用yum安装, 所以只能考虑在Centos6上进行源码安装。
二.安装流程
1.下载源码包
可以下载自己指定的版本, 具体版本下载列表网址: http://www.haproxy.org/
1 | wget http://www.haproxy.org/download/1.4/src/haproxy-1.4.27.tar.gz |
2.解压、make
(可以查看README文件,查看make更多预编译参数)
一般没有特殊参数要求指定,指令2个参数即可:
TARGET = linux26 #首先查看uname -r, Linux内核是多少版本,查看README文件可以看到这个参数的解释,我服务的内核版本是2.6,所以使用linux26
ARCH = x86_64 #代表服务器是的CPU架构和系统位数, 我的是x86架构,64位操作系统
1 | tar -zxvf haproxy-1.4.27.tar.gz |
3.预编译make没报错则可以make install
可以设置PREFIX为软件安装目录
1 | make install PREFIX=/usr/local/haproxy |
4.添加service脚本管理服务
直接使用Haproxy命令管理服务不是很方便,我们还是习惯了使用service命令来管理服务。所以我们需要添加一下自定义service, 使用service来管理Haproxy服务。
Centos6可以添加service脚本,用service命令来管理haproxy:
1 | service haproxy check #检查配置文件语法是否正确 |
在/etc/init.d/新增haproxy文件(附加可执行权限, chmod +x haproxy),文件内容如下:
1 | !/bin/sh |
5.Haproxy.cfg配置文件模板
默认配置文件路径: /etc/haproxy/haproxy.cfg
文件内容样例:
1 | global |