一、安装
1、下载安装包并上传
https://src.fedoraproject.org/repo/pkgs/haproxy/
打开后选择要下载的版本进行下载,这里下载的是haproxy-1.8.13.tar.gz
rz命令上传到服务器中
2、解压并编译安装
tar xzvf haproxy-1.8.13.tar.gz
cd haproxy-1.8.13/
make TARGET=linux31 //这里用uname -r查看系统内核版本。centos6.x使用linux26,centos7.x使用linux31
make install PREFIX=/usr/local/haproxy
mkdir /usr/local/haproxy/conf
cp examples/option-http_proxy.cfg /usr/local/haproxy/conf/haproxy.cfg
3、启动
/usr/local/haproxy/sbin/haproxy -f /usr/local/haproxy/conf/haproxy.cfg
若想开机自启,将以上命令行添加到/etc/rc.local中即可
启动时报错:
[ALERT] 119/154443 (8656) : Starting frontend test-proxy: cannot bind socket [192.168.200.10:8080]
原因:模板的配置文件中配置了监听地址,即bind参数,而此时我们并没有这台服务器
vim /etc/sysctl.conf
net.ipv4.ip_nonlocal_bind = 1 //启动haproxy的时候忽略real-server的存在
另外,haproxy需要打开路由转发功能,即net.ipv4.ip_forward = 1
[WARNING] 119/155102 (8735) : [./sbin/haproxy.main()] FD limit (16384) too low for maxconn=20000/maxsock=40011. Please raise 'ulimit-n' to 40011 or more to avoid any trouble.
这个是警告,可以暂时不管
它提示的是haproxy配置文件中的ulimit -n参数值较maxconn和maxsock参数值较低,改到40011或更高。
ulimit -n表示的是每个haproxy进程打开的最大文件数
maxconn表示每个进程的最大连接数
可以到配置文件中将其修改一下
4、查看是否启动成功
netstat -anpl |grep haproxy

二、配置文件详解
Haproxy的配置文件由5部分组成,并不都是必须的,根据自己的需要进行配置
global :全局配置
defaults :默认参数的配置部分。自动被引用到 frontend、backend 和 listen 部分,因此一般用来配置上述三部分相同的参数。如果和上述三部分重复,defaults内会被自动覆盖
frontend :用于设置接收用户请求的前端虚拟节点,根据 ACL 规则直接指定要使用的后端server。
backend :用于设置集群后端服务集群,也就是一组真实服务器。
listen:此部分是 frontend 部分和 backend 部分的结合体。在 HAProxy1.3 版本之前,所有配置选项都在这个部分中设置。为了保持兼容性,HAProxy 新的版本仍然保留了 listen 组件的配置方式。目前在 HAProxy 中,两种配置方式任选其一即可。
具体参数详解:
| 配置项 | 描述 | |
| global | chroot<dir> | 将工作目录切换到<dir>并执行chroot,该配置可增强Haproxy的安全性,但需要使用超级权限启动Haproxy程序 |
| daemon | 配置Haproxy以后台进程模式工作 | |
| uid<number>/user<user> | 进程的用户ID,建议设置Haproxy专用账户 | |
| gid<number>/group<group> | 进程的组ID,建议设置Haproxy专用组 | |
| log<address> | syslog服务器 | |
| nbproc<number> | 后台进程的数量 | |
| pidfile<file> | 存放进程id号的文件 | |
| ulimit-n<number> | 每个进程的最大描述符数量 | |
| maxconn<number> | 每个进程支持的最大并发连接数 | |
| tune.bufsize<number> | buffer大小,默认16384,单位:字节(B) | |
| defaults | mode | Haproxy的工作模式,tcp/http/health |
| retries<value> | 设置连接失败后的重试次数 | |
| timeout client <n> | 设置客户端最大超时时间,默认单位为毫秒ms | |
| timeout server <n> | 设置服务端最大超时时间,默认单位为毫秒ms | |
| timeout connect<n> | 设置连接最大超时时间,默认单位为毫秒ms | |
| timeout check<time> | 检查超时时间 | |
| contimeout<time> | 连接超时时间 | |
| forntend | bind<address>:<port/port_range> | 定义监听地址,端口 |
| option httplog | 使用http日志 | |
| option httpclose | 客户端与服务端完成一次连接请求后,自动关闭此TCP连接 | |
| option forwardfor | 允许插入X_forward_for数据包头给后端server,可让后端server获得客户端的真实IP | |
| use_backend | 当条件满足时,指定后端服务器组,需要设置ACL | |
| acl<name><criterion> | 定义ACL,通过name调用该ACL。常用限制:dst(目标地址)、dst_port(目标端口)、src(源地址)、hdr(连接头部信息)、path_reg(访问路径匹配正则)、url(统一资源定位符) | |
| default_backend | 配置文件中没有use_backup规则时,设置默认的后端server | |
| backend | balance | 调度算法,roundrobin(轮询)、static-rr(加权轮询)、source(源地址,IP-hash)、leastconn(最小连接数) |
| option abortonclose | 服务器负载较高时,自动关闭队列里处理时间较长的请求 | |
| option redispatch | 使用cookie的sevrer宕机后,客户端还会坚持连接它,此选项表示将其请求转发到其他健康的后端server上 | |
| cookie<name> | 启动基于cookie的保持连接功能 | |
| option httpchk <uri>/<method>/<version> | 使用http协议检查服务器健康状态。其中method表示http请求的方式,有option、get、head。一般用head,进检查头部是不是200,比get更快。 | |
| server <name><address:port> | 定义多个后端服务器,具体语法参照 表backend-server | |
| listen | stats auth admin:admin | 设置监控界面的用户名和密码 |
| stats refresh | 设置监控界面的刷新时间 | |
| stats uri <path> | 设置监控的访问路径 |
表backend-server:

三、测试
下图为测试的拓扑图

1、配置Haproxy
vim /usr/local/haproxy/conf/haproxy.cfg

2、修改三台server的index.html,便于区分
![]()

![]()
3、测试

多次访问后,发现分别由三台服务器轮询响应请求
本文详细介绍了Haproxy的安装步骤,包括下载安装包、上传、解压、编译及启动。在启动过程中遇到的错误如端口绑定问题和文件描述符限制,以及解决方法。还讲解了配置文件的组成部分,如global、defaults、frontend、backend和listen,并给出了backend-server的参数详解。最后,通过测试验证了Haproxy的负载均衡轮询功能。
2059

被折叠的 条评论
为什么被折叠?



