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

相关推荐
沢田纲吉15 分钟前
Linux:万字博客带你学会线程!
linux·后端·操作系统
努力犯错玩AI17 分钟前
轻松部署Gemma3-27B,L20服务器+最新版vLLM高效推理
linux·后端·python
qwfys20026 分钟前
How to install cangjie on Linux mint 22.1
linux·install·cangjie·mint
搬码红绿灯30 分钟前
计算机网络——NAT
网络·计算机网络·智能路由器
源远流长jerry35 分钟前
Linux内核传输层UDP源码分析
linux·网络·网络协议·udp
西西小飞龙35 分钟前
Vim 编辑器复制文件所有内容
linux·编辑器·vim
Zfox_43 分钟前
【Linux】五种 IO 模型与非阻塞 IO
linux·运维·服务器·c++·io模型
数据知道44 分钟前
音视频处理工具 FFmpeg 指令的使用(超级详细!)
linux·运维·服务器·网络·ffmpeg·音视频
Zhouqi_Hua1 小时前
LLM论文笔记 24: A Theory for Length Generalization in Learning to Reason
论文阅读·人工智能·笔记·深度学习·语言模型·自然语言处理
吴盐煮_1 小时前
HTTPS建立连接过程
服务器·网络协议·https