1、Haproxy概述。
Haproxy是目前比较流行的一种群集调度工具,同类群集调度工具有很多,如LVS和Nginx。相比较而言,LVS性能最好,但是搭建相对复杂;Nginx的upstream模块支持群集功能,但是对群集节点健康检查功能不强,性能没有Haproxy号。
1.2、HTTP请求
通过URL访问网站使用的协议是HTTP协议,此类请求一般称为HTTP请求。HTTP请求的方式分为GET方式和POST方式。当使用浏览器访问某一个URL,会根据请求URL返回状态码,通常正常的状态码为2XX、3XX(如200、300),如果出现异常会返回4XX、5XX(如400、500)。
1.3、负载均衡常用调度算法。
1)RR。RR算法是最简单最常用的一种算法,即轮询调度。
2)LC。LC算法即最小连接数算法,根据后端的节点连接数大小动态分配前端请求。
3)SH。SH即基于来源访问调度算法。
2、案例环境
组件包:Haproxy nginx(httpd)
设备 | IP | 备注 |
Centos01 | 192.168.136.10 | Node1 |
Centos02 | 192.168.136.20 | Web1 |
Centos03 | 192.168.136.30 | Web2 |
2.1、编译安装Haproxy
上传Haproxy的软件包到node1并安装组件
[root@nodeAAA ~]# yum -y install pcre-devel bzip2-devel gcc gcc-c++ make
[root@nodeAAA ~]# tar zxf haproxy-1.5.19.tar.gz
[root@nodeAAA ~]# cd haproxy-1.5.19
[root@nodeAAA haproxy-1.5.19]# make TARGET=linux26 && make install
建立Haproxy的配置文件
[root@nodeAAA haproxy-1.5.19]# mkdir /etc/haproxy
[root@nodeAAA haproxy-1.5.19]# cp examples/haproxy.cfg /etc/haproxy/
修改配置文件,添加Web节点
[root@nodeAAA haproxy-1.5.19]# vim /etc/haproxy/haproxy.cfg
listen WEB *:80
option httpchk GET /index.html
balance roundrobin
server inst1 192.168.136.20:80 check inter 2000 fall 3
server inst2 192.168.136.30:80 check inter 2000 fall 3
创建群集根目录
[root@nodeAAA ~]# mkdir /usr/share/haproxy
添加Haproxy为系统服务
[root@nodeAAA ~]# cd haproxy-1.5.19
[root@nodeAAA haproxy-1.5.19]# cp examples/haproxy.init /etc/init.d/haproxy
[root@nodeAAA haproxy-1.5.19]# ln -s /usr/local/sbin/haproxy /usr/sbin/haproxy
[root@nodeAAA haproxy-1.5.19]# chmod +x /etc/init.d/haproxy
[root@nodeAAA haproxy-1.5.19]# chkconfig --add /etc/init.d/haproxy
[root@nodeAAA haproxy-1.5.19]# systemctl start haproxy
2.2、编译安装Nginx服务器。
将Nginx软件包上传到web1和web2,并安装组件
[root@nodeBBB ~]# yum -y install pcre-devel zlib-devel gcc gcc-c++ make
创建Nginx用户
[root@nodeBBB ~]# useradd -M -s /sbin/nologin nginx
解包然后编译安装
[root@nodeBBB ~]# tar zxf nginx-1.24.0.tar.gz
[root@nodeBBB ~]# cd nginx-1.24.0
[root@nodeBBB nginx-1.24.0]# ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module
[root@nodeBBB nginx-1.24.0]# make && make install
创建主程序链接文件
[root@nodeBBB nginx-1.24.0]# ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/
修改测试页面的内容
[root@nodeBBB ~]# vim /usr/local/nginx/html/index.html
启动Nginx[root@nodeBBB ~]# nginx
2.3、验证测试
使用浏览器访问http://192.168.136.10(调度服务器)
刷新网页即可轮询切换
2.4、Haproxy日志
修改Haproxy配置文件中的日志配置
[root@nodeAAA ~]# vim /etc/haproxy/haproxy.cfg
global
log /dev/log local0
log /dev/log local1 notice
配置Haproxy日志
[root@nodeAAA ~]# vim /etc/rsyslog.d/haproxy.conf
if ($programname == 'haproxy' and $syslogseverity-text == 'info') then -/var/log/haproxy/haproxy-info.log
& ~
if ($programname == 'haproxy' and $syslogseverity-text == 'notice') then -/var/log/haproxy/haproxy-notice.log
& ~
创建日志目录
[root@nodeAAA ~]# vim /etc/rsyslog.d/haproxy.conf
[root@nodeAAA ~]# mkdir /var/log/haproxy
重新启动服务
[root@nodeAAA ~]# systemctl restart haproxy
[root@nodeAAA ~]# systemctl restart rsyslog