• CentOS 7 Keepalive 脚本不执行解决


    问题

    起因是在测试部署 Altls + Keepalive 高可用读写分离,测试停止Atlas服务的时候,发现Keepalive不会自动主从切换,就是Keepalive还是正常运行,vip并没有被slave接管。

    也就是文章: centos 7 Atlas keepalived 实现高可用 MySQL 5.7 MHA环境读写分离

    后来通过查询,发现解决,这里总结一下(文章中的问题已经被解决)。

    一共发现两种问题

    • 括号问题
    • 脚本名称有问题

    问题一 括号问题

    第一个问题就是keepalive中配置的脚本不自动执行

    首先需要检查脚本是否有问题,也就是需要手动执行脚本是否正常

    首先需要检查脚本是否有问题,也就是需要手动执行脚本是否正常

    以上述文章中的案例

    ! Configuration File for keepalived
    
    global_defs {
       router_id mysql_proxy_196
    }
    
    vrrp_script chk_atlas_proxy    # 这里的大括号'{' 不能放在这里行,要换行顶头,前面不能有空格
    {
        script "/etc/keepalived/che_atlas.sh"
        interval 2
        weight -2
    }   # 这里的大括号前面也不能有空格
    
    vrrp_instance VI_1 {
        state BACKUP
        interface bond0
        virtual_router_id 151
        priority 150
        advert_int 1
        authentication {
            auth_type PASS
            auth_pass 1111
        }
        virtual_ipaddress {
            10.0.20.198/24 dev bond0 label bond0:1
        }
        track_script {
            chk_atlas_proxy
        }
    }
    

    做到上述,基本上就可以了


    问题二 脚本名称问题

    以 Nginx + keepalive 高可用为案例

    脚本名称为: check_nginx.sh

    脚本内容

    if [ `ps aux | grep nginx | grep -v grep | wc -l` -ne 3 ];then
    systemctl stop keepalived
    fi
    

    如果在Keepalive配置文件中配置是下面的配置,会发现keepalive启动不了,查看message日志,启动后,就会立马被停止。

    这里的问题经常性的被忽略,根据脚本的判断,nginx主进程加上ngxin的线程不等于3的时候,就会停止keepalive

    手动执行ps 命令的时候,没问题,也是3个

    有一个问题大家想过没有,当keepalive启动后,会执行check_nginx.sh脚本,而ps命令中的grep命令筛选条件是nginx,而脚本名称中包含nginx,当keepalive执行check_nginx.sh脚本的时候,也会产生一个进程,其中就包含nginx的字符,同样会被脚本中的grep命令当做条件筛选出来,那么if判断就会生效,执行if内部的命令

    这么说应该明白了吧。。。。不明白博客下面有我扣扣。。。。

    所以要解决这个问题,要么更换if条件,要么更换脚本名称,建议更换脚本名称为check_ngx.sh,这样问题就迎刃而解了。

  • 相关阅读:
    一个神秘现象引发对beego框架的思考
    利用golang优雅的实现单实例
    Go语言及Beego框架环境搭建
    go语言正则表达式
    爬取珍爱网后用户信息展示
    Django之modelform简介
    Django之分页功能
    Django之ORM操作
    selenium模拟鼠标操作
    Django之模型注册
  • 原文地址:https://www.cnblogs.com/winstom/p/11045286.html
Copyright © 2020-2023  润新知