Linux-安装配置keepalived
1、准备keepalived安装包
官网地址:https://www.keepalived.org/download.html
2、安装相关依赖
yum install openssl openssl-devel libnl libnl-devel -y
3、解压keepalived安装包
tar -zxvf keepalived-2.0.20.tar.gz
4、安装配置keepalived
#进入keepalived-2.0.20目录
cd /usr/local/keepalived-2.0.20/
#执行配置,指定安装位置
./configure --prefix=/usr/local/keepalived
#编译并安装
make && make install
5、将keepalived添加到系统服务中
# 创建keepalived文件夹
mkdir /etc/keepalived/
# 将keepalived配置文件拷贝到etc下
cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/
# 拷贝执行文件
cp /usr/local/keepalived/sbin/keepalived /usr/sbin/
# 将初始化脚本拷贝到系统初始化目录下
cp /opt/mysoft/keepalived-2.0.20/keepalived/etc/init.d/keepalived /etc/init.d/
# 将keepalived系统配置文件拷贝到etc下
cp /usr/local/keepalived-2.0.20/keepalived/etc/sysconfig/keepalived /etc/sysconfig/
# 添加可执行权限
chmod +x /etc/init.d/keepalived
# 添加keepalived到开机启动
chkconfig --add keepalived
chkconfig keepalived on
# 查看添加到chkconfig的自启动服务
chkconfig --list
6、启动和停止keepalived
#启动keepalived服务
systemctl start keepalived或者service keepalived start
#停止keepalived服务
systemctl stop keepalived或者service keepalived stop
#重启keepalived服务
systemctl restart keepalived或者service keepalived restart
#查看keepalived服务运行情况
ps -ef | grep keepalived或者systemctl status keepalived或者service keepalived status
#禁止keepalived开机自启动
systemctl disable keepalived
#启用keepalived开机自启动
systemctl enable keepalived
7、增加nginx状态检测脚本
cd /usr/local/keepalived/
touch check_nginx.sh
chmod 755 check_nginx.sh
vim check_nginx.sh
#!/bin/sh
count=`ps -ef | grep nginx | grep -v grep | wc -l`
#count=`ps -C nginx --no-header | wc -l` 这种方式也是可以的
if [ $count -eq 0 ]
then
# 重启nginx服务
echo "nginx is not running....., starting nginx...."
`/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf`
sleep 2
# 如果nginx服务还启动失败,那么就kill主节点,使用备节点(升级为主节点)提供对外服务
count=`ps -ef | grep nginx | grep -v grep | wc -l`
if [ $count -eq 0 ]
then
killall keepalived
fi
else
echo "nginx is running...."
fi
#保存退出
:wq
8、编辑keepalived配置文件
#主节点
````
#配置文件
! Configuration File for keepalived
global_defs {
#唯一标识,一般为用户名
router_id username1
}
#监控服务.NGINX mysql等
vrrp_script chk_nginx {
script "/usr/local/keepalived/check_nginx.sh"
#每2s检查一次
interval 2
#每次检查-20
weight -20
}
vrrp_instance VI_1 {
##主从设置 MASTER/BACKUP
state MASTER
#网卡名称
interface ems32
#同一个集群下这个 router_id是一样的
virtual_router_id 51
#本机的ip,需要修改
mcast_src_ip 192.168.2.72
#优先级,从节点 配置,需要小于主节点
priority 100
#设定MASTER与BACKUP负载均衡器之间同步检查的时间间隔,单位是秒
advert_int 1
#认证的密码
authentication {
auth_type PASS
#设定授权密码,密码相同的为一个集群
auth_pass F%b4BpbTR@N$
}
#触发的脚本
track_script {
chk_nginx #检测脚本,上面配置的
}
#虚拟ip地址(同一个集群中的虚拟ip必须得相同,可配置多个)
virtual_ipaddress {
192.168.2.73
192.168.2.74
}
}
#从节点
````
#配置文件
! Configuration File for keepalived
global_defs {
#唯一标识,一般为用户名
router_id username2
}
#监控服务.NGINX mysql等
vrrp_script chk_nginx {
script "/usr/local/keepalived/check_nginx.sh"
#每2s检查一次
interval 2
#每次检查-20
weight -20
}
vrrp_instance VI_1 {
##主从设置 MASTER/BACKUP
state MASTER
#网卡名称
interface em3
#同一个集群下这个 router_id是一样的
virtual_router_id 51
#本机的ip,需要修改
mcast_src_ip 192.168.2.76
#优先级,从节点 配置,需要小于主节点
priority 80
#设定MASTER与BACKUP负载均衡器之间同步检查的时间间隔,单位是秒
advert_int 1
#认证的密码
authentication {
auth_type PASS
#设定授权密码,密码相同的为一个集群
auth_pass F%b4BpbTR@N$
}
#触发的脚本
track_script {
chk_nginx #检测脚本,上面配置的
}
#虚拟ip地址(同一个集群中的虚拟ip必须得相同,可配置多个)
virtual_ipaddress {
192.168.2.73
192.168.2.74
}
}
参考:https://blog.csdn.net/qq_35457078/article/details/84879338