HaProxy介绍:
haproxy是法国开发者威利塔罗在2000年使用C语言开发的一个开源软件,是一款具备高并发(一万以上)、高性能的TCP和HTTP负载均衡器,支持基于cookie的持久性,自动故障切换,支持正则表达式及web状态统计,目前最新TLS版本为2.2。
haproxy是可提供可用性、负载均衡以及基于TCP和HTTP应用的代理,是免费、快速并且可靠的一种解决方案。haproxy非常适用于并发大(并发达1W以上)web站点,这些站点通常又需要会话保持或七层处理,haproxy的运行模式使得它可以很简单安全的整合至当前的架构中,同时可以保护web服务器不被暴露到网络上。
LVS,nginx,haproxy对比:
LVS是内核中的功能,nginx和haproxy是第三方实现的功能。
LVS只能提供四层负载均衡无法提供七层负载,(无法控制7层协议http头部url等),功能单一。
nginx,haproxy可以实现4层和7层负载,功能较多,但是性能不如LVS,LVS>haproxy>nginx
haproxy对比nginx性能优越,功能单一,haproxy只做反向代理。
LVS没有后端服务器健康性检测,nginx和haproxy有后端服务器健康性检测。
安装haproxy:
三种方式:yum,rpm和编译
yum安装:yum install -y haproxy
可以rpm -qc haproxy查看配置文件
rpm安装:
错误:软件包:rh-haproxy18-haproxy-1.8.24-3.el7.x86_64 (/rh-haproxy18-haproxy-1.8.24-3.el7.x86_64)
rpm安装haproxy需要需要:rh-haproxy18-runtime
需要依赖包
编译安装haproxy:
在第二台机器7-2上编译安装,7-1和7-3作为web真实服务器
由于CentOS7 之前版本自带的lua版本比较低并不符合haproxy要求的lua最低版本(5.3)的要求,因此需要编译安装较新版本的lua环境,然后才能编译安装haproxy,所以需要先安装lua环境。
#安装haproxy
#创建主配置文件/etc/haproxy/haproxy.cfg
global:全局配置段
proxies:代理配置段
主配置文件配置块:
起来之后查看状态:
listen中说明了代理服务器,和后端真实服务器。
而frontend和backup就把两者分离出来。listen相当于两者的结合。
7-1和7-3作为web服务器。下载httpd:
测试是否实现了代理和负载均衡:在浏览器也可以在本台服务器上curl 192.168.114.20:8899要跟上端口号:8899。因为我们在listen中设置的就是8899端口号。
状态页:
在配置文件中有以下三个配置,端口号,uri,访问控制。在浏览器地址栏中输入:192.168.114.20:9999/haproxy-status
bind 0.0.0.0:9999
stats uri /haproxy-status
stats auth haadmin:123456
进程:发现进程是一个进程下三个线程
修改进程配置,nbproc 4就是有四个进程:
重启systemctl restart haproxy。
通过进程树查看一下:
日志:
vim /etc/rsyslog.conf打开文件开启15和16行。
在/etc/rsyslog.conf文件的73行下添加一行,指定local3,并制定日志文件路径在/var/log/haproxy.log
重启systemctl restart haproxy rsyslog
使用浏览器访问192.168.114.20:8899
在日志文件中tail -f /var/log/haproxy.log实时查看
不使用listen,而使用frontend和backup两个模块:相当于把listen分开写,frontend是代理端,backup是服务端,负载均衡的web服务器。把listen注释掉或者删除。
测试:由于我们指定的80端口,直接是curl 192.168.114.20不需要加端口,默认就是80。
其中listen或者说frontend和backup可以放在子配置文件中:
创建一个子配置文件:mkdir /etc/haproxy/conf.d
直接写在子配置文件中,但haproxy不像nginx可以在主配置文件中写入include包含模块。haproxy主配置文件不支持include。需要将子配置文件写在/usr/lib/systemd/system/haproxy.service文件中指明。
把主配置文件中的注释掉。修改文件:vim /usr/lib/systemd/system/haproxy.service
重新加载配置文件,重启服务:
访问测试:
haproxy也有跳转的功能,在server后加入check redir http://www.baidu.com
自动跳转到百度主页,如果浏览器跳转不到(但也会显示标题头部是百度的),可以使用内置火狐浏览器:192.168.114.20。将自动跳转到百度首页。
---end---