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

Keepalive高可用集群的实验项目

1 keepalived 简介

vrrp 协议的软件实现,原生设计目的为了高可用 ipvs服务

官网:http://keepalived.org/

功能:

1.基于vrrp协议完成地址流动

2.为vip地址所在的节点生成ipvs规则(在配置文件中预先定义)

3.为ipvs集群的各RS做健康状态检测

4.基于脚本调用接口完成脚本中定义的功能,进而影响集群事务,以此支持nginxhaproxy等服务

1.核心架构组件

  1. 控制平面

    • VRRP Stack:实现VRRP协议(虚拟路由冗余协议)的核心组件
    • Checkers:健康检查模块,监控后端服务状态
    • SMTP通知:状态变更时的邮件通知机制
  2. 数据平面

    • IPVS (IP Virtual Server):Linux内核的L4负载均衡器
    • Netlink接口:与内核通信,管理VIP和路由

2.核心配置文件

2.1 配置文件组成部分

配置文件:/etc/keepalived/keepalived.conf

配置文件组成

  • GLOBAL CONFIGURATION
    Global definitions:  定义邮件配置,route_idvrrp配置,多播地址等
  • VRRP CONFIGURATION
    VRRP instance(s) 定义每个vrrp虚拟路由器
  • LVS CONFIGURATION

    Virtual server group(s)
    Virtual server(s):    LVS集群的VSRS

2.2全局配置
! Configuration File for keepalived
global_defs {
notification_email {
timiniglee-zln@163.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 1 #免费 ARPGratuitous ARP)报文时间
间隔
#免费 ARP用于通知网络中其他设备,某 IP地址对应的 MAC 地址发生了变化
#帮助网络设备更新 ARP 缓存,确保数据能正确转发到新的主节点
vrrp_gna_interval 1 #用于配置发送 Gratuitous NA(免费邻居通告)报文的时间间隔
#通知网络中其他设备,某 IPv6 地址对应的链路层地址(MAC 地址)发生了变化
#帮助网络设备更新邻居缓存(NeighborCache)
#确保 IPv6 数据包能正确转发到新的主节点
vrrp_mcast_group4 224.0.0.44 #指定组播IP地址范围:
}
2.3配置虚拟路由器
vrrp_instance VI_1 {
state MASTER
interface eth0 #绑定为当前虚拟路由器使用的物理接口,如:eth0,可以和VIP不在一个网卡
virtual_router_id 51 #每个虚拟路由器惟一标识,范围:0-255,每个虚拟路由器此值必须唯一
#否则服务无法启动
#同属一个虚拟路由器的多个keepalived节点必须相同
#务必要确认在同一网络中此值必须唯一
priority 100 #当前物理节点在此虚拟路由器的优先级,范围:1-254
#值越大优先级越高,每个keepalived主机节点此值不同
advert_int 1 #vrrp通告的时间间隔,默认1s
authentication { #认证机制
auth_type AH|PASS #AHIPSEC认证(不推荐),PASS为简单密码(建议使用)
uth_pass 1111 #预共享密钥,仅前8位有效
#同一个虚拟路由器的多个keepalived节点必须一样
}
virtual_ipaddress { #虚拟IP,生产环境可能指定上百个IP地址
<IPADDR>/<MASK> brd <IPADDR> dev <STRING> scope <SCOPE> label <LABEL>
172.25.254.100 #指定VIP,不指定网卡,默认为eth0,注意:不指定/prefix,默认32
172.25.254.101/24 dev eth1
172.25.254.102/24 dev eth2 label eth2:1
}
accept #开启vip 对外响应ping包,注意此处功能需要关闭vrrp_strict
#默认使用nftab策略禁用ping包响应,nft list ruleset 显示策略中即可看到
}
2.4启用keepalived日志功能

2.5 启用子配置文件 

在全局配置下添加include语句,指定子配置文件路径

3 实现master/slave Keepalived 单主架构

3.1配置主从机器的虚拟路由设置

主机配置

从机配置

配置后端两台服务配置,主从keepalive配置是一样的

 

配置完成后效果

当MASTER主机宕机时,BACKUP机会抢占VIP晋升为MASTER机不会中断服务。当设置成非抢占模式时,两台都必须为BACKUP机。 

4.VIP单播设置 

将keepalived中的组播设置注释,添加单播配置。

测试单薄是否连通

5.实现 master/master Keepalived 双主架构

master/slave的单主架构,同一时间只有一个Keepalived对外提供服务,此主机繁忙,而另一台主机却 很空闲,利用率低下,可以使用master/master的双主架构,解决此问题。

master/master 的双主架构: 即将两个或以上VIP分别运行在不同的keepalived服务器,以实现服务器并行提供web访问的目的,提高 服务器资源利用率

另一台的配置

实现了master/master配置,提高了资源利用率 

 6.配置虚拟服务(并完善双主配置)

6.1 后端web服务

配置MASTER服务,BACKUP配置与其一模一样。

因为我们负载均衡模式用的是直连路由模式,我们要将两台realserver的arp禁用

 

给两台后端server添加上vip

查看keepalived MASTER的ipvsadm配置

 

测试http服务的可用性。         

6.2 双主机数据库服务 

keepalived相关配置,主从机配置都一样。重启服务。

配置完成后查看轮询规则

务器,开启mariadb服务,并修改对应的id来区别访问的不同后端。 

给后端服务添加上对应的vip

测试服务时候部署成功

7. 实现其它应用的高可用性 VRRP Script 

keepalived利用 VRRP Script 技术,可以调用外部的辅助脚本进行资源监控,并根据监控的结果实现优先动态调整,从而实现其它应用的高可用性功能

 7.1 编写vrrp脚本

编写相关脚本,使当haproxy服务在运行时,keepalived1为主机,当服务关闭时,实现主机从keepalived1变到keepalived2

脚本内容

脚本作用:当haproxy运行时运行脚本状态为0 ,当服务关闭时运行脚本状态为1

 7.2编辑keepalive设置

7.3测试结果

 抢占vip

当MASTER机的haproxy服务坏掉时,会自动减少优先级,将MASTER机临时变为另一台保证服务的可用性 

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

相关文章:

  • 【Java系统接口幂等性解决实操】
  • DeepSeek实战--无头浏览器抓取技术
  • Java常用日志框架介绍
  • 五度标调法调域统计分析工具
  • 设计模式(五)创建型:原型模式详解
  • [spring6: Mvc-异步请求]-源码分析
  • 设计模式(三)创建型:抽象工厂模式详解
  • 微服务架构面试题
  • Flutter开发实战之测试驱动开发
  • linux根据pid获取服务目录
  • Gradio.NET 中文快速入门与用法说明
  • IIS发布.NET9 API 常见报错汇总
  • 从 .NET Framework 到 .NET 8:跨平台融合史诗与生态演进全景
  • 9-大语言模型—Transformer 核心:多头注意力的 10 步拆解与可视化理解
  • 电商项目_核心业务_数据归档
  • Java枚举类enum;记录类Record;密封类Sealed、permits
  • Java面试宝典:MySQL执行原理一
  • 300.最长递增子序列,674. 最长连续递增序列,
  • Ubuntu服务器安装与运维手册——操作纯享版
  • 负载均衡Haproxy
  • [AI8051U入门第十一步]W5500-服务端
  • 嵌入式学习日志————对射式红外传感器计次
  • 【MySQL篇】:MySQL基础了解以及库和表的相关操作
  • DP之背包基础
  • SignalR 全解析:核心原理、适用场景与 Vue + .NET Core 实战
  • ASP.NET Core 高并发万字攻防战:架构设计、性能优化与生产实践
  • 一个MySQL的数据表最多能够存多少的数据?
  • 迷宫生成与路径搜索(A算法可视化)
  • 调用通义千问大模型实现流式对话
  • 用 Python 轻松实现时间序列预测:Darts N-BEATS