前言:现在有许多现成的高可用产品,比如阿里的产品等等,直接购买就可以使用。这个只是笔者自己私下练习使用,成功了。所以记一次总结过程
安装方式一
- 下载安装包:https://keepalived.org/download.html网址下载2.2.7版本
- 上传到Linux目录/home/os/keepalived并解压:tar -zxvf keepalived-2.2.7.tar.gz
- 进入目录 执行命令:./configure --prefix=/home/os/keepalived/data
注意:抛错:*** WARNING - this build will not support IPVS with IPv6. Please install libnl/libnl-3 dev libraries to support IPv6 with IPVS.
解决:yum -y install gcc yum -y install openssl openssl-devel
出现该错误主要原因缺少libnl核心库,只需要安装libnl 和 libnl-devel即可。
yum -y install libnl libnl-devel
因为没有安装epel原因导致:安装yum install epel-release
然后再次安装yum -y install libnl libnl-devel
如果还是失败:查看一下yum源是否失效,更新yum源
- 编辑并且进行安装 keepalived
make && make install - 查看keepalived的位置
whereis keepalived
yum -y install keepalived
安装方式二:推荐
1、yum -y install keepalived
备注:yum方式安装的会生产配置文件在/etc/keepalived下:
配置Keepalived:
在此使用自定义的Keepalived配置文件脚本(先清空或删除自带配置文件脚本)。
[root@adailinux ~]# vim /etc/keepalived/keepalived.conf
global_defs {
notification_email {
aming@aminglinux.com
} #定义故障提醒邮件接收地址(本实验用不到)
notification_email_from root@aminglinux.com
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id LVS_DEVEL #定义故障提醒邮件发送地址(本实验用不到)
}
vrrp_script chk_nginx { #定义监控脚本
script "/usr/local/sbin/check_ng.sh" #指定服务健康检测(check)脚本
interval 3 #检测时间间隔
}
vrrp_instance VI_1 {
state MASTER #定义该服务的角色
interface ens33 #定义在本机中监听VIP的网卡
virtual_router_id 51 #虚拟路由id(同组中的服务器保持该id一致)
priority 100 #指定本机权重(决定优先级)
advert_int 1
authentication { #定义认证相关信息
auth_type PASS #认证类型为密码形式
auth_pass 123456 #定义认证密码
}
virtual_ipaddress { #定义VIP
192.168.188.100
}
track_script { #加载监控服务(脚本)
chk_nginx #注意此处服务名称要与上面监控脚本名称一致
}
}
创建监控脚本:
[root@adailinux ~]# vim /usr/local/sbin/check_ng.sh
#!/bin/bash
#时间变量,用于记录日志
d=`date --date today +%Y%m%d_%H:%M:%S`
#计算nginx进程数量
n=`ps -C nginx --no-heading|wc -l`
#如果进程为0,则启动nginx,并且再次检测nginx进程数量,
#如果还为0,说明nginx无法启动,此时需要关闭keepalived
if [ $n -eq "0" ]; then
/etc/init.d/nginx start
n2=`ps -C nginx --no-heading|wc -l`
if [ $n2 -eq "0" ]; then
echo "$d nginx down,keepalived will stop" >> /var/log/check_ng.log
systemctl stop keepalived #在此停止Keepalived服务是为了避免发生脑裂
fi
fi
更改脚本权限:
[root@adailinux ~]# chmod 755 /usr/local/sbin/check_ng.sh
启动Keepalived服务:
[root@adailinux ~]# systemctl start keepalived
检测服务状态:
[root@adailinux ~]# ps aux |grep keep
参考文档:
https://www.iteye.com/blog/wx1569466809-2484950
https://www.cnblogs.com/Amywangqing/p/14766752.html
脑裂问题:centos7 keepalived以及防火墙配置 - 菲菲菲菲菲常新的新手 - 博客园
https://blog.51cto.com/binghe001/5246348