Haproxy介绍
Haproxy是目前比较流行的一种群集调度工具,同类群集调度工具用很多,如LVS和Nginx
相比较而言,LVS性能最好,但是搭建复杂,
Nginx的模块支持群集功能,但是对群集节点健康检查能力不强,性能没有Haproxy好
案例实施 Haproxy+Nginx的群集
实验环境及材料如下
需要的软件包,我会提供软件包
Haprox服务器 IP : 192.168.100.102 (VM1)
nginx服务器 1 IP: 192.168.100.103 (VM1)
nginx服务器 2 IP: 192.168.100.104 (VM1)
操作系统均为centos7
本实验需要三个软件包
如下
链接:https://pan.baidu.com/s/18Bkwp_fvLVjX3bgVJheGjQ&shfl=sharepset
提取码:69qr
1.编译安装Nginx服务器
1)编译安装Nginx1
进入192.168.100.103,挂载光盘,并配置yum源
[[email protected] ~]# yum -y install pcre-devel zlib-devel
[[email protected] ~]# useradd -M -s /sbin/nologin nginx
包拖入Xshell
[[email protected] ~]# tar zxf nginx-1.12.0.tar.gz
[[email protected] ~]# cd nginx-1.12.0
[[email protected] nginx-1.12.0]# ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx
–prefix:是默认安装目录的意思
[[email protected] nginx-1.12.0]# make && make install
[[email protected] html]# cd /usr/local/nginx/html/
[[email protected] html]# echo "wo shi 103 nginx 1"
> test.html (建立测试页面)
[[email protected] ~]# /usr/local/nginx/sbin/nginx (打开Nginx服务)
[[email protected] ~]# netstat -anpt | grep nginxtcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 3533/nginx: master
[[email protected] ~]# systemctl stop firewalld
2)访问测试
使用本机浏览器访问 http://192.168.100.103/test.html
4)配置Nginx服务器2
进入192.168.100.104,
所以操作同上面的第一步,编译安装Nginx1的一模一样,只是测试页面要不同
不同的步骤如下
[roo[email protected] html]# echo"wo shi 104 nginx 2"
> test.html
打开服务,浏览器访问测试 http://192.168.100.104/test.html
2.编译安装Haproxy
进入192.168.100.102,挂载光盘并配置yum源
[[email protected] ~]# yum -y install pcre-devel bzip2-devel
包拖入Xshell中
[[email protected] ~]# tar zxf haproxy-1.5.19.tar.gz
[[email protected] ~]# cd haproxy-1.5.19
下面这部意思是64位操作系统
[[email protected] haproxy-1.5.19]# make TARGET=linux26
[[email protected] haproxy-1.5.19]# make install
3.Haproxy配置文件
还是102中操作
1)建立配置文件目录
[[email protected] ~]# mkdir /etc/haproxy
[[email protected] ~]# cd haproxy-1.5.19
下面这步的是将配置文件复制出来
[[email protected] haproxy-1.5.19]# cp examples/haproxy.cfg /etc/haproxy/
2)修改配置文件
我这里解释一下,配置文件中的重要的配置项
global 是全局配置
default 是默认配置
listen 是应用组件配置
下面这个配置文件,我后面有打好的,把原来配置文件中的所有删掉或注释,然后复制,粘贴我的
如果你按照我图片中来的话,稍微改一下就可以
[[email protected] ~]# vim /etc/haproxy/haproxy.cfg
我图片中最后一行打错了打错了一个数字,是
inst2
global
log 127.0.0.1 local0
log 127.0.0.1 local1 notice
#log loghost local0 info
maxconn 4096
uid 99
gid 99
daemon
#debug
#quiet
defaults
log global
mode http
option httplog
option dontlognull
retries 3
redispatch
maxconn 2000
contimeout 5000
clitimeout 50000
srvtimeout 50000
listen webcluster 0.0.0.0:80
option httpchk GET /index.html
balance roundrobin
server inst1 192.168.100.103:80 check inter 2000 fall 3
server inst2 192.168.100.104:80 check inter 2000 fall 3
4.创建自启动脚本
还是在102中操作
[[email protected] ~]# cp ~/haproxy-1.5.19/examples/haproxy.init /etc/init.d/haproxy
(上面的haroxy是自己打的,就是个名字)
[[email protected] ~]# ln -s /usr/local/sbin/haproxy /usr/sbin/haproxy
(上面这边这个也是手打)
[[email protected] ~]# chmod +x /etc/init.d/haproxy
[[email protected] ~]# /etc/init.d/haproxy start (如果你的服务启动失败,就是配置文件中有项和我上面不一样,或是打错字母了)Reloading systemd: [ 确定 ]
Starting haproxy (via systemctl): [ 确定 ]
[[email protected] ~]# systemctl stop firewalld
5.测试Web群集
1)测试负载均衡与高性能
浏览器访问
http://192.168.100.102/test.html
首先显示Nginx1 103的页面
刷新页面,然后显示Nginx2 104的页面
如果你的不切换页面的话,可能不是错了,而是慢
访问第一次显示主页面的时候,隔几分钟再刷新,
或者原来的刷新换成,新打开一个页面测试
如果还不行,就是配置文件 server中有IP打错了
2)测试高可用
进入192.168.100.103Nginx服务器1 ,停用Nginx服务
[[email protected] ~]# killall -s QUIT nginx (关闭Nginx服务)
[[email protected] ~]# netstat -anpt
再次访问测试, http://192.168.100.102/test.html
只会显示191.168.100.104Nginx服务的页面,刷新也不会再切换页面,就对了
6.配置Haproxy的日志
Haproxy的日志默认输出到系统的syslog中,查看起来非常不方便,为了更改管理
我们在生产环境中一般单独定义出来
1)重新打开103的Nginx服务
进入103中
[[email protected] ~]# /usr/local/nginx/sbin/nginx
[[email protected] ~]# netstat -anpt | grep nginxtcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 17781/nginx: master
2)修改Haproxy的日志规则
进入102Haproxy服务器中
[[email protected] ~]# vim /etc/haproxy/haproxy.cfg (改图中标的,其他的不用动)
[[email protected] ~]# /etc/init.d/haproxy restart
3)修改rsyslog配置
[[email protected] ~]# touch /etc/rsyslog.d/haproxy.conf
[[email protected] ~]# vim /etc/rsyslog.d/haproxy.confif ($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
&
[[email protected] ~]# systemctl restart rsyslog
4)测试日志信息
再次浏览器访问:http://192.168.100.102/test.html,并刷新多次
回到Haproxy服务器中
[[email protected] ~]# tail -f /var/log/haproxy/haproxy-info.log
显示如下就对了
如果你提示找不到这个文件,就是刚刚更改的两个配置文件中有字母打错了,和我的不一致,
要不就是忘记重启服务了