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

Keepalived及相关项目

1.Keepalived

1.1 keepalived是什么

keepalived是集群管理中保证集群高可用的一个服务软件,用来防止单点故障。实现服务的高可用,在物理机上使用,云上用的是slb

1.2 keepalived工作原理

    keepalived是以VRRP协议为实现基础的,VRRP全称Virtual Router Redundancy Protocol,即虚拟路由冗余协议。

    虚拟路由冗余协议,可以认为是实现路由器高可用的协议。也就是说N台提供相同功能的路由器组成一个路由器组,这个组里面有一个master和多个backup,master上面有一个对外提供服务的vip,master不断向backup发送心跳信息,告诉backup自己还活着,当backup收不到心跳消息时就认为master已经宕机啦,这时就需要根据VRRP的优先级来选举一个backup当master。这时VIP漂移,从而保证高可用。

1.3 脑裂

Keepalived的BACKUP主机在收到不MASTER主机报文后就会切换成为master,如果是它们之间的通信线路出现问题,无法接收到彼此的组播通知,但是两个节点实际都处于正常工作状态,这时两个节点均为master强行绑定虚拟IP,导致不可预料的后果,这就是脑裂。
解决方式:
1、添加更多的检测手段,比如ping对方等等。尽量减少"裂脑"发生机会。(指标不治本,只是提高了检测到的概率);
2、爆头,将master停掉。然后检查机器之间的防火墙。网络之间的通信

脑裂 当backup收不到心跳消息时就认为master已经宕机啦,但是master不认为自己挂了:网络,配置文件

keepalived主要有三个模块,分别是core、check和vrrp。core模块为keepalived的核心,负责主进程的启动、维护以及全局配置文件的加载和解析。check负责健康检查,包括常见的各种检查方式。vrrp模块是来实现VRRP协议的。

2.Nginx+keepalived实现七层的负载均衡(同类服务)

Nginx通过Upstream模块实现七层负载均衡

Nginx通过stream模块实现四层负载均衡

2.1 upstream 支持的负载均衡算法

轮询(默认):可以通过weight指定轮询的权重,权重越大,被调度的次数越多
ip_hash:可以实现会话保持,将同一客户的IP调度到同一样后端服务器,可以解决session的问题,不能使用weight
fair:可以根据请求页面的大小和加载时间长短进行调度,使用第三方的upstream_fair模块
url_hash:按请求的url的hash进行调度,从而使每个url定向到同一服务器,使用第三方的url_hash模块

2.2 nginx负载均衡配置状态参数

down,表示当前的server暂时不参与负载均衡。
backup,预留的备份机器。当其他所有的非backup机器出现故障或者忙的时候,才会请求backup机器,因此这台机器的压力最轻。
max_fails,允许请求失败的次数,默认为1。当超过最大次数时,返回 proxy_next_upstream 模块定义的错误。
fail_timeout,在经历了max_fails次失败后,暂停服务的时间。max_fails 可以和 fail_timeout一起使用。

2.3 配置

http://www.xdnf.cn/news/655147.html

相关文章:

  • 文档工具解析:前端如何选择最适合的文档生成器?
  • PHPStorm运行Thinkphp8.0项目
  • xhr、fetch和axios
  • 无人机降落伞设计要点难点及原理!
  • 基于 uni-app + <movable-view>拖拽实现的标签排序-适用于微信小程序、H5等多端
  • ESP32 LVGL btn事件、label赋值、ddlist选项读取
  • NGINX 用户标识模块 (ngx_http_userid_module) 完整配置与最佳实践指南
  • 知识宇宙-职业篇:嵌入式工程师
  • Pycatia基础代码解析——零件设计篇(一)
  • ATT衰减器(Attenuator)介绍
  • 华为OD机试真题——洞穴探险(2025A卷:200分)Java/python/JavaScript/C/C++/GO最佳实现
  • BGP配置命令详细框架
  • 营销推广需要解决哪些问题?
  • IP SSL证书:为IP地址提供安全加密的专业解决方案
  • 【论文解读】STaR:不用人类思维链指导,模型可以自我进化!
  • Go Web框架选型与实践:基于Gin的REST API开发指南
  • 【R语言科研绘图-最小二乘法】
  • 【混合动力能量管理新突破:负载识别优化策略深度解析与仿真实战】
  • [yolov11改进系列]基于yolov11引入级联群体注意力机制CGAttention的python源码+训练源码
  • 鸿蒙OSUniApp 实现带有滑动删除的列表#三方框架 #Uniapp
  • 基于GitHub Actions+SSH+PM2的Node.js自动化部署全流程指南
  • Nacos集群
  • 【向量数据库选型实战】FAISS vs Chroma vs Milvus vs Qdrant 全面对比
  • 【QT】QString和QStringList去掉空格的方法总结
  • day38python打卡
  • 构建版本没mac上传APP方法
  • 华为OD机试真题——猴子吃桃/爱吃蟠桃的孙悟空(2025B卷:200分)Java/python/JavaScript/C++/C语言/GO六种最佳实现
  • 【C++篇】list模拟实现
  • Qt qml Network error问题
  • 「读书报告」内网安全攻防