Keepalived 下载地址:https://www.keepalived.org/
安装环境:CentOS 7.7
keepalived :keepalived-2.0.20.tar.gz
下载包放在 /usr/local/ 目录下面,然后进行解压和安装:
tar -zxvf keepalived-2.0.20.tar.gz
cd keepalived-2.0.20/
./configure --prefix=/usr/local/keepalived
make && make install
文件配置
# keepalived启动脚本变量引用文件,默认文件路径是/etc/sysconfig/,也可以不做软链接,直接修改启动脚本中文件路径即可(安装目录下)
[root@localhost /]# cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/keepalived
# 将keepalived主程序加入到环境变量(安装目录下)
[root@localhost /]# cp /usr/local/keepalived/sbin/keepalived /usr/sbin/keepalived
# keepalived启动脚本(源码目录下),放到/etc/init.d/目录下就可以使用service命令便捷调用
[root@localhost /]# cp /usr/local/keepalived-2.0.20/keepalived/etc/init.d/keepalived /etc/init.d/keepalived
# 将配置文件放到默认路径下
[root@localhost /]# mkdir /etc/keepalived
[root@localhost /]# cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf
启动、关闭、重启service keepalived start|stop|restart
如果出现keepalived启动后,使用stop命令无效,修改文件: /lib/systemd/system/keepalived.service
PIDFile=/run/keepalived.pid 改为 PIDFile=/var/run/keepalived.pid
vi /lib/systemd/system/keepalived.service
[Unit]
Description=LVS and VRRP High Availability Monitor
After=network-online.target syslog.target
Wants=network-online.target
[Service]
Type=forking
PIDFile=/var/run/keepalived.pid #修改这里
KillMode=process
EnvironmentFile=-/usr/local/keepalived/etc/sysconfig/keepalived
ExecStart=/usr/local/keepalived/sbin/keepalived $KEEPALIVED_OPTIONS
ExecReload=/bin/kill -HUP $MAINPID
[Install]
WantedBy=multi-user.target
systemctl daemon-reload #重新载入 systemd,扫描新的或有变动的单元
查看 keepalived 日志:
tail -f /var/log/messages
1.日志提示:WARNING - script '/etc/keepalived/check_nginx.sh' is not executable for uid:gid 0:0 - disabling.
原因:backup上keepalived监控脚本没有执行权限
解决:chmod +x /etc/keepalived/check_nginx.sh
2.service keepalived stop 无效:
查看keepalived的启动service文件
路径:vim /usr/lib/systemd/system/keepalived.service
[Unit]
Description=LVS and VRRP High Availability Monitor
After=network-online.target syslog.target
Wants=network-online.target
[Service]
Type=forking
PIDFile=/run/keepalived.pid
#KillMode=process #注释掉这行
EnvironmentFile=-/usr/local/keepalived/etc/sysconfig/keepalived
ExecStart=/usr/local/keepalived/sbin/keepalived $KEEPALIVED_OPTIONS
ExecReload=/bin/kill -HUP $MAINPID
[Install]
WantedBy=multi-user.target
注释掉一行
KillMode=process的大致意思是当停止keepalived的时候只会停掉主进程,而主进程产生的子进程是不会被干掉的。而killmode的默认值是control-group,意思时所有进程都会被干掉,我这里选择把这项注释掉。
重载配置
systemctl daemon-reload
ok了 之后在使用systemctl stop keepalived就不会出现进程还在的情况了