当前位置: 首页 > news >正文

keepalived简介

Keepalived 是一个用 C 语言编写的开源软件,主要用于实现高可用性(High Availability)和负载均衡。它基于 VRRP (Virtual Router Redundancy Protocol) 协议,能够确保在服务器故障时自动切换到备份服务器,从而保证服务的连续性。

核心功能

高可用性(HA)

通过 VRRP 协议实现主备服务器切换

自动检测服务器故障并执行故障转移

支持多备份节点

负载均衡

基于 Linux 虚拟服务器(LVS)实现负载均衡

支持多种调度算法(轮询、加权轮询、最少连接等)

健康检查

支持对后端服务器进行健康状态检测

可自定义检查脚本

工作原理

Keepalived 通过 VRRP 协议在多个服务器之间共享一个虚拟 IP 地址(VIP)。正常情况下,主服务器持有 VIP 并对外提供服务,备份服务器处于待命状态。主服务器会定期向备份服务器发送 VRRP 通告报文,如果备份服务器在一定时间内没有收到通告,就会接管 VIP 并成为新的主服务器

主要组件

VRRP Stack - 处理 VRRP 协议的实现

Checkers - 负责健康检查

SMTP - 提供邮件通知功能

IPVS wrapper - 与 LVS 集成实现负载均衡

System call - 执行系统命令和脚本

实现独立子配置文件

当生产环境复杂时, /etc/keepalived/keepalived.conf 文件中内容过多,不易管理 将不同集群的配置,比如:不同集群的VIP配置放在独立的子配置文件中利用include 指令可以实现包含 子配置文件。

示例:mkdir /etc/keepalived/conf.d

vim /etc/keepalived/keepalived.conf

include /etc/keepalived/conf.d/*.conf #相关子配置文件

vim /etc/keepalived/conf.d/router.conf

vrrp_instance VI_1 { state MASTER interface eth0 virtual_router_id 20 priority 100 advert_int 1 authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { 172.25.254.100/24 dev eth0 label eth0:0 } }

日志分离

示例:

vim /etc/sysconfig/keepalived

KEEPALIVED_OPTIONS="-D -S 6"

vim /etc/rsyslog.conf

local6.*                                               /var/log/keepalived.log

systemctl restart keepalived.service rsyslog.service

Keepalived 企业应用示例

实现master/slave的 Keepalived 单主架构

MASTER配置

vim /etc/keepalived/keepalived.conf

vrrp_instance VI_1 { state MASTER interface eth0 virtual_router_id 20 priority 100 advert_int 1 authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { 172.25.254.100/24 dev eth0 label eth0:0 } }

BACKUP配置

vrrp_instance VI_1 { state BACKUP interface eth0 virtual_router_id 20 priority 80 #相同id管理同一个虚拟路由 #低优先级 advert_int 1 authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { 172.25.254.100/24 dev eth0 label eth0:0 } }

抓包观察

tcpdump -i eth0 -nn host 224.0.0.18

抢占模式和非抢占模式

默认为抢占模式preempt,即当高优先级的主机恢复在线后,会抢占低先级的主机的master角色, 这样会使vip在KA主机中来回漂移,造成网络抖动, 建议设置为非抢占模式 nopreempt ,即高优先级主机恢复后,并不会抢占低优先级主机的master角色 非抢占模块下,如果原主机down机, VIP迁移至的新主机, 后续也发生down时,仍会将VIP迁移回原主机

注意:要关闭 VIP抢占,必须将各 keepalived 服务器state配置为BACKUP

设置优先级不一样,但state都是 backup的

再添加一个nopreempt参数

抢占延迟模式

抢占延迟模式,即优先级高的主机恢复后,不会立即抢回VIP,而是延迟一段时间(默认300s)再抢回 VIP

preempt_delay #     #指定抢占延迟时间为#s,默认延迟300s

注意:需要各keepalived服务器state为BACKUP,并且不要启用 vrrp_strict

priority 100 #优先级高 preempt_delay 300s  #抢占延迟时间

VIP单播配置

默认keepalived主机之间利用多播相互通告消息,会造成网络拥塞,可以替换成单播,减少网络流量

注意:启用 vrrp_strict 时,不能启用单播

配置:

#在所有节点vrrp_instance语句块中设置对方主机的IP,建议设置为专用于对应心跳线网络的地址,而非使 用业务网络

unicast_src_ip  #指定发送单播的源IP unicast_peer {     #指定接收单播的对方目标主机IP ...... }

#vrrp_strict #注释此参数,与vip单播模式冲突

实现 master/master 的 Keepalived 双主架构

master/slave的单主架构,同一时间只有一个Keepalived对外提供服务,此主机繁忙,而另一台主机却 很空闲,利用率低下,可以使用master/master的双主架构,解决此问题。 master/master 的双主架构: 即将两个或以上VIP分别运行在不同的keepalived服务器,以实现服务器并行提供web访问的目的,提高 服务器资源利用率

配置

vrrp_instance VI_1 { state BACKUP #备 interface ens33 virtual_router_id 50 priority 80 advert_int 1 authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { 172.25.254.50 dev ens33 label ens33:0 } } vrrp_instance VI_60 { state MASTER } #主 interface ens33 virtual_router_id 60 priority 100 advert_int 1 authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { 172.25.254.60 dev eth0 label eth0:1

http://www.lryc.cn/news/626606.html

相关文章:

  • 阿里通义千问Qwen-Long 快速文档解析
  • 商城系统开发全解析:架构设计、功能模块与技术选型指南
  • Tumblr长文运营:亚矩阵云手机助力多账号轮询与关键词布局系统
  • AI一周事件(2025年8月13日-8月19日)
  • 手机 浏览器调用摄像头扫描二维码Quagga
  • 如何将数据从 iPhone 转移到 vivo?
  • 23种设计模式——构建器模式(Builder Pattern)详解
  • Jenkins服务器配置SSH
  • 【Ansible】变量、机密、事实
  • 云计算学习100天-第25天
  • ansible中roles角色是什么意思?
  • 苹果XR芯片介绍
  • 【JavaEE】多线程 -- 定时器
  • GO环境变量中GO111MODULE到底是干啥的?
  • 心路历程-了解网络相关知识
  • 【论文阅读】Multi-metrics adaptively identifies backdoors in Federated Learning
  • Azure 使用记录
  • mapbox高阶,结合threejs(threebox)添加建筑glb模型,添加阴影效果,设置阴影颜色和透明度
  • 通过try-catch判断数据库唯一键字段是否重复
  • linux的内核符号表
  • 【表的操作】
  • 深入理解 Linux 多线程
  • mysql-8.0.37-linux-glibc2.12-x86_64安装
  • 可实现三重空间感知:Ai2 开源具身机器人 AI 模型 MolmoAct
  • 从防抖节流到链表树:编程世界中的抽象优化艺术
  • 23种设计模式——模板方法模式(Template Method Pattern)详解
  • 在一台没联网的机器上,用ollama加载qwen3,14b
  • 遥感机器学习入门实战教程|Sklearn 案例④ :多分类器对比(SVM / RF / kNN / Logistic...)
  • 使用 GraalVM Native Image 将 Spring Boot 应用编译为跨平台原生镜像:完整指南
  • Spring Boot 配置