一、使用环境:

使用三台服务器模拟搭建一套web群集,具体的拓补图如下:
企业微信截图_16529322914713.png

主机 操作系统 IP地址 服务版本
Haproxy服务器 CentOS 7.6 192.168.1.123 haproxy-1.5.19.tar.gz
Nginx服务器1 CentOS 7.6 192.168.1.120 nginx-1.12.0.tar.gz
Nginx服务器2 CentOS 7.6 192.168.1.121 nginx-1.12.0.tar.gz
客户端 Windows 10 192.168.1.188 google浏览器

二、编译安装Nginx服务器

  1. 搭建Nginx1 (192.168.1.120)
    使用nginx-1.12.0.tar.gz安装包进行编译安装

yum install gcc gcc-c++ pcre-devel zlib-devel make -y
useradd -M -s /sbin/nologin nginx
tar zxvf nginx-1.12.0.tar.gz -C /opt/
cd /opt/nginx-1.12.0/
./configure —prefix=/usr/local/nginx —user=nginx —group=nginx
make && make install #安装
cd /usr/local/nginx/html
echo “Server 192.168.1.120” > test.html
ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/
nginx #启动
systemctl stop firewalld.service #关闭防火墙
setenforce

安装完后的默认信息如下
默认安装目录:/usr/local/nginx
默认日志:/usr/local/nginx/logs
默认监听端口:80
默认web目录:/usr/local/nginx
1.1 设置测试页面并启动Nginx服务:
cd /usr/local/nginx/html
echo “Server 192.168.1.120” > test.html
ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/
nginx #启动
systemctl stop firewalld.service #关闭防火墙
setenforce 0
在客户端访问http://192.168.1.120/test.html,网页正常显示。
企业微信截图_16529323118169.png

2.搭建Nginx2 (192.168.1.121)
编译安装的步骤与Nginx1相同,不同之处在于建立测试页面。
yum install gcc gcc-c++ pcre-devel zlib-devel make -y
useradd -M -s /sbin/nologin nginx
tar zxvf nginx-1.12.0.tar.gz -C /opt/
cd /opt/nginx-1.12.0/
./configure —prefix=/usr/local/nginx —user=nginx —group=nginx
make && make install #安装
cd /usr/local/nginx/html
echo “Server 192.168.1.120” > test.html
ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/
nginx #启动
systemctl stop firewalld.service #关闭防火墙
setenforce
cd /usr/local/nginx/html
echo “Server 192.168.1.121” > test.html
ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/
nginx #启动
systemctl stop firewalld.service #关闭防火墙
setenforce 0

三、编译安装Haproxy (192.168.1.123)

yum install gcc gcc-c++ pcre-devel bzip2-devel make -y #用yum安装一系列的环境支持
wget https://www.haproxy.org/download/1.5/src/haproxy-1.5.19.tar.gz

tar zxvf haproxy-1.5.19.tar.gz -C /opt/ #解压haproxy软件包至/opt目录下
cd /opt/haproxy-1.5.19/
make TARGET=linux26
make install #安装

四、创建Haproxy的配置文件

Haproxy默认不创建配置文件,需要复制软件包的模板配置文件,并进行编辑
mkdir /etc/haproxy #创建配置文件目录
cp examples/haproxy.cfg /etc/haproxy/ #将haproxy.cfg文件复制到配置文件目录下
cd /etc/haproxy/
cat >>/etc/haproxy/haproxy.cfg<listen webcluster 0.0.0.0:80 #定义一个webcluster的应用
option httpchk GET /test.html #访问服务器的test.html文件
balance roundrobin
server inst1 192.168.1.120:80 check inter 2000 fall 3 #定义nginx节点服务器
server inst2 192.168.1.121:80 check inter 2000 fall 3
EOF
/etc/haproxy/haproxy.cfg需删除或者注释掉以下3行语句
chroot /usr/share/haproxy #禁锢到haproxy的根目录下
redispatch #强制将请求发送到已经down掉的机器
errorfile 503 /etc/haproxy/errors/503.http

五.创建Haproxy自启动脚本

cp /opt/haproxy-1.5.19/examples/haproxy.init /etc/init.d/haproxy
chmod +x haproxy
chkconfig —add /etc/init.d/haproxy #添加系统服务
ln -s /usr/local/sbin/haproxy /usr/sbin/haproxy
service haproxy start #启动Haproxy服务
systemctl stop firewalld.service #关闭防火墙

六、测试web群集

  1. 测试高性能
    在客户端使用浏览器打开http://192.168.1.123/test.html, 浏览器显示信息如图所示:
    企业微信截图_1652932330924.png
    刷新一下,显示信息如图所示:
    企业微信截图_16529323403649.png
    测试群集的负载均衡调度生效,满足群集的高性能要求

2.测试高可用
将192.168.1.120的Nginx服务器停用,在客户端使用浏览器打开http://192.168.1.123/test.html ,浏览器显示信息如图所示:
企业微信截图_16529323643459.png
当一台节点出现故障时,不会影响群集的使用,这样满足了群集的高可用性。

七、Haproxy的日志

Haproxy的日志默认输出系统的syslog中,查看不方便,在生产环境中可以单独定义出来

1.修改haproxy配置文件中(/etc/haproxy/haproxy.cfg)关于日志配置的选项,加入下面的配置:
复制
log /dev/log local0 info
log /dev/log local0 notice
将这两行配置放到global配置项目中,主要是将info及notice日志分别记录到不同的日志文件中

2.然后重启Haproxy的服务
service haproxy restart #重新启动Haproxy服务

3.修改rsyslog配置
为了便于管理,将Haproxy的配置独立定义到haproxy.conf,并放到/etc/rsyslog.d/下,rsyslog启动时会自动加载此目录下的所有配置文件。
复制
touch /etc/rsyslog.d/haproxy.conf
vim /etc/rsyslog.d/haproxy.conf
if ($programname == ‘haproxy’ and $syslogseverity-text == ‘info’)
then -/var/log/haproxy/haproxy-info.log #info日志记录到/var/log/haproxy/haproxy-info.log下
&~ #表示日志写入到日志文件后,rsyslog停止处理这个信息
if ($programname == ‘haproxy’ and $syslogseverity-text == ‘notice’)
then -/var/log/haproxy/haproxy-notice.log #notice日志记录到/var/log/haproxy/haproxy-notice.log下
&~
4.保存配置文件并重启rsyslog服务
systemctl restart rsyslog.service
5.测试日志信息
在客户端访问http://192.168.1.123/test.html后,可以使用 tail -f /var/log/haproxy/haproxy-info.log 即时查看haproxy的访问请求日志
tail -f /var/log/haproxy/haproxy-info.log
企业微信截图_16529323796038.png