简单配置nginx+keepalived高可用主备模式
阿里云国内75折 回扣 微信号:monov8 |
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6 |
准备两台nginx安装参考yum安装nginx
主nginx-master 192.168.44.132
备nginx-backup 192.168.44.133
1、 修改index文件方便查看keepalived效果
1.1、 修改主服务器index文件
[root@nginx-master html]# vim index.html
<h1>this is nginx-master</h1>
1.2、 修改备服务器index文件
[root@nginx-backup html]# vim index.html
<h1>this is nginx-backup</h1>
2、 下载keepalived并配置
2.1、主服务器下载配置keepalived192.168.44.132
yum -y install keepalived #下载
systemctl enable --now keepalived #启动自启
2.1.1、修改keepalived配置文件
使用yum安装的keepalived的配置文件位置在/etc/keepalived
vim keepalived.conf
global_defs {
router_id nginx-master ##标识节点的字符串通常为hostname
}
## keepalived 会定时执行脚本并且对脚本的执行结果进行分析动态调整 vrrp_instance的优先级。这里的权重weight 是与下面的优先级priority有关如果执行了一次检查脚本成功则权重会-20也就是由100 - 20 变成了
80Master 的优先级为80 就低于了Backup的优先级90那么会进行自动的主备切换。
## 如果脚本执行结果为0并且weight配置的值大于0则优先级会相应增加。
## 如果脚本执行结果不为0 并且weight配置的值小于0则优先级会相应减少。
vrrp_script chk_nginx {
script "/etc/keepalived/nginx_pid.sh" ##执行脚本位置、需要自己编写
interval 2 ##检测时间间隔
weight -20 ## 如果条件成立则权重减20-20
}
## 定义虚拟路由 VI_1为自定义标识。
vrrp_instance VI_1 {
state MASTER ## 主节点为MASTER备份节点为BACKUP
## 绑定虚拟IP的网络接口网卡与本机IP地址所在的网络接口相同我这里是ens33
interface ens33
virtual_router_id 172 ## 虚拟路由ID号
mcast_src_ip 192.168.44.132 ## 本机ip地址
priority 100 ##优先级配置0-254的值
Nopreempt ##
advert_int 1 ## 组播信息发送间隔俩个节点必须配置一致默认1s
track_script {
chk_nginx
}
virtual_ipaddress {
192.168.44.139 ## 虚拟ip(vip)可以指定多个这里设置同一网段是为了方便测试不然就需要代理或者路由了
}
}
2.1.2、编写nginx状态检测脚本
vim nginx_pid.sh
#!/bin/bash
Pid_num=`ps -C nginx --no-header |wc -l`
if [ $Pid_num -eq 0 ];then
systemctl restart nginx #重启nginx
sleep 3
Pid_num=`ps -C nginx --no-header |wc -l`
if [ $Pid_num -eq 0 ];then
systemctl stop keepalived #如果重启失败关闭keepalived
fi
fi
chmod a+x nginx_pid.sh #脚本给执行权限
2.1.3、重启keepalived
systemctl restart keepalived
2.2、备服务器下载配置keepalived192.168.44.133
安装忽略
2.2.1、修改keepalived配置文件
global_defs {
router_id nginx-backup
}
vrrp_script chk_nginx {
script "/etc/keepalived/nginx_pid.sh"
interval 2
weight -20
}
vrrp_instance VI_1 {
state BACKUP #备用服务器
interface ens33
virtual_router_id 173
mcast_src_ip 192.168.44.133 ## 本机ip地址
priority 90 ##优先级配置需要小于主服务器配置
advert_int 1 #与主服务器保持一致
track_script {
chk_nginx
}
virtual_ipaddress {
192.168.44.139
}
}
2.2.2、编写nginx状态检测脚本
与主服务器一致这里忽略
2.2.3、重启keepalived
systemctl restart keepalived
3、 进行测试
3.1、停止master服务器的nginx和keepalived进行测试
systemctl stop keepalived && systemctl stop nginx
3.2、使用虚拟IP192.168.44.139 进行访问测试
#可以看到已经完成IP漂移了
启动master服务器上的nginx 和 keepalived在次访问测试
#流量成功发送到了maser服务器