Linux下如何部署Keepalived

发布时间:2022-02-18 09:40:09 作者:小新
来源:亿速云 阅读:186
# Linux下如何部署Keepalived

## 一、Keepalived概述

### 1.1 什么是Keepalived
Keepalived是一个基于VRRP协议实现的轻量级高可用解决方案,主要用于Linux平台下的服务高可用。它最初是为LVS(Linux Virtual Server)设计的,用于管理并监控LVS集群系统中各个服务节点的状态,后来加入了更多高级功能,成为通用的高可用性框架。

### 1.2 Keepalived的核心功能
1. **负载均衡**:通过与LVS集成实现四层负载均衡
2. **健康检查**:对后端服务器进行健康状态监测
3. **故障转移**:通过VRRP协议实现IP地址自动漂移
4. **服务监控**:可自定义脚本监控本地服务状态

### 1.3 Keepalived的应用场景
- Web服务器高可用集群
- 数据库主从切换
- 负载均衡器双机热备
- 关键业务服务的高可用保障

## 二、Keepalived工作原理

### 2.1 VRRP协议基础
VRRP(Virtual Router Redundancy Protocol)虚拟路由冗余协议是Keepalived实现高可用的核心:
- 将多台物理路由器组成虚拟路由器组
- 通过选举机制产生Master节点
- Master节点持有虚拟IP(VIP)并处理请求
- Backup节点实时监控Master状态

### 2.2 Keepalived架构组成
```mermaid
graph TD
    A[Keepalived Daemon] --> B[VRRP Stack]
    A --> C[Health Checkers]
    B --> D[IPVS Wrapper]
    C --> E[System Health]
    C --> F[Custom Scripts]

2.3 故障转移流程

  1. Master节点定期发送VRRP通告
  2. Backup节点超时未收到通告时触发选举
  3. 优先级最高的Backup节点接管VIP
  4. 新Master节点发送免费ARP更新MAC表

三、环境准备

3.1 系统要求

3.2 实验环境示例

节点 IP地址 角色 优先级
Node1 192.168.1.2 Master 100
Node2 192.168.1.3 Backup 90
VIP 192.168.1.100 - -

3.3 网络配置检查

# 检查网卡配置
ip addr show
# 测试节点间连通性
ping -c 4 192.168.1.3
# 检查防火墙状态
systemctl status firewalld

四、安装Keepalived

4.1 通过包管理器安装

Ubuntu/Debian

sudo apt update
sudo apt install keepalived -y

CentOS/RHEL

sudo yum install keepalived -y

4.2 源码编译安装(最新特性)

wget https://www.keepalived.org/software/keepalived-2.2.7.tar.gz
tar zxvf keepalived-*.tar.gz
cd keepalived-2.2.7
./configure --prefix=/usr/local/keepalived
make && make install

4.3 验证安装

keepalived --version
# 输出示例:
# Keepalived v2.2.7 (03/19,2023)

五、基础配置

5.1 主配置文件结构

/etc/keepalived/keepalived.conf
├── global_defs       # 全局配置
├── vrrp_instance     # VRRP实例配置
├── virtual_server    # 虚拟服务器配置(可选)
└── real_server       # 真实服务器配置(可选)

5.2 Master节点配置示例

global_defs {
    router_id LVS_MASTER  # 节点唯一标识
}

vrrp_instance VI_1 {
    state MASTER         # 初始状态
    interface ens33      # 绑定网卡
    virtual_router_id 51 # 虚拟路由ID(1-255)
    priority 100         # 选举优先级
    
    advert_int 1         # 通告间隔(秒)
    authentication {
        auth_type PASS   # 认证类型
        auth_pass 1111   # 认证密码
    }
    
    virtual_ipaddress {
        192.168.1.100/24 # 虚拟IP配置
    }
    
    track_script {
        chk_nginx        # 关联的健康检查脚本
    }
}

5.3 Backup节点配置

vrrp_instance VI_1 {
    state BACKUP        # 关键区别点
    priority 90         # 优先级低于Master
    # 其他配置与Master相同
}

六、高级配置

6.1 健康检查配置

vrrp_script chk_nginx {
    script "/usr/bin/killall -0 nginx" # 检查nginx进程是否存在
    interval 2                         # 检查间隔
    weight -20                         # 失败时优先级变化值
    fall 2                             # 连续失败次数判定为故障
    rise 1                             # 一次成功即恢复
}

6.2 邮件通知配置

global_defs {
    notification_email {
        admin@example.com
        ops@example.com
    }
    notification_email_from keepalived@localhost
    smtp_server 127.0.0.1
    smtp_connect_timeout 30
}

6.3 多VIP配置

vrrp_instance VI_2 {
    state BACKUP
    interface ens33
    virtual_router_id 52
    priority 80
    virtual_ipaddress {
        192.168.1.101/24
    }
}

七、服务管理

7.1 启动服务

systemctl start keepalived
systemctl enable keepalived

7.2 状态检查

systemctl status keepalived
# 查看VIP绑定情况
ip addr show ens33

7.3 日志分析

journalctl -u keepalived -f
# 或查看专用日志文件
tail -f /var/log/messages

八、故障排查

8.1 常见问题

  1. VIP无法正常漂移

    • 检查防火墙是否放行VRRP协议(IP协议号112)
    • 确认virtual_router_id在所有节点一致
    • 验证网络连通性
  2. 脑裂问题处理

    • 配置更高优先级的抢占模式
    • 设置nopreempt避免频繁切换
    • 使用多播检测(默认224.0.0.18)

8.2 调试命令

# 查看VRRP通信
tcpdump -i ens33 vrrp
# 手动触发故障转移
systemctl stop keepalived

九、安全加固

9.1 认证配置

authentication {
    auth_type AH        # 更安全的认证方式
    auth_pass Keep@live!d2023 # 强密码
}

9.2 权限控制

# 创建专用用户
useradd -r -s /sbin/nologin keepalived_usr
# 修改服务文件
sed -i 's/User=root/User=keepalived_usr/' /usr/lib/systemd/system/keepalived.service

十、性能优化

10.1 参数调优

vrrp_instance VI_1 {
    advert_int 3        # 适当增大通告间隔
    preempt_delay 300   # 抢占延迟(秒)
    garp_master_refresh 60 # 免费ARP刷新间隔
}

10.2 资源限制

# 修改systemd配置
[Service]
LimitNOFILE=65535
LimitMEMLOCK=infinity

十一、与其它工具集成

11.1 结合Nginx

vrrp_script chk_nginx {
    script "/etc/keepalived/check_nginx.sh"
    interval 3
}

# 检查脚本示例
#!/bin/bash
if ! pgrep -x "nginx" >/dev/null; then
    systemctl restart nginx || exit 1
fi

11.2 与Docker集成

# 在容器中运行需添加特权
docker run --cap-add=NET_ADMIN --net=host -d keepalived

十二、生产环境最佳实践

  1. 网络分离:使用独立心跳线
  2. 监控集成:对接Prometheus/Grafana
  3. 配置版本化:使用Ansible等工具管理
  4. 定期演练:模拟故障测试切换流程
  5. 文档记录:详细记录切换阈值和恢复步骤

附录A:常用命令速查

命令 说明
keepalived -n 前台运行并显示调试信息
ip -s neigh 查看ARP表信息
tcpdump -i eth0 proto 112 捕获VRRP报文

附录B:配置文件完整示例

[GitHub Gist链接示例配置]

结语

Keepalived作为Linux下成熟的高可用解决方案,通过合理配置可以构建出99.99%可用性的服务架构。实际部署时需根据业务特点调整参数,并通过充分的测试验证故障转移机制的有效性。随着技术的演进,Keepalived也在不断加入对IPv6、容器化等新特性的支持,值得持续关注其发展。 “`

注:此为精简版框架,完整9950字版本需要扩展以下内容: 1. 每个章节添加更多实践案例 2. 增加性能测试数据对比 3. 补充不同发行版的差异处理 4. 添加详细的排错流程图 5. 增加与云平台集成的特别说明 6. 补充安全审计相关内容 7. 添加版本升级指导 8. 扩展监控指标说明 9. 增加基准测试方法 10. 补充参考文档和延伸阅读

推荐阅读:
  1. 如何在Linux中安装和部署keepalived
  2. linux下如何部署kodexplorer

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

linux keepalived

上一篇:JavaScript闭包如何理解

下一篇:Linux下如何快速清空文件

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》