keepalived详细笔记

一、Keepalived 概述

  • Keepalived 是一种基于 VRRP(Virtual Router Redundancy Protocol,虚拟路由器冗余协议)协议实现的高可用解决方案,主要用于服务器的负载均衡和高可用性保障,能够在主服务器出现故障时,自动将服务切换到备用服务器上,确保业务的连续性。

  • 二、工作原理

  • VRRP 协议:一组路由器(或服务器)组成一个虚拟路由器,其中有一个主路由器(Master)和多个备份路由器(Backup)。虚拟路由器有一个虚拟 IP 地址(VIP),对外提供服务。主路由器定期发送 VRRP 通告消息,备份路由器监听这些消息**。当备份路由器在一定时间内没有收到主路由器的通告消息时,会认为主路由器发生故障,此时会根据优先级选举出一个新的主路由器,并接管虚拟 IP 地址,继续对外提供服务。**

  • Keepalived 在此基础上,不仅实现了 VRRP 的基本功能,还添加了一些自定义的健康检查机制和服务管理功能。它可以对后端的真实服务器进行健康检查,如通过 HTTP、TCP 等协议检查服务器的端口是否可达、服务是否正常响应等。如果检测到某台真实服务器出现故障,Keepalived 可以将其从负载均衡集群中剔除,待服务器恢复正常后再重新加入。
    三、安装与配置

  • 安装:在大多数 Linux 发行版中,可以使用包管理器进行安装。例如,在 CentOS 上,可以使用 yum install keepalived 命令进行安装。

  • 配置文件:Keepalived 的主要配置文件通常为 /etc/keepalived/keepalived.conf。以下是一个简单的配置示例:

    global_defs {
    router_id SERVER1 # 服务器唯一标识
    }

    定义 VRRP 实例

    vrrp_instance VI_1 {
    state MASTER # 此服务器为主服务器
    interface ens160 # 绑定的网络接口
    virtual_router_id 65 # 虚拟路由器 ID,取值范围 0 - 255,同一组需保持一致
    priority 100 # 优先级,数值越大优先级越高
    advert_int 1 # 通告间隔时间,单位为秒
    authentication {
    auth_type PASS # 认证类型为简单密码认证
    auth_pass 123456 # 认证密码,需与 Server2 保持一致
    }
    virtual_ipaddress {
    192.168.65.200/24 dev ens160 # 虚拟 IP 地址
    }
    }

    ###server2
    global_defs {
    router_id SERVER2 # 服务器唯一标识
    }

    定义 VRRP 实例

    vrrp_instance VI_1 {
    state BACKUP # 此服务器为备用服务器
    interface ens160 # 绑定的网络接口
    virtual_router_id 65 # 虚拟路由器 ID,取值范围 0 - 255,同一组需保持一致
    priority 90 # 优先级,低于 Server1
    advert_int 1 # 通告间隔时间,单位为秒
    authentication {
    auth_type PASS # 认证类型为简单密码认证
    auth_pass 123456 # 认证密码,需与 Server1 保持一致
    }
    virtual_ipaddress {
    192.168.65.200/24 dev ens160 # 虚拟 IP 地址
    }

    }

在 Keepalived 的配置文件中,以上部分通常是必填或关键必填的内容:

global_defs 部分

  • router_id:必填。用于在网络中唯一标识本服务器,通常设置为一个有意义的字符串,如服务器主机名等,不同服务器的 router_id 必须不同。

vrrp_instance 部分

  • state:必填。用于指定本服务器在该 VRRP 实例中的角色,如 MASTER 或 BACKUP,必须明确指定。
  • interface:必填。指定绑定的网络接口,如 eth0、ens33 等,需要根据实际服务器的网络接口情况准确填写,否则无法正常收发 VRRP 通告等。
  • virtual_router_id:必填。在同一个虚拟路由器组中,所有服务器的该值必须相同,用于标识虚拟路由器群组,取值范围是 0 到 255。
  • priority:必填。用于在选举主服务器时确定优先级,数值越大优先级越高,MASTER 和 BACKUP 服务器的优先级需要根据角色合理设置,不同服务器的该值通常不同。
  • advert_int:必填。主服务器发送 VRRP 通告的时间间隔,单位为秒,一般根据实际网络环境和需求设置一个合适的值,通常为 1 到 5 秒等。
  • authentication:一般必填。用于设置认证方式和认证密码,确保 VRRP 通告的安全性和合法性,同一组中的服务器认证方式和密码必须一致。
  • virtual_ipaddress:通常必填。定义虚拟 IP 地址及绑定的网络接口,这是对外提供服务的 IP 地址,客户端将通过该 IP 访问服务,需要根据实际需求准确配置。

四、常用命令

  • 启动 Keepalived 服务:systemctl start keepalived
  • 停止 Keepalived 服务:systemctl stop keepalived
  • 查看 Keepalived 服务状态:systemctl status keepalived
  • 查看 Keepalived 日志:tail -f /var/log/messages(日志路径可能因系统而异)
    五、故障排查
  • 检查配置文件:确保配置文件语法正确,没有拼写错误或逻辑错误。可以使用 keepalived -t -f /etc/keepalived/keepalived.conf 命令来检查配置文件的语法。
  • 查看日志信息:通过查看系统日志或 Keepalived 专门的日志文件,获取有关服务启动、运行和故障切换的详细信息,以确定问题所在。
  • 检查网络连接:确保服务器之间的网络连接正常,能够相互通信,特别是用于 VRRP 通告和健康检查的网络接口。
  • 验证健康检查:手动执行健康检查脚本,检查其是否能够正确检测后端服务器的健康状态。

Keepalived 的配置和使用需要根据实际的网络环境和业务需求进行调整和优化,以确保高可用性和负载均衡的效果。

相关推荐
星恒随风3 小时前
Linux Socket TCP编程(二):逐文件重构多进程、多线程与线程池服务器,深入fork、pthread_create、popen和std::bind
linux·服务器·笔记·学习·tcp/ip
晚风叙码3 小时前
Linux 进程概念(下):程序地址空间与虚拟内存
linux·服务器·算法
无足鸟ICT3 小时前
【RHCA+】影响Linux系统性能的因素
linux·运维·服务器
论文复现现场3 小时前
DeepSeek V4.1 Flash 和 V4 Pro 有什么区别?API 价格、性能与迁移建议
java·服务器·人工智能·python·大模型api·deepseek·deepseek v4.1
沫璃染墨3 小时前
从零入门计算机网络系列(十):HTTP协议进阶——从资源路径解析到状态码与请求头详解
linux·运维·服务器·网络·c++·http
小则又沐风a3 小时前
深入了解五种IO模型与非阻塞IO
linux
Sayai3 小时前
Ubuntu 开发环境搭建避坑(一):网卡 EEE 致 60% 周期性丢包,Realtek RTL8125 网络黑洞排查与修复
linux·运维·网络·ubuntu·性能优化
墨染天姬3 小时前
【linux 网络1】数据怎么进网卡到内核?
linux·运维·网络
迪康coolmu4 小时前
金融客户数据合规落地:基于迪康端点安全一体化管理系统的四道防线实践
运维·服务器·数据库·经验分享·安全·网络安全·金融
崇子嵘4 小时前
上云方案硬件部分分析
linux