keepalived启动过程中犯的错误

当使用systemctl start keepalived启动keepalived时,有时会发现服务并未成功启动,但不会显示错误。为确认状态,需要手动检查systemctl status keepalived。问题可能源于配置文件,例如因修改了mysql配置导致权限验证失败,从而影响到LVS服务,使得脚本自动执行了systemctl stop keepalived。解决方法是修正相关配置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

keepalived很奇怪,执行systemctl start keepalived
虽然有时候就没有启动成功,但是它从来不报错,简直过分
所以每次启动keepalived ,都要手动systemctl status keepalived查看一下是否启动成功
如果没有启动成功,就查看系统日志 /var/log/message

[root@nginx-backup ~]# cat /var/log/messages

Mar 19 00:54:07 nginx-backup Keepalived_vrrp[2103]: Opening file '/etc/keepalived/keepalived.conf'.
Mar 19 00:54:07 nginx-backup Keepalived_vrrp[2103]: VRRP_Instance(VI_1) removing protocol VIPs.
Mar 19 00:54:07 nginx-backup Keepalived_vrrp[2103]: Using LinkWatch kernel netlink reflector...
Mar 19 00:54:07 nginx-backup Keepalived_vrrp[2103]: VRRP_Instance(VI_1) Entering BACKUP STATE
Mar 19 00:54:07 nginx-backup Keepalived_vrrp[2103]: VRRP sockpool: [ifindex(2), proto(112), unicast(0), fd(10,11)]
Mar 19 00:54:07 nginx-backup Keepalived[2101]: Stopping
Mar 19 00:54:07 nginx-backup systemd: Stopping LVS and VRRP High Availability Monitor...
Mar 19 00:54:07 nginx-backup Keepalived_healthcheckers[2102]: Stopped

看看配置文件,发生了什么??为什么LVS服务自动给我停了

[root@nginx-backup ~]# vim /etc/keepalived/keepalived.conf
! Configuration File for keepalived

global_defs {
        router_id backup
        script_user root
        enable_script_security
}
# 每隔5s中执行一次/etc/keepalived/keepalived_check_mysql.sh脚本
# 脚本的作用: 如果该节点的mysql服务如果访问不了,就执行停止keepslived指令
vrrp_script check_run {
        script "/etc/keepalived/keepalived_check_mysql.sh"
        interval 5
}

vrrp_instance VI_1 {
        state BACKUP
        nopreempt
        interface eth0
        virtual_router_id 89
        priority 50
        advert_int 1
        authentication {
                auth_type PASS
                auth_pass 1111
        }
        virtual_ipaddress {
                192.168.208.77/24
        }
        track_script {
                check_run
        }
}
[root@nginx-backup ~]# cat /etc/keepalived/keepalived_check_mysql.sh 
#!/usr/bin/env bash
#
#
/usr/bin/mysql -e "show status" &>/dev/null 
if [ $? -ne 0 ] ;then 
	systemctl stop keepalived
fi

我忽然想起来,mysql被我修改了配置文件必须要密码登录,开启了权限验证
所以这里直接访问mysql是被拒绝的,当上一条指令执行不成功,脚本中就执行了systemctl stop keepalived,,自动帮我将keepalived给停了
做如下修改

#!/usr/bin/env bash
#
#
/usr/bin/mysql -uty -p'123456' -e "show status" &>/dev/null 
if [ $? -ne 0 ] ;then 
	systemctl stop keepalived

现在可以启动keepalived看一下

[root@nginx-backup ~]# systemctl start keepalived.service 
[root@nginx-backup ~]# systemctl status keepalived.service 
● keepalived.service - LVS and VRRP High Availability Monitor
   Loaded: loaded (/usr/lib/systemd/system/keepalived.service; disabled; vendor preset: disabled)
   Active: active (running) since Thu 2020-03-19 01:25:47 CST; 6s ago
  Process: 3493 ExecStart=/usr/sbin/keepalived $KEEPALIVED_OPTIONS (code=exited, status=0/SUCCESS)
# 启动成功啦
# 看看vip 192.168.208.77是否绑定在了网卡eth0上
[root@nginx-backup ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:50:56:3e:12:30 brd ff:ff:ff:ff:ff:ff
    inet 192.168.208.137/24 brd 192.168.208.255 scope global eth0
       valid_lft forever preferred_lft forever
    inet 192.168.208.77/24 scope global secondary eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::250:56ff:fe3e:1230/64 scope link 
       valid_lft forever preferred_lft forever

# 哈哈,没有问题,搞定
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值