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

相关推荐
绵羊20239 分钟前
单细胞转录组测序上游——cellranger
linux
李子红了时2 小时前
【墨铺网教程】一台电脑加入多个局域网,让电脑做上传下载主力又当存储盘
运维·服务器·电脑
崎岖Qiu2 小时前
【设计模式笔记06】:单一职责原则
java·笔记·设计模式·单一职责原则
Black蜡笔小新2 小时前
赋能智慧货运:视频汇聚平台EasyCVR打造货运汽车安全互联网视频监控与管理方案
网络·汽车·音视频
Awkwardx3 小时前
Linux系统编程—线程同步与互斥
linux·服务器
im_AMBER3 小时前
数据结构 09 二叉树作业
数据结构·笔记·学习
赖small强4 小时前
[Linux]内核队列实现详解
linux·kfifo·请求队列·工作队列(workqueue)·等待队列·kfifo_init
鹿鸣天涯5 小时前
关于进一步做好网络安全等级保护有关工作的问题释疑-【二级以上系统重新备案】、【备案证明有效期三年】
网络·安全·web安全
周杰伦_Jay5 小时前
【网络核心协议全景解析】IP、TCP、UDP与HTTP(多表格深度对比)
网络·tcp/ip·udp
duration~5 小时前
TCP 首部格式
网络·网络协议·tcp/ip