nginx集群
传统web访问模型:用户发起请求-》服务器接收请求-》服务器处理请求-》服务器响应请求
缺点:单点故障、单台服务器资源有限、单台服务器处理耗时长
解决办法
方案一:部署一台备用服务器,宕机时直接切换
服务器利用率低,成本高,切换不及时,服务器压力依然大
方案二:部署多台服务器,根据DNS的轮询解析机制去实现用户分发
用户处理速度得到提高,但一台服务器故障,就有一部分用户访问不了网站
并行处理方案
集群模式:多态机器组成服务器,单台服务器出现故障时不向他分发内容即可,使用分发器控制。
VIP:虚ip,有虚ip的主机负载分发器的作用
集群原理
nginx在集群中属于分发器,有基于应用层分发器和基于传输层分发器两种
原理:虚拟主机+反向代理+upstream分发器模块组成
虚拟主机:接受响应和请求
反向代理:带用户去数据服务器拿数据
upstream:告诉nginx去哪个数据服务器拿数据
集群实现
一台主机做分发器,两台主机做数据处理
分发器:192.168.10.129
接收器:
192.168.10.41
192.168.10.42
虚拟主机接受用户请求-》反向代理-》upstream分发器-》数据服务器-》处理请求-》返回相应nginx-》nginx响应请求给用户
接受服务器配置
两个接受服务器上网站资源一样即可
能访问网站即可
分发器配置
upstream web{
server 192.168.10.41;
server 192.168.10.42;
}
server {
listen 80;
server_name www.bac.com;
location / {
proxy_pass http://web;
}
}
分发服务器使用proxy_pass
将浏览器请求转发达分发器中,upstream
默认平均分配请求给服务器去处理数据
keepalive高可用集群
keepalive是监控加自愈软件。检测服务器状态,宕机时,尝试重启服务,失败时,剔除服务器
分发器配置
构建一个高可用集群,解决备份分发器闲置问题
1.安装keepalive
vim keepalived_install.sh
sh keepalived_install
keepalived_install脚本内容
2.配置nginx.conf
3,配置keepalive.conf
vim /etc/keepalived/keepalived.conf
主服务器
主服务器使用state MASTER
备份服务器
备份服务器使用state BACKUP
执行脚本文件
检查nginx服务器是否启动,没有启动则使其启动,若启动不了,则关闭keepalived程序
4.验证
lsof -i :80
killall nginx
lsof -i :80
杀掉nginx后,keepalived重新启动nginx,pid会改变
抓包
tcpdump -nn -vvv -i ens33 vrrp
224.0.0.18 为组播地址,检查网络中数据服务器是否存活
查看主服务器ip
ip add show
主服务器有虚拟ip 192.168.10.213/24
而备份服务器则没有
测试keepalived是否好用
ip add show 查看虚地址 192.168.10.213/24在主分发器上
watch -n1 killall nginx 使主分发器发生故障
tailf /var/log/message 查看备份分发器是否拿到虚ip
我们可以看到备份服务器拿到虚拟ip
ip add show
同时,如果我再次启动主分发器,虚ip又会重新回到主分发器上
systemctl start keepalived
设置数据服务器备份
在三秒内失败2次就认定该数据服务器不可访问,自动转到其他数据服务器