Keepalived 入门指南

Keepalived 入门指南

Keepalived 是一个用于实现高可用性的开源软件包,主要用于构建高可用性集群,特别是对于网络服务的负载均衡和故障切换。它通过 VRRP(Virtual Router Redundancy Protocol)协议来监控主服务器的状态,并在主服务器发生故障时接管其 IP 地址,从而保证服务的连续性。本文将详细介绍 Keepalived 的核心组件、工作原理、安装配置方法以及实际应用场景。

1. Keepalived 概览

1.1 核心组件

Keepalived 主要由三个核心组件组成:

  • Core:负责检查服务器的健康状况。
  • Checkers:执行健康检查,如 TCP、HTTP、UDP 等协议的检查。
  • VRRP Stack:实现 VRRP 协议,用于主备服务器之间的故障切换。
1.1.1keepalived架构

在这里插入图片描述

用户空间核心组件:
vrrp stack:VIP消息通告
checkers:监测real server
system call:实现 vrrp 协议状态转换时调用脚本的功能
SMTP:邮件组件
IPVS wrapper:生成IPVS规则
Netlink Reflector:网络接口
WatchDog:监控进程
控制组件:提供keepalived.conf 的解析器,完成Keepalived配置
IO复用器:针对网络目的而优化的自己的线程抽象
内存管理组件:为某些通用的内存管理功能(例如分配,重新分配,发布等)提供访问权限

1.2 工作原理

Keepalived 通过 VRRP 协议在一组服务器之间选举出一个主服务器(Master)和一个或多个备份服务器(Backup)。主服务器负责处理客户端的请求,而备份服务器则处于待命状态,准备在主服务器发生故障时接管其 IP 地址并继续提供服务。

  • 选举过程:每个 Keepalived 实例都会定期发送 VRRP 广播报文,其中包含了该实例的优先级。优先级最高的实例将成为 Master。
  • 故障检测:Keepalived 通过 Core 组件持续监测服务器的健康状态,一旦发现主服务器不可用,就会触发故障切换流程。
  • 故障切换:当 Master 发生故障时,备份服务器会检测到主服务器没有发送 VRRP 报文,并根据优先级选择新的 Master,接管虚拟 IP 地址,继续提供服务。

当然keepalived也可以多主服务器并行

VRRP相关术语
虚拟路由器:Virtual Router
虚拟路由器标识:VRID(0-255),唯一标识虚拟路由器
VIP:Virtual IP
VMAC:Virutal MAC (00-00-5e-00-01-VRID)
物理路由器:
master:主设备
backup:备用设备
priority:优先级

1.3 优势

  • 高可用性:通过 VRRP 协议快速检测并响应服务器故障。
  • 负载均衡:可以配置为负载均衡器,分发流量到多个后端服务器。
  • 简单易用:配置简单,支持多种健康检查机制。
  • 扩展性强:支持多实例、多接口和多种健康检查类型。

2. 安装与配置

2.1 安装

在 CentOS/RHEL 系统上安装 Keepalived 的基本命令如下:

sudo yum install keepalived

RHEL7中可能会遇到一下bug
在 Debian/Ubuntu 系统上安装 Keepalived 的基本命令如下:
systemctl restart keepalived #新配置可能无法生效
systemctl stop keepalived;systemctl start keepalived #无法停止进程,需要 kill 停止

sudo apt-get install keepalived

2.2 配置文件

Keepalived 的主要配置文件位于 /etc/keepalived/keepalived.conf
配置文件主要包含

GLOBAL CONFIGURATION
Global definitions: 定义邮件配置,route_id,vrrp配置,多播地址等
VRRP CONFIGURATION
VRRP instance(s): 定义每个vrrp虚拟路由器
LVS CONFIGURATION
Virtual server group(s)
Virtual server(s): LVS集群的VS和RS
2.2.1 主服务器配置
global_defs {
    notification_email {
      *****@**com   #keepalived发生故障切换时发送邮件的目标邮箱
}
notification_email_from keepalived@KA1.timinglee.org #发邮件的地址
smtp_server 127.0.0.1 #邮件服务器地址
smtp_connect_timeout 30 #邮件服务器连接timeout
router_id KA1.timinglee.org #每个keepalived主机唯一标识    #重名不影响
vrrp_skip_check_adv_addr #对所有通告报文都检查,会比较消耗性能
#启用此配置后,如果收到的通告报文和上一个报文是同一个路由器,则跳过检查,默认值为全检查
vrrp_strict #严格遵循vrrp协议
#启用此项后以下状况将无法启动服务:
#1.无VIP地址
#2.配置了单播邻居
#3.在VRRP版本2中有IPv6地址
#建议不加此项配置
vrrp_garp_interval 0 #报文发送延迟,0表示不延迟
vrrp_gna_interval 0 #消息发送延迟
vrrp_mcast_group4 224.0.0.18 #指定组播IP地址范围:
}
vrrp_instance VI_1 {   #指定虚拟路由器配置名称
    state MASTER    #指定主从
    interface eth0    #绑定为当前虚拟路由器使用的物理接口
    virtual_router_id 51   #虚拟路由器的唯一标识,取值为0-255。同属一个虚拟路由器的多个keepalived节点标识必须相同,该值在同一网络中必须唯一。
    priority 100   #优先级,越大越优先
    advert_int 1  #vrrp通告时间间隔
    authentication {   #认证机制
        auth_type PASS  #pass为简单密码认证
        auth_pass 1111   #预共享密钥
    }
    virtual_ipaddress {    #虚拟IP
        172.25.254.100
    }
}
2.2.2 备份服务器配置
global_defs {   # 设置路由器 ID
    router_id LVS_BACKUP
}
...省略...
vrrp_instance VI_1 {
    state BACKUP
    interface eth0
    virtual_router_id 51
    priority 80
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        172.25.254.100
    }
}
  • global_defs:定义全局配置,如路由器 ID。
  • state MASTER/BACKUP:定义服务器的角色。
  • interface:指定用于 VRRP 通信的网络接口。
  • virtual_router_id:定义 VRRP 实例的 ID。
  • priority:定义服务器的优先级,数值越大优先级越高。
  • advert_int:定义 VRRP 广播间隔时间(秒)。
  • authentication:定义认证方式和密码。
  • virtual_ipaddress:定义虚拟 IP 地址。

2.3 启动与验证

启动 Keepalived 服务:

sudo systemctl start keepalived
sudo systemctl enable keepalived

验证虚拟 IP 地址是否已正确分配:

ip addr show

ifconfig

测试

# tcpdump -i eth0 -nn host 224.0.0.18  #224.0.0.18是之前设置的组播地址


在这里插入图片描述
在这里插入图片描述

3.实现独立子配置文件

keepalived支持读取独立的子配置文件,避免多个虚拟路由配置污染主配置文件内容。
当生产环境复杂时,将不同的集群的vip配置放置于独立的子配置文件中可以有效提升效率。

include /path/file

示例:
在这里插入图片描述
在/etc/keepalived/conf.d/172.25.254.100.conf中配置子配置文件内容
在这里插入图片描述

如此就完成了keepalived的基础入门,并且熟悉了keepalived的基础配置格式,接下来就能够进行高级的实例了

keepalived高级示例:https://blog.csdn.net/Autter_A3/article/details/141176610?spm=1001.2014.3001.5502

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值