使用 HAProxy + Nginx 搭建 Web 群集(二)
💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。
推荐:Linux运维老纪的首页,持续学习,不断总结,共同进步,活到老学到老
导航剑指大厂系列:全面总结 运维核心技术:系统基础、数据库、网路技术、系统安全、自动化运维、容器技术、监控工具、脚本编程、云服务等。
常用运维工具系列:常用的运维开发工具, zabbix、nagios、docker、k8s、puppet、ansible等
数据库系列:详细总结了常用数据库 mysql、Redis、MongoDB、oracle 技术点,以及工作中遇到的 mysql 问题等
懒人运维系列:总结好用的命令,解放双手不香吗?能用一个命令完成绝不用两个操作
数据结构与算法系列:总结数据结构和算法,不同类型针对性训练,提升编程思维,剑指大厂
非常期待和您一起在这个小小的网络世界里共同探索、学习和成长。💝💝💝 ✨✨ 欢迎订阅本专栏 ✨✨
使用 HAProxy + Nginx 搭建 Web 群集
HAProxy 是目前比较流行的一种群集调度工具,同类群集调度工具中,同 LVS 对比,LVS 性能最好,但是搭建相对比较复杂,Nginx 的 upstream 模块支持群集功能,但是对群集节点的健康检查功能不强,性能没有 HAProxy 好。
系统环境
主机 | IP地址 | 主要软件 |
---|---|---|
HAProxy 服务器 | 192.168.100.200 | haproxy-1.5.19.tar.gz |
Nginx 服务器1 | 192.168.100.201 | nginx-1.12.0.tar.gz |
Nginx 服务器2 | 192.168.100.202 | nginx-1.12.0.tar.gz |
开始部署
部署 Nginx 服务器
- 一、 编译安装 Nginx 服务器
yum install -y pcre-devel zlib-devel gcc gcc-c++ make
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
-
安装后的默认信息如下。
-默认安装目录: /usr/local/nginx
-默认日志: /usr/local/nginx/logs/
-默认监听端口:80
-默认 Web 目录: /usr/local/nginx/html -
接下来设置测试页面并启动 Nginx 服务
echo "Server 192.168.100.201" > /usr/local/nginx/html/test.html
/usr/local/nginx/sbin/nginx ##启动nginx
systemctl stop firewalld.service
setenforce 0
-
为了方便,网站直接使用 IP 地址访问。在客户端访问 http://192.168.100.201/test.html 进行测试。
-
搭建 Nginx 服务器2的过程和 Nginx 服务器1的编译安装步骤相同,不同地方在于建立测试页面。
echo "Server 192.168.100.202" > /usr/local/nginx/html/test.html
部署 HAProxy 服务器
- 编译安装 HAProxy
yum install pcre-devel bzip2-devel gcc gcc-c++ make -y
tar zxvf haproxy-1.5.19.tar.gz -C /opt
cd haproxy-1.5.19/
make TARGET=linnux26 ##64位系统
make install
- HAProxy 服务器配置
mkdir /etc/haproxy
cp examples/haproxy.cfg /etc/haproxy/ ##复制haproxy.cfg 文件复制到配置文件目录
- 编辑配置文件
vim /etc/haproxy/haproxy.cfg
chroot /usr/share/haproxy ##删除两条语句及所有 listen 项目
redispatch
##添加
listen webcluster 0.0.0.0:80option httpchk GET /test.htmlbalance roundrobinserver inst1 192.168.100.201:80 check inter 2000 fall 3server inst2 192.168.100.202:80 check inter 2000 fall 3
- 复制自启动脚本,并启动服务
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
- Windows 客户端测试(可以看到访问 HAProxy 服务器地址时,轮询访问两台 Nginx 服务器)
HAProxy 日志定义分离
-
HAProxy 日志默认输出到系统 syslog 中,查看非常不方便。为了更好的管理日志,可以将 HAProxy 的 info 访问日志和 notice 错误日志记录到不同的日志文件中。
-
修改配置文件
vim /etc/haproxy/haproxy.cfg
##修改为下面的行
globallog /dev/log local0 infolog /dev/log local0 notice
- 修改 rsyslog 配置,并重启 rsylog 服务
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
&~
if ($programname == 'haproxy' and $syslogseverity-text == 'notice')
then -/var/log/haproxy/haproxy-notice.log
&~
通过客户端访问 HAProxy 服务器,并查看日志
cd /var/log/haproxy/
cat haproxy-info.log