一、Keepalived 简介
Keepalived 是一个用于实现高可用性的软件,基于 VRRP(Virtual Router Redundancy Protocol)协议,主要用于:
负载均衡器的高可用
Web 服务的高可用
数据库高可用等
二、安装 Keepalived
1. CentOS/RHEL 系统
# 安装
sudo yum install keepalived -y
# 启动服务
sudo systemctl start keepalived
# 设置开机自启
sudo systemctl enable keepalived
# 查看状态
sudo systemctl status keepalived
2. Ubuntu/Debian 系统
# 安装
sudo apt-get update
sudo apt-get install keepalived -y
# 启动服务
sudo systemctl start keepalived
# 设置开机自启
sudo systemctl enable keepalived
三、Keepalived 基础配置
1. 主服务器配置示例
创建配置文件 /etc/keepalived/keepalived.conf:
global_defs {
router_id LVS_MASTER # 标识,唯一
}
vrrp_instance VI_1 {
state MASTER # 主节点
interface ens33 # 网络接口名,使用 ip addr 查看
virtual_router_id 51# 虚拟路由ID,主备必须相同
priority 100# 优先级,主节点高于备节点
advert_int 1# 心跳间隔(秒)
authentication {
auth_type PASS # 认证类型
auth_pass 1111# 密码
}
virtual_ipaddress {
192.168.1.100/24 # 虚拟IP地址
}
}2. 备服务器配置示例
global_defs {
router_id LVS_BACKUP
}
vrrp_instance VI_1 {
state BACKUP # 备节点
interface ens33
virtual_router_id 51
priority 90# 优先级低于主节点
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.1.100/24
}
}四、Keepalived 管理命令
1. 服务管理
# 启动服务
sudo systemctl start keepalived
# 停止服务
sudo systemctl stop keepalived
# 重启服务
sudo systemctl restart keepalived
# 重载配置
sudo systemctl reload keepalived
# 查看服务状态
sudo systemctl status keepalived
# 启用开机自启
sudo systemctl enable keepalived
# 禁用开机自启
sudo systemctl disable keepalived
2. 检查进程和日志
# 查看进程
ps aux | grep keepalived
# 查看日志
sudo journalctl -u keepalived -f# 实时查看日志
sudo tail -f /var/log/messages # CentOS 系统日志
sudo tail -f /var/log/syslog # Ubuntu 系统日志
# 检查虚拟IP是否绑定
ip addr show | grep"192.168.1.100"
五、故障排查命令
1. 网络检查
# 检查网卡信息
ip addr show
# 检查网络接口
ifconfig -a
# 测试网络连通性
ping192.168.1.100
# 查看路由表
ip route show
# 查看ARP表
arp -a
2. Keepalived 状态检查
# 查看 Keepalived 状态
sudo keepalived -v# 查看版本
sudo keepalived -D# 调试模式运行(前台)
sudokillall-USR1 keepalived # 重新打开日志文件
sudokillall-USR2 keepalived # 重新初始化VRRP
六、高级配置示例
1. 健康检查配置
vrrp_script chk_nginx {
script "/etc/keepalived/check_nginx.sh"# 检测脚本
interval 2# 检测间隔
weight 2# 权重
}
vrrp_instance VI_1 {
# ... 其他配置 ...
track_script {
chk_nginx # 调用健康检查
}
}2. 检测脚本示例(check_nginx.sh)
#!/bin/bash
if [ $(ps -ef | grep nginx | grep -v grep | wc -l)-eq0 ]; then
exit1
else
exit0
fi
七、部署流程总结
安装 Keepalived
sudo yum install keepalived -y
配置主备节点
主节点:priority 值较高(如 100)
备节点:priority 值较低(如 90)
配置虚拟 IP
virtual_ipaddress {
192.168.1.100/24
}启动服务
sudo systemctl start keepalived
sudo systemctl enable keepalived
验证配置
ip addr show # 查看虚拟IP
ping192.168.1.100 # 测试连通性
故障切换测试
停止主节点 Keepalived 服务
观察备节点是否接管虚拟IP