nginx宕机-自动切换(脚本)

nginx宕机-自动切换(脚本)

#步骤
推导
ps aux |grep nginx

ps aux |grep -c nginx

[root@master mnt]# ps aux|grep -c nginx
3
[root@master mnt]# ps aux|grep -c nginx
1

#tips:此操作说明nginx正常状态时,显示了4,不正常显示1
正常是4  不正常是1



实现方式

第一种(手动)
1.编写一个nginx状态脚本

mkdir -p /server/sh
vim web.sh


#!/bin/bash
pid=`ps aux |grep -c nginx`
echo $pid

if [ $pid -lt 3 ]
then
systemctl stop keepalived
fi

chmod +x web.sh

bash web.sh



#tips:这个脚本主库和从库都必须要有,我们下面自动挡需要



第二种(自动)
2.修改配置文件(主库+从库)


主库:
cd /etc/keepalived
vim keepalived.conf 

! Configuration File for keepalived
   
    global_defs {
        router_id lb01    #高可用集群标识 不能冲突
    }
    vrrp_script web {
     script "/server/sh/web.sh"   #定义的脚本和目录
     interval 3                   #执行脚本间隔时间
     weight 2                     #执行权重
}
    vrrp_instance it {       #家族名字
        state MASTER          #身份
        interface eno16777736        #网卡名称 这里要与你的网卡名要一样
        virtual_router_id 51    #身份信息 两台要一致
        priority 150           #优先级   数字越高 等级越大
        advert_int 1           #组播发送间隔时间
        authentication {       #认证过程
            auth_type PASS
            auth_pass 1111
        }
        virtual_ipaddress {
            10.0.1.100/24          #配置虚拟vip
}
track_script {
             web             #调用上面定义的脚本
       }
    }


systemctl restart keepalived
重启一下,检查上面的语法是不是正确的





从库:
cd /etc/keepalived
vim keepalived.conf 
! Configuration File for keepalived
   
    global_defs {
        router_id lb02    #高可用集群标识 不能冲突
    }
   
    vrrp_script web {
     script "/server/sh/web.sh"  
     interval 3   
     weight 2
}

    vrrp_instance it {       #家族名字
        state BACKUP          #身份
        interface eth0       #网卡名称 这里要与你的网卡名要一样
        virtual_router_id 51    #身份信息 两台要一致
        priority 100           #优先级   数字越高 等级越大
        advert_int 1           #组播发送间隔时间
        authentication {       #人证过程
            auth_type PASS
            auth_pass 1111
        }
        virtual_ipaddress {
            10.0.1.100/24          #配置虚拟vip

track_script {
             web 
       }
        }
    }

systemctl restart keepalived
重启一下,检查上面的语法是不是正确的











测试:如果此时nginx状态死了,此时再看一下keepalived的状态是不是也挂了,如果是,那就成功了



posted @   三思博客  阅读(11)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
点击右上角即可分享
微信分享提示