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的安装与简单配置_第1张图片

二、配置文件详解

Haproxy的配置文件由5部分组成,并不都是必须的,根据自己的需要进行配置

 global :全局配置

defaults :默认参数的配置部分。自动被引用到 frontend、backend 和 listen 部分,因此一般用来配置上述三部分相同的参数。如果和上述三部分重复,defaults内会被自动覆盖

frontend :用于设置接收用户请求的前端虚拟节点,根据 ACL 规则直接指定要使用的后端server。

backend :用于设置集群后端服务集群,也就是一组真实服务器。

listen:此部分是 frontend 部分和 backend 部分的结合体。在 HAProxy1.3 版本之前,所有配置选项都在这个部分中设置。为了保持兼容性,HAProxy 新的版本仍然保留了 listen 组件的配置方式。目前在 HAProxy 中,两种配置方式任选其一即可。
具体参数详解:

  配置项 描述
global chroot 将工作目录切换到并执行chroot,该配置可增强Haproxy的安全性,但需要使用超级权限启动Haproxy程序
daemon 配置Haproxy以后台进程模式工作
uid/user 进程的用户ID,建议设置Haproxy专用账户
gid/group 进程的组ID,建议设置Haproxy专用组
log
syslog服务器
nbproc 后台进程的数量
pidfile 存放进程id号的文件
ulimit-n 每个进程的最大描述符数量
maxconn 每个进程支持的最大并发连接数
tune.bufsize buffer大小,默认16384,单位:字节(B)
defaults mode Haproxy的工作模式,tcp/http/health
retries 设置连接失败后的重试次数
timeout client 设置客户端最大超时时间,默认单位为毫秒ms
timeout server 设置服务端最大超时时间,默认单位为毫秒ms
timeout connect 设置连接最大超时时间,默认单位为毫秒ms
timeout check 检查超时时间
contimeout 连接超时时间
forntend bind
:
定义监听地址,端口
option httplog 使用http日志
option httpclose 客户端与服务端完成一次连接请求后,自动关闭此TCP连接
option forwardfor 允许插入X_forward_for数据包头给后端server,可让后端server获得客户端的真实IP
use_backend 当条件满足时,指定后端服务器组,需要设置ACL
acl 定义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 启动基于cookie的保持连接功能
option httpchk // 使用http协议检查服务器健康状态。其中method表示http请求的方式,有option、get、head。一般用head,进检查头部是不是200,比get更快。
server 定义多个后端服务器,具体语法参照 表backend-server
listen stats auth admin:admin 设置监控界面的用户名和密码
stats refresh 设置监控界面的刷新时间
stats uri 设置监控的访问路径

表backend-server:

Haproxy的安装与简单配置_第2张图片

三、测试

下图为测试的拓扑图

Haproxy的安装与简单配置_第3张图片

1、配置Haproxy

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

Haproxy的安装与简单配置_第4张图片

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

3、测试

Haproxy的安装与简单配置_第5张图片

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

你可能感兴趣的:(Haproxy的安装与简单配置)