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

keepalived的工作原理和脑裂

一、Keepalived工作原理

  1. keepalived是一个用于实现高可用和负载均衡的服务,主要基于虚拟路由协议,解决了nginx一台机器的单点故障问题。
  2. 通过将两台nginx都配置keepalived,让两天nginx互为主机和备机;且keepalived通过 VRRP 协议和健康检查机制来实现 nginx 的主备互换。
  3. keepalived 会为 nginx 分配一个虚拟 IP,客户端通过该虚拟IP地址 访问 nginx 服务。当主机故障时,keepalived 会将虚拟ip地址漂移到备机上,客户端无需修改配置即可继续访问服务
  4. 两台nginx中优先级高(权重数字越大,优先级越高)的为主机,主机上会有承载域名的虚拟ip地址,负责对外提供服务,备机则一直监测主机心跳线,随时待命。
  5. keepalived 会定期检查 nginx 的健康状态,(检查 nginx 进程是否运行;检查 nginx 的监听端口是否可用),如果检查到主机nginx挂了,且在一定时间内没有再次启用,keepalived 会认为主机不可用,并触发故障转移。
  6. 当主机故障时,keepalived 会停止向主机发送 VRRP 通告。备机在超时时间内没有收到主机的心跳线起跳时,会知道主机故障了,这时,备机会马上接替成为新的主机并绑定虚拟 IP地址。备机直接接管 nginx 服务,客户端流量被引导到成为新的主机的备机上。
  7. 当原主机恢复后会先判断谁的优先级高,如果原主机优先级高,则虚拟IP会再漂移到原主机上,如果原备机(新主机)优先级高,则虚拟IP会留着原备机上,不会产生漂移。
  8. 二、什么是脑裂

  9. (1)脑裂是指

  10. 在keepalived监测多台nginx服务器时,发生多个nginx服务器同时认为自己是主机,并同时持有虚拟 IP,从而引发服务冲突和数据不一致的问题。脑裂会严重影响系统的可用性和数据完整性。

  11. (2)产生脑裂的原因:

  • 网络分区:主机和备机之间的网络连接中断,导致它们无法互相通信(备机监测不到主机心跳线)。
  • VRRP通关丢失:由于网络拥塞、配置错误或硬件故障,VRRP 通告未能及时到达备机,此时备机就会认为主机挂了,将自己提升为主机。
  • 优先级配置错误:如果在keepalived配置文件中多个nginx服务器的优先级配置相同,可能会导致这些nginx服务器同时认为自己是主机。
  • 系统资源不足:可能由于主机硬件资源不足,无法及时处理 VRRP 通告,导致通信超时,这时,备机会认为主机坏了,然后提升自己为主机。
  • (3)脑裂的影响

  • VIP 冲突:多个nginx服务同时绑定相同的虚拟 IP,导致同一个网关内的IP地址冲突,客户端无法正常访问服务。
  • 数据不一致:多个nginx服务器同时处理写操作,可能导致数据不一致或损坏、资源浪费。
  • 服务中断:客户端可能会被分配到不同的nginx服务器上,导致请求中断或服务不可用。
  • (4)日常如何检查防止脑裂

  • 日志检查:查看 Keepalived 的日志(通常位于 /var/log/messages 或 /var/log/syslog),查是否有多个nginx同时声明自己是主机。
  • 网络检查:使用ping检查主机和备机之间的网络连通性。
  • 虚拟ip检查:使用ip a或ifconfig 检查是否有多个nginx服务器同时绑定了相同的相同的虚拟ip。(5)如何防止脑裂

  • 在配置优先级时,确保主机和备机的优先级不同,且主机的优先级要高于备机的优先级。
  • 使用非抢占模式,在主机和备机上配置 nopreempt,防止原主机恢复后出现抢占虚拟IP的情况
  • 配置多播方式或者单播方式,确保 VRRP 通告能够正常传输。如果多播不可靠,可以配置单播模式
  • 增加健康检查,使用 keepalived 的健康检查功能,确保只有健康的ningx服务器才能成为主机。
  • 使用冗余网络,使用多条心跳线来避免单点故障问题。
  • 配置相应的仲裁机制,引入第三方仲裁机制(比如,外部脚本),在脑裂发生时决定那个ningx提升为主机,并应继续提供服务。

相关文章:

  • JWT令牌封装类/ 接口的各个请求
  • 黑马跟学.苍穹外卖.Day08
  • 【资料分享】全志科技T113-i全国产(1.2GHz双核A7 RISC-V)工业核心板规格书
  • tf1.x和tf2.x在使用上的区别和联系是什么
  • AI 原生 IDE Trae 深度体验:SSHremote 功能助力远程开发与云原生部署
  • 基于web的牙医预约管理系统(源码+lw+部署文档+讲解),源码可白嫖!
  • k8s资源管理介绍
  • 【C++指南】内存管理完全手册:new/delete
  • 修改windows npt时钟服务器
  • 工业 CPE(Customer Premises Equipment,客户终端设备)
  • 深度学习定义与分类【详细易懂 初学者友好~】
  • pgvector 向量数据库的安装方式全集
  • 【FPGA】状态机模板-分别对比一段式状态机、二段式状态机以及三段式状态机
  • 操作系统知识点32
  • MySQL事务详解:从理论到实践,保障数据一致性
  • 分区表和分表
  • 不可不知的分布式数据库-TiDB
  • TypeScript中的类型断言(type assertion),如何使用类型断言进行类型转换?
  • Kubernetes的Service详解
  • 【动态规划】--- 路径问题
  • 淘宝网站是谁做的好处/百度搜索引擎排名
  • 最近军事新闻热点大事件/高手优化网站
  • app开发语言/seo技巧seo排名优化
  • wordpress改cms/网站seo标题优化技巧
  • 高端的响应式网站建设公司/爱战网关键词工具
  • 巨野做网站的/seo平台优化服务