LVS+Keepalived群集

文章目录

  • 前言
  • 一、LVS+Keepalived群集(高可用)
    • [1.1 LVS+Keepalived的概念](#1.1 LVS+Keepalived的概念)
    • [1.2 VRRP 工作原理](#1.2 VRRP 工作原理)
    • [1.3 抢占与非抢占](#1.3 抢占与非抢占)
    • [1.3.1 抢占模式](#1.3.1 抢占模式)
    • [1.3.2 非抢占模式](#1.3.2 非抢占模式)
  • 二、脑裂问题
    • [2.1 脑裂形成的原因及概念](#2.1 脑裂形成的原因及概念)
    • [2.2 解决脑裂的方法](#2.2 解决脑裂的方法)
  • 三、实战演练
  • [3.1 配置前提](#3.1 配置前提)
    • [3.2 关闭防火墙与网络增强服务](#3.2 关闭防火墙与网络增强服务)
    • [3.3 下载keepalived服务并检查内核模块](#3.3 下载keepalived服务并检查内核模块)
    • [3.4 配置keepalived](#3.4 配置keepalived)
    • [3.5 创建网卡并配置](#3.5 创建网卡并配置)
    • [3.6 开启keepalived服务,并开启网卡](#3.6 开启keepalived服务,并开启网卡)
    • [3.7 创建LVS](#3.7 创建LVS)
    • [3.8 模拟主调度器故障](#3.8 模拟主调度器故障)
  • 总结

前言

在上期博客我们讲述了集群的分类以及集群中负载均衡集群的一种模式------------LVS DR,这期博客本文将详细讲解集群中高可用集群的原理以及实战操作。

一、LVS+Keepalived群集(高可用)

1.1 LVS+Keepalived的概念

Keepalived 是一款基于 VRRP(虚拟路由冗余协议) 实现的开源高可用(HA)软件,核心作用是为服务器集群提供 故障自动切换(Failover) 和 负载均衡辅助,确保服务持续可用(避免单点故障)。它广泛应用于 Web 服务、数据库、负载均衡器(如 Nginx、HAProxy)等场景,是企业级高可用架构的核心组件之一。

具体功能详解

1、LVS集群管理

2、健康检查:简单来说,在用户发送请求时,Keepalived会对对应的节点服务器进行健康检查,若是检测到节点服务器出现故障,keepalived会将出现故障的服务器清除,并将用户的请求重新分配到其他的节点服务器上,这种功能可以有效的减少因服务器故障而产生的请求未响应。

3、调度器切换:我们都知道用户在发送请求后,路由器会将请求发送给调度器,然后让调度器进行节点服务器的分配,如果是LVS DR的工作模式,那么整个服务就非常依赖于调度器的发挥,调度器如果故障将会停止响应,可LVS+Keepalived的工作模式可以有效的解决这个问题,它由两类调度器组成,一类是主调度器,一类是备用调度器,主调度器主要负责请求分配,备用调度器负责实时监控主调度器,一旦主调度器故障,备用调度器将会顶上去工作。

1.2 VRRP 工作原理

客户端通过VIP向路由器发出请求,路由器接受到请求后,以广播的形式找寻VIP,因为节点服务器被禁锢,因此只有调度器可以接受到广播并做出响应,并且只有主调度器可以接收,在接收与分配过程中,只有主调度器会起到实质性的作用,而备用调度器负责以ping的方式实时监控主调度器的故障情况,一旦发现ping(检测网络)不通

,备用调度器将会继承主调度的工作,vip会迁移至备用调度器上,主调度器进行维修,从而使请求与响应的过程不会中断,之后节点服务器会将自己的ip地址与mac地址打包发送给路由器,再从路由器发送给客户。

1.3 抢占与非抢占

前文提及到,如果主调度器故障,备用调度器会接替主调度器的工作,主调度器进行维修,那么当主调度器修好之后又该谁来进行响应请求并分配节点服务器呢?这就不得不提到LVS+Keepalived中vip迁移的两种模式:抢占模式、非抢占模式

1.3.1 抢占模式

主节点故障恢复后,会主动抢占 VIP 控制权,将备节点的 VIP 释放,自己重新成为主节点(VIP 漂移回原主节点)。

(这是 Keepalived 的 默认模式)

1.3.2 非抢占模式

主节点故障恢复后,不会主动抢占 VIP,VIP 会一直保留在当前提供服务的备节点(已升级为 "临时主节点")上,原主节点恢复后仅作为新的备节点存在(VIP 不漂移回原主节点)。

核心逻辑:一旦 VIP 漂移到备节点,除非备节点故障,否则原主节点不会夺回控制权。

配置要求:

1、主备节点配置 相同的优先级(消除优先级差异,避免高优先级抢占);

2、所有节点开启 nopreempt 参数(明确禁用抢占功能);

3、仅初始主节点声明 state MASTER,备节点声明 state BACKUP(初始启动时由 MASTER 节点优先绑定 VIP)。

二、脑裂问题

2.1 脑裂形成的原因及概念

概念:主调度器与备用调度器互相无法ping通,双方都认为对方出现故障,导致接收广播信号与分配出现混乱。

(主调度器与备用调度器中间通过一条心跳链连接)

原因:

1、网卡出现故障,因为主调度器与备用调度器用同一网卡,因此网卡故障,会导致双方ping不通网。

2、在接收或分配时防火墙被开启

3、主调度器与备用调度器中间的心跳链出现故障,使得双方成为了两个单独的个体。

4、在keepalived配置中,主与备用的优先级相同,导致两者都是主或备。

(还有很多问题,读者可以发挥聪明的大脑自行思考😁)

2.2 解决脑裂的方法

根据以上几个脑裂形成的原因,本文给出了几条针对性的策略:

1、可以多创建一条心跳链,使主调度器与备用调度器不那么容易分割。

2、找到一个可供参考的IP(比如网关)让主调度器与备用调度器同时ping一下参考ip,如果可以ping通,通过脚本的形式发送成功日志给到网关,通过查看日志就可以看出调度器是否故障,之后命令能ping通参考ip的调度器进行主调度器的工作。

三、实战演练

3.1 配置前提

主调度器:10.0.0.5

备用调度器:10.0.0.2

节点服务器1:10.0.0.100

节点服务器2:10.0.0.3

VIP:10.0.0.180

(配置好nginx或httpd服务)

3.2 关闭防火墙与网络增强服务

第一步 关闭防火墙与网络增强服务(这里就不一一展示了)

systemctl disable firewalld --now ------------------永久关闭防火墙(建议)

setenforce 0 ------------------------临时关闭网络增强服务

getenforce ------------------------查询网络增强服务的状态

vi /etc/selinux/config ------------------------编辑配置文件(永久关闭网络增强服务,建议)

3.3 下载keepalived服务并检查内核模块

yum install -y ipvsadm keepalived ------------------------下载keepalived服务

(这里已经配置完成了)

cat /proc/net/ip_vs ------------------------------检测内核模块

3.4 配置keepalived

vi /etc/keepalived/keepalived.conf ------------------配置文件位置

3.5 创建网卡并配置

cp /etc/sysconfig/network-scripts/ifcfg-ens33 /etc/sysconfig/network-scripts/ifcfg-ens33:0 ------------------------------------创建一个与ens33配置一样的网卡

vim /etc/sysconfig/network-scripts/ifcfg-en33:0 ------------------------配置新创建的网卡

DEVICE=ens33:0 ------------------------------------网卡名字

ONBOOT=yes ------------------------------允许网卡开启

IPADDR=10.0.0.180 ------------------------------网卡的ip(VIP)

NETMASK=255.255.255.255 ------------------------子网掩码

3.6 开启keepalived服务,并开启网卡

systemctl start keepalived ------------------------开启keepalived服务

systemctl restart network ------------------------重启网卡

ifup 网卡名字 ------------------------------开启网卡

3.7 创建LVS

ipvsadm-save > /etc/sysconfig/ipvsadm ------------------------保存LVS配置

systemctl start ipvsadm ------------------------------重启ipvsadm服务

ipvsadm -ln ------------------------------查看连接信息

3.8 模拟主调度器故障

第一步 关闭主调度器的keepalived服务:systemctl stop keepalived

第二步 检查vip是否在主调度器上:ip a

第三步 检查vip是否在备用调度器上

第四步 恢复主调度器

VIP回到主调度器上

总结

本文讲述了lvs+keepalived的核心原理、脑裂概念及解决方法以及lvs+keepalived的实战测试操作,希望本文内容能对您有所帮助,谢谢观看😁

相关推荐
han_39 分钟前
前端高频面试题之CSS篇(二)
前端·css·面试
JIngJaneIL41 分钟前
书店销售|书屋|基于SprinBoot+vue书店销售管理设计与实现(源码+数据库+文档)
java·前端·数据库·vue.js·spring boot·毕设·书店销售管理设计与实现
hadage23341 分钟前
--- docker 一些指令的汇总 ---
运维·docker·容器
徐同保42 分钟前
n8n CLI 项目结构全面分析(node后端)
前端
Nerd Nirvana1 小时前
15个提升开发效率的VS Code插件推荐
linux·vscode·开发工具·嵌入式软件开发·插件使用·智能采集设备·边缘终端
墨雪不会编程1 小时前
C++基础语法篇五 ——类和对象
java·前端·c++
一 乐1 小时前
农产品销售|农产品供销|基于SprinBoot+vue的农产品供销系统(源码+数据库+文档)
java·前端·javascript·数据库·vue.js·spring boot
v***16021 小时前
Linux安装Redis以及Redis三种启动方式
linux·redis·bootstrap
AI视觉网奇1 小时前
vscode 远程失败
linux·服务器