使用Haproxy搭建Web群集

时间:2024-05-21 12:36:17

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 nginx
tcp 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
使用Haproxy搭建Web群集

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
使用Haproxy搭建Web群集

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

使用Haproxy搭建Web群集
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的页面
使用Haproxy搭建Web群集

刷新页面,然后显示Nginx2 104的页面
使用Haproxy搭建Web群集
如果你的不切换页面的话,可能不是错了,而是慢

访问第一次显示主页面的时候,隔几分钟再刷新,

或者原来的刷新换成,新打开一个页面测试

如果还不行,就是配置文件 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 nginx
tcp 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改图中标的,其他的不用动)
使用Haproxy搭建Web群集
[[email protected] ~]# /etc/init.d/haproxy restart

3)修改rsyslog配置

[[email protected] ~]# touch /etc/rsyslog.d/haproxy.conf
[[email protected] ~]# vim /etc/rsyslog.d/haproxy.conf
使用Haproxy搭建Web群集
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
&
[[email protected] ~]# systemctl restart rsyslog

4)测试日志信息

再次浏览器访问:http://192.168.100.102/test.html并刷新多次

回到Haproxy服务器中
[[email protected] ~]# tail -f /var/log/haproxy/haproxy-info.log
显示如下就对了
使用Haproxy搭建Web群集
如果你提示找不到这个文件,就是刚刚更改的两个配置文件中有字母打错了,和我的不一致,

要不就是忘记重启服务了

实验完毕