Nginx系列(三)-Keepalive热备高可用
上一篇: Nginx系列(二)-配置文件
下一篇: Nginx系列(四)-安全认证
一、 介绍
1. 当nginx作为后端部署架构中最前端的负载均衡时,随着访问量和并发量的日益增长.为了防止入口的nginx宕机,
我们需要做双主高可用.
2. 这里我们是采用的keepalived的vip飘移来解决nginx的单点问题,实现工作节点的快速切换.
3. vip就是虚拟ip,这个大家自行百度哈.但是这种方式好像只在公司自建机房的时候才会用到,因为如果都上云的
话,云服务商是不提供vip的,因为他们有自己的负载高可用服务方案.
二、 部署
2.1 机器准备
角色 | ip |
---|---|
master | 192.168.3.16 |
backup | 192.168.3.17 |
vip(这个不是机器,只是个ip,同一网段) | 192.168.3.18 |
core 测试程序 | 192.168.3.15 |
1. 准备三台机器,master和backup提前把nginx安装好.
2. 至于vip那一台则不需要,只需要保证vip能ping通就好
3. core测试程序那台部署两个测试api程序即可
2.2 准备工作
- 准备core程序并运行,为了方便我们测试,我们将分别部署两套并用主、备nginx分别来代理
- nginx配置文件示例
location /test {
proxy_pass http://192.168.3.15:12313; #两台nginx上指定这个来代理
root html;
index index.html index.htm;
}
- 分别在3.16、3.17上安装nginx并代理到3.15
2.3 下载、启动keepalived
1. yum install nginx keepalived pcre-devel -y #下载安装
2. cp /etc/keepalived/keepalived.conf keepalived.conf.bak #备份配置文件
3. 删除keepalived.conf文件中多余的配置,保留下面
4. 从节点的 state --> backup , priority ---> 比主节点低.
! Configuration File for keepalived
global_defs {
vrrp_garp_interval 0
vrrp_gna_interval 0
}
vrrp_script check_nginx {
script "/etc/keepalived/check_nginx.sh"
}
vrrp_instance VI_1 {
state MASTER # 这个是主节点
interface eth0 #网卡
virtual_router_id 51
priority 100 #权重
advert_int 1
authentication {# 认证配置,主从节点需要一致
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.3.18 # vip
}
track_script {
check_nginx
}
}
# 监控nginx的脚本
cat > /etc/keepalived/check_nginx.sh << "EOF"
#!/bin/bash
count=$(ss -antp |grep 80 |egrep -cv "grep|$$") # 我们监听80端口
if [ "$count" -eq 0 ];then
exit 1
else
exit 0
fi
EOF
chmod +x /etc/keepalived/check_nginx.sh # 给权限
systemctl start keepalived
启动.
2.4 查看运行是否正常
- 检查vip是否成功配置,下图可以看出来,3.16是我们master-nginx节点,下面已经存在了3.18的vip.
而3.7 nginx-备节点是没有3.18的vip.说明vip成功.
- 通过vip来访问,我们可以看到,keepalived帮我们代理到了nginx-master节点,也就是3.16.
3. 此时我们把3.16的keepalive停掉 systemctl stop keepalived
,此时vip已经飘移到了3.17的 nginx-备节点了.
- 此时我们访问一下
三、 总结
1. 上面步骤我们测试了keepalived的vip飘移,能自动的帮我们把访问流量从 192.168.3.16切换到
192.168.3.17的nginx上
2. 但是如果nginx宕机了,那么就是哪个nginx的检测脚本起作用了.
3. 博主没有针对nginx宕机来测试,留给大家自己测了.但是会有一定时间的延时,不会想keepalived宕机
切换那么快.
4. 如有不对,欢迎指正.