Haproxy的安装与简单配置

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

一、安装

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 中,两种配置方式任选其一即可。
具体参数详解:

 配置项描述
globalchroot<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)
defaultsmodeHaproxy的工作模式,tcp/http/health
retries<value>设置连接失败后的重试次数
timeout client <n>设置客户端最大超时时间,默认单位为毫秒ms
timeout server <n>设置服务端最大超时时间,默认单位为毫秒ms
timeout connect<n>设置连接最大超时时间,默认单位为毫秒ms
timeout check<time>检查超时时间
contimeout<time>连接超时时间
forntendbind<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
backendbalance 调度算法,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
listenstats auth admin:admin设置监控界面的用户名和密码
stats refresh设置监控界面的刷新时间
stats uri <path>设置监控的访问路径

表backend-server:

三、测试

下图为测试的拓扑图

1、配置Haproxy

vim /usr/local/haproxy/conf/haproxy.cfg

2、修改三台server的index.html,便于区分

3、测试

多次访问后,发现分别由三台服务器轮询响应请求

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值