Keepalived是一款开源的免费的高可用软件(项目),主要是用于实现WEB网站、数据库、业务系统的高可用、冗余的。当一台web网站等宕机切换至另外一台,断续为用户提供服务。
Keepalived软件主要有两大功能:健康检测、VRRP冗余,两个功能的剖析如下:
- 健康检测
类似工作在OSI七层模型中的3、4、7层,可以基于各个层次去实现去对网站、数据库的状态进行检测。一旦发现异常或宕机可以从集群中移除机器,当网站、数据库恢复之后还可以将其加入集群中。
- VRRP冗余
VRRP是虚拟路由冗余技术,是路由器高可用技术,Keepalived封装发VRRP模块,借助VRRP冗余技术实现2台物理机(Nginx、数据库)的高可用。
VRRP技术可以将2台路由器(物理机)组成虚拟路由集群,在该集群中设置优先级,优先级高的成为Master,优先级低的成为Backup,成为Master路由器拥有VIP地址(特权),由Master路由器负责接收用户的请求、数据转发。成为Master路由器会定时向虚拟路由器集群中机器发送组播包(224.0.0.18),其他Backup接收到Master发送过来的组播请求之后,Master告知Backup“我还存活,你们不能抢占成Master”。一旦Backup接收不到Master发送的组播请求,其余的Backup内部重新选举,优先级高的会变成Master。
实验环境
Keepalived:192.168.154.8
Web1:192.168.154.7
Web2:192.168.154.6
部署web1
安装nginx
yum -y install nginx

启用nginx服务
systemctl start nginx
进入网站发布目录
cd /usr/share/nginx/html/
上传网站包


解压网站包
unzip taobao_web.zip

将taobao_web目录下的所有文件目录移动到当前目录
mv taobao_web/* ./

关闭防火墙
systemctl stop firewalld
浏览器访问http://192.168.154.7/

改用域名访问
进入C:WindowsSystem32driversetc找到hosts文件
添加192.168.154.7 taobao.sbians.com


部署web2
安装nginx
yum -y install nginx

启用nginx服务
systemctl start nginx
进入网站发布目录
cd /usr/share/nginx/html/
上传网站包


解压网站包
unzip taobao_web.zip

将taobao_web目录下的所有文件目录移动到当前目录
mv taobao_web/* ./

关闭防火墙
systemctl stop firewalld
浏览器访问http://192.168.154.6/

改用域名访问
进入C:WindowsSystem32driversetc找到hosts文件
添加192.168.154.6 taobao.sbians.com


安装Keepalived(Master)
yum -y install keepalived

查看安装结果
rpm -qa | grep -aiE keepalived

进入keepalived目录
cd /etc/keepalived/

备份keepalived配置文件
cp keepalived.conf.sample keepalived.conf

配置keepalived配置文件
vim keepalived.conf
! Configuration File for keepalived
global_defs {
notification_email {
sbians_li@163.com
}
notification_email_from sbians_li@qq.com
smtp_server mail.qq.com
smtp_connect_timeout 30
}
vrrp_instance VI_1 {
state MASTER
interface ens33
virtual_router_id 51
priority 100
advert_int 5
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.154.8
}
}

启用Keepalived服务
systemctl start keepalived
查看进程
ps -ef | grep -aiE keepalived

安装Keepalived(Backup)
yum -y install keepalived

查看安装结果
rpm -qa | grep -aiE keepalived

进入keepalived目录
cd /etc/keepalived/

备份keepalived配置文件
cp keepalived.conf.sample keepalived.conf

配置keepalived配置文件
vim keepalived.conf
! Configuration File for keepalived
global_defs {
notification_email {
sbians_li@163.com
}
notification_email_from sbians_li@qq.com
smtp_server mail.qq.com
smtp_connect_timeout 30
}
vrrp_instance VI_1 {
state BACKUP
interface ens33
virtual_router_id 51
priority 90
advert_int 5
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.154.8
}
}

启用Keepalived服务
systemctl start keepalived
查看进程
ps -ef | grep -aiE keepalived

检测哪台机器是Master


检测实验结果
浏览器访问http://192.168.154.8/

进入C:WindowsSystem32driversetc找到hosts文件
添加192.168.154.8 taobao.sbians.com

浏览器访问域名

编写脚本检测nginx状态为0时,停止keepalived服务
vim /data/sh/2025-11-22/check_nginx.sh
#!/bin/bash
CHECK_NGINX=$(ps -ef|grep -aiwE nginx|grep -aivE "grep|check"|wc -l)
if [ $CHECK_NGINX -eq 0 ];then
systemctl stop keepalived.service
fi

在keepalived配置文件中使用vrrp模块
vrrp_script check_nginx {
script "/data/sh/2025-11-22/check_nginx.sh"
interval 5
}

调用脚本
track_script {
check_nginx
}

将脚本check_nginx.sh拷贝到另一台机器上

将配置文件keepalived.conf拷贝到另一台机器上
scp /etc/keepalived/keepalived.conf 192.168.154.7:/etc/keepalived/

修改另一台机上配置文件的优先级
vim /etc/keepalived/keepalived.conf

重启keepalived服务
systemctl restart keepalived.service

查看日志
tail -fn 20 /var/log/messages

收藏了,感谢分享