Linux系统下Keepalived的安装与配置全攻略
在构建高可用集群时,Keepalived是Linux系统管理员不可或缺的工具。本文将详细介绍从零开始安装配置Keepalived的全过程,包含实际案例和常见问题解决方案。
一、Keepalived简介与工作原理
Keepalived是基于VRRP协议实现的高可用解决方案,通过虚拟IP(VIP)漂移技术确保服务不间断。其核心组件包括:
- VRRP Stack - 负责主备节点状态维护
- Health Checking - 服务健康状态检测
- SMTP通知 - 故障报警机制
📌 典型应用场景:Web服务器集群、MySQL主从切换、负载均衡器热备
二、安装前准备
1. 环境要求
# 系统版本检查
cat /etc/redhat-release # CentOS/RHEL
lsb_release -a # Ubuntu/Debian
2. 依赖安装
# CentOS/RHEL
yum install -y gcc openssl-devel popt-devel ipvsadm
# Ubuntu/Debian
apt-get install -y build-essential libssl-dev libpopt-dev ipvsadm
三、Keepalived安装步骤
方法1:通过包管理器安装
# CentOS/RHEL
yum install -y keepalived
# Ubuntu/Debian
apt-get install -y keepalived
方法2:源码编译安装(推荐获取最新版本)
wget http://www.keepalived.org/software/keepalived-2.2.4.tar.gz
tar zxvf keepalived-*.tar.gz
cd keepalived-2.2.4
./configure --prefix=/usr/local/keepalived
make && make install
四、详细配置指南
1. 主节点配置示例
vim /etc/keepalived/keepalived.conf
global_defs {
router_id LVS_MASTER # 唯一标识
}
vrrp_instance VI_1 {
state MASTER # 主节点
interface eth0 # 监听的网卡
virtual_router_id 51 # 虚拟路由ID(0-255)
priority 100 # 优先级(主>备)
advert_int 1 # 检测间隔(秒)
authentication {
auth_type PASS
auth_pass 1111 # 认证密码
}
virtual_ipaddress {
192.168.1.100/24 # 虚拟IP
}
}
2. 备节点配置差异
- 修改
state BACKUP - 降低
priority 90 - 保持其他参数完全一致
五、高级配置技巧
1. 服务健康检测
vrrp_script chk_nginx {
script "/usr/bin/killall -0 nginx" # 检测nginx进程
interval 2 # 每2秒检测一次
weight -20 # 失败时优先级降低20
}
track_script {
chk_nginx # 引用检测脚本
}
2. 邮件报警配置
global_defs {
notification_email {
[email protected]
}
notification_email_from keepalived@localhost
smtp_server 127.0.0.1
smtp_connect_timeout 30
}
六、服务管理与故障排查
1. 服务控制命令
systemctl start keepalived # 启动服务
systemctl status keepalived # 查看状态
journalctl -u keepalived -f # 实时日志
2. 常见问题解决
| 问题现象 | 解决方案 |
|---|---|
| VIP不漂移 | 检查防火墙规则,确认VRRP协议(112)未被拦截 |
| 脑裂现象 | 配置unicast_specific_ip进行单播通信 |
| 服务频繁切换 | 调整advert_int和priority参数 |
七、总结与最佳实践
- 生产环境建议使用最新稳定版本(当前2.2.x)
- 重要配置变更前备份.conf文件
- 配合监控系统如Prometheus实现可视化
- 定期进行故障转移演练
通过本文的详细指导,您应该已经掌握了Keepalived的核心配置方法。实际部署时请根据具体网络环境调整参数,更多高级功能可参考官方文档。
