keepalived可以理解为redis的哨兵,当其中一台nginx宕机以后,备用机顶上
192.168.18.110 VIP(虚拟IP)
192.168.18.111 主nginx
192.168.18.112 备nginx
《linux安装nginx教程》
yum默认安装keepalived 到 /etc/keepalived
途中遇到选项直接 yes
yum install keepalived
查看keepalived是否安装成功
rpm -q -a keepalived
进入到 /etc/keepalived 修改 keepalived.conf 配置文件
192.168.18.111 主nginx下的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.18.111
smtp_connect_timeout 30
router_id LVS_DEVEL # LVS_DEVEL这字段在/etc/hosts文件中看;通过它访问到主机
}
vrrp_script chk_http_ port {
script "/usr/local/src/nginx_check.sh"
interval 2 # (检测脚本执行的间隔)2s
weight 2 #权重,如果这个脚本检测为真,服务器权重+2
}
vrrp_instance VI_1 {
state MASTER #state 主机MASTER 备机BACKUP
interface ens33 //网卡名称
virtual_router_id 111 # 主、备机的virtual_router_id必须相同
priority 100 #主、备机取不同的优先级,主机100,备份机90
advert_int 1 #每隔1s发送一次心跳
authentication { # 校验类型:密码=123456
auth type PASS
auth pass 123456
}
virtual_ipaddress { # 虛拟ip
192.168.18.110 // VIP 虛拟IP
}
}
进入到 /usr/local/src目录下新增 nginx_check.sh 文件
nginx_check.sh(建议主备机都是同样的安装目录,这样就可以直接拷贝文件过去了)
=`ps -C nginx -no-header | wc - 1`
if [ $A -eq 0];then
#你的nginx安装目录
/usr/local/nginx-1.20.2/nginx/sbin/nginx
sleep 2
if [`ps -C nginx --no-header| wc -1` -eq 0 ];then
killall keepalived
fi
fi
启动nginx
启动keepalived
systemctl start keepalived.service
查看keepalived启动状态
ps -ef|grep keepalived
访问 192.168.18.110
停止keepalived
systemctl stop keepalived.service
把192.168.18.111的keepalived停掉,再访问192.168.18.110访问的是 192.168.18.112
开机启动/停止
开机启动
systemctl enable keepalived.service
停止开机启动
systemctl disable keepalived.service