一、什么是nginx高可用
二、配置nginx高可用的准备工作
- 需要2台服务器 192.168.253.133和192.168.253.134
- 在2台服务器上安装 nginx
- 在2台服务器上安装 keepalived
- 安装nginx请看: Nginx(二)nginx的安装
- 安装keepalived
- 使用yum 命令进行安装:yum install keepalived -y
- 安装之后,在etc里面生成目录keepalived,有文件keepalived.conf
- 高可用配置(主从配置)
- 修改/etc/keepalived/keepalived.conf配置文件
global_defs {
notification_email {
acassen@firewall.loc
failover@firewall.loc
sysadmin@firewall.loc
}
notification_email_from Alexandre.Cassen@firewall.loc
smtp_server 192.168.253.133
smtp_connect_timeout 30
router_id 192.168.253.133
}
vrrp_script chk_http_port {
# 执行的脚本地址
script "/usr/local/src/nginx_check.sh"
#检测脚本的执行间隔
interval 2
# 权重
weight 2
}
vrrp_instance VI_1 {
#指定Keepalived的角色,MASTER表示此主机是主服务器,BACKUP表示此主机是备用服务器,所以设置priority时要注意MASTER比BACKUP高。
#如果设置了nopreempt,那么state的这个值不起作用,主备靠priority决定。
state MASTER
# 设置为不抢占
# nopreempt
# 指定监测网络的接口,当LVS接管时,将会把IP地址添加到该网卡上。
interface ens33
#虚拟路由标识,同一个vrrp实例使用唯一的标识,同一个vrrp_instance下,MASTER和BACKUP必须一致。
#主、备机的virtual_router_id 必须相同
virtual_router_id 51
#指定这个实例优先级
#主、备机取不同的优先级,主服务器较大,备份服务器较小
priority 100
#心跳报文发送间隔
advert_int 1
authentication {
#设置验证类型,主要有PASS和AH两种
auth_type PASS
#设置验证密码,同一个vrrp_instance下,MASTER和BACKUP的密码必须一致才能正常通信
auth_pass 1111
}
virtual_ipaddress {
#设置虚拟IP地址,可以设置多个虚拟IP地址,每行一个
192.168.253.50 #VRRP H虚拟地址
}
track_script {
chk_nginx ## 执行 Nginx 监控的服务
}
}
- 在/usr/local/src添加检测脚本
#!/bin/bash
A=`ps -C nginx –no-header |wc -l`
if [ $A -eq 0 ];then
/usr/local/nginx/sbin/nginx
sleep 2
if [ `ps -C nginx --no-header |wc -l` -eq 0 ];then
killall keepalived
fi
fi
- 启动2台服务器上的nginx和keepalived
nginx:./nginx
keepalived启动:systemctl start keepalived
keepalived停止:systemctl stop keepalived
keepalived自启: systemctl enable keepalived
- 最终测试
- 在浏览器地址栏输入 虚拟 ip 地址 192.168.253.50
- 把主服务器nginx和keepalived停止,再次输入 虚拟 ip 地址 192.168.253.50
四、keepalived出现主备机同时绑定vip的解决方法
- 参考
https://blog.csdn.net/liu1160848595/article/details/104653226
https://blog.csdn.net/weixin_30648587/article/details/101385870