LVS+Keepalivd 群集

2023年 9月 17日 66.1k 0

一 .Keepalived 简介

Keepalived :高可用的工具

1. Keepalived工具介绍

  • 支持故障自动切换 (Failover)
  • 支持节点健康状态检查 (Health Checking)
  • 2. 工作原理:

    • Keepalived 是一个基于VRRP协议来实现的IVS服务高可用方案,可以解决静态路由出现的单点故障问题。
    • 判断 LVS 负载调度器、节点服务器的可用性,当 master 主机出现故障及时切换到backup 节点保证业务正常,当 master故障主机恢复后将其重新加入群集并且业务重新切换回 master 节点。

    3. 下载keepalived 软件包官网

    官方网站: www.keepalived.org/

    4. 普及

    一个合格的集群应该具备以下几个特性

    1. 负载均衡

  • 提高响应能力,实现高并发,高负载能力,减少延迟
  • 代表 :LVS Nginx
  • 2. 健康检查(探针)能力

  • 检查节点服务器和调度器的健康
  • for 调度器/节点服务器 keepalived Heartbeat
  • *检查方法

    • 1.发送心跳消息 ping / pong
    • 2.TCP端口检查,向一台主机,IP:PORT 发起TCP连接
    • 3.HTTP URL 检查 向一个主机的 http://IP:port/URL路径 发送HTTP GET请求方法,主机响应返回 2xx 3xx 状态码则认为健康检查正常,如响应返回 4xx 5xx 状态码则认为健康检查异常。

    3. 故障转移能力

  • 主备切换

  • 二 . Keepalived实现原理剖析

    • Keepalived采用VRRP热备份协议实现

    • Linux服务器的多机热备功能

    1. 原理剖析

    VRRP(虚拟路由元余协议)是针对路由器的一种备份解决方案

  • 由多台路由器组成一个热备组,通过共用的虚拟IP地址对外提供服务

  • 每个热备组内同时只有一台主路由器提供服务,其他路由器处于冗余状态

  • 若当前在线的路由器失效,则其他路由器会根据设置的优先级自动接替虚拟IP地址,继续提供服务

  • image.png

    Keepalived案例讲解

    双机热备的故障切换是由虚拟IP地址的漂移来实现,适用于各种应用服务器

    实现基于Web服务的双机热备

    • 漂移地址: 192.168.10.72

    • 主、备服务器:192.168.10.73、192.168.10.74

    • 提供的应用服务:Web

    image.png

    三. 实现主备漂移实验部署

    Keepalived体系主要模块及其作用:

    keepalived体系架构中主要有三个模块,分别是core、check和vrrp。

    • core模块:为keepalived的核心,负责主进程的启动、维护及全局配置文件的加载和解析。
    • vrrp模块:是来实现VRRP协议的。(调度器之间的健康检查和主备切换)
    • check模块:负责健康检查,常见的方式有端口检查及URL检查。(节点服务器的健康检查)

    工作原理

    • Keepalived 是一个基于VRRP协议来实现的IVS服务高可用方案,可以解决静态路由出现的单点故障问题。
    • 在一个WS服务集群中通常有主服务器(MSTER)和备份服务器(BACKUP)两种角色的服务器,但是对外表现为一个虚拟IP (P),主服务器会发送VRP通告信息给备份服 各器,当备份服务器收不到VRRP消息的时候,即主服务器异常的时候,备份服务器就会接管虚拟IP,继续提供服务,从而保证了高可用性。

    1. 实验操作过程

    Keepalived通过什么判断哪台主机为主服务器,通过什么方式配置浮动IP?

    答案: Keepalived首先做初始化先检查state状态,master为主服务器,backup为备服务器然后再对比所有服务器的prioritv,谁的优先级高谁是最终的主服务器。优先级高的服务器会通过ip命令为自己的电脑配置一个提前定义好的浮动IP地址。

    keepalived的抢占与非抢占模式:

    抢占模式即MASTER从故障中恢复后,会将VIP从BACKUP节点中抢占过来。非抢占模式即MASTER恢复后不抢占BACKUP升级为MASTER后的VIP 非抢占式俩节点state必须为bakcup,且必须配置nopreempt 注意:这样配置后,我们要注意启动服务的顺序,优先启动的获取master权限,与优先级没有关系了

    四. LVS+Keepalived实现部署

    image.png

    1.先准备好nfs共享目录7-4和两个节点服务器安装nginx7-2,7-3,(详细过程去lvs DR模式博客翻阅 哪里有详细过程,内核参数都有,过程完全一样。)

    image.png

    🧈

    image.png

    🥗

    image.png

    内核 sysctl -p 路由route-n

    image.png

    vip地址也配好了

    image.png

    2.配置调度器 7-1,7-5

    #  1.先关闭防火墙
    [root@localhost ~]# systemctl stop firewalld
    [root@localhost ~]# setenforce 0
    
     2  #.将光驱到mnt上
    
     #安装
     yum -y install ipvsadm keepalived
    

    image.png

    给7-1,7-5加载模块

     modprobe ip_vs
     cat /proc/net/ip_vs
    

    image.png

    关闭重定向内核参数两台调度器都要添加

    vim /etc/sysctl.conf
    
    net.ipv4.ip_forward = 0
    net.ipv4.conf.all.send_redirects = 0
    net.ipv4.conf.default.send_redirects = 0
    net.ipv4.conf.ens33.send_redirects = 0
    

    image.png

    修改7-1 keepalived配置文件

    cd /etc/keepalived
    ls
    #改名备份
    cp keepalived.conf{,.bak}
    #修改文件
    vim keepalived
    

    image.png

    修改内容如下

    image.png

    image.png

    测试keepalive是否自动生成节点地址

    ipvsadm-save > /etc/sysconfig/ipvsadm
    ipvsadm -ln
    systemctl start ipvsadm
    systemctl start keepalived
    ipvsadm -ln
    #查看出来ip地址
    自动根据keepalived配置文件生成LVS相关配置规则
    

    image.png

     ip a
    

    image.png

    将7-1的keepalived配置文件远程拷贝到7-5下面

    image.png

    编写7-5的keepalived配置文件

     vim keepalived.conf
    

    image.png

    设置7-5ipvsadm工具

    ipvsadm-save > /etc/sysconfig/ipvsadm
    systemctl enable --now ipvsadm
    systemctl start keepalived.service 
     ipvsadm -ln
    
    

    image.png

     ip a
    

    image.png

    #查看关闭重定向内核参数是否添加
    sysctl -p
    

    image.png内核

    测试:访问keepalivedvip地址 192.168.47.200/test.html

    image.png

    现在将主keepalived关闭

    image.png

    备keepalived :ip a 查看

    image.png

    再次测试:

    image.png

    image.png

    上面操作的是抢占模式:主故障,好了以后vip地址回来

    接下来演示不抢占模式:主故障,好了以后vip地址不回来

    先设置7-1主keepalived 
    

    image.png

    7-5备keepalived和7-1同样的设置

    image.png

    先都将keepalived关闭因为谁先启动谁就是主

    image.png

    先启动7-5,所以是主服务器vip,

    image.png

    非抢占模式和优先级没关系,只和谁先启动有关系

    五.脑裂

    image.png

    1. 脑裂现象:

    主服务器和备服务器同时拥有 VIP

    2. 脑裂原因:

    因为主服务器和备服务器之间的通信链路中断,导致备服务器无法正常收到主服务器发送的VRRP心跳报文

    3. 脑裂的解决:

    关闭主服务器或者备服务器其中一个的keepalived服务

    脑裂的预防:

    1)主服务器与备服务器之间添加双通信链路

    2)在主服务器上定义运行脚本判断与备服务器通信链路是否中断,如果中断则自行关闭keepalived服务

    3)利用第三方监控软件检测是否发生脑裂故障,如果发生则通过监控软件关闭主或者备服务器上的keepalived服务

    七. 课后练习题

    keepalived

    - 基于什么协议 ?

    • 基于VRRP协议。

    - 怎么选举master?

    • 1.初始化的时候看state状态,master为主,backup为备,对比服务的优先级,优先级高的为master。

    - 怎么生成VIP?

    • keepalived会在master节点上面调用ip命令自动创建VIP地址

    - 怎么故障切换?

    • 主故障,备收不到主发来的VIP心跳线信息,他就会自己升为主,用ip命令生成VIP地址

    - 抢占模式和非抢占模式是如何工作的?

    • 抢占模式:当主故障转移后原来的master恢复以后,会抢占VIP地址
    • 非抢占模式:当主故障转移后原来的master恢复以后,不会抢占VIP地址

    - 如何配置非抢占模式 ?

    • 将主备都state都设置成BACKUP,并且下一行添加noproment

    - 脑裂现象如何?

    自动生成VIP地址,此时主备同时拥有VIP地址

    产生脑裂的原因?

    • 通信链路中断
    • 防火墙没关
    • 备收不到主的心跳线信息

    - 脑裂的解决方法?

    • 关闭启动一个keepalived服务即可

    - 脑裂的预防方案?

    • 主和备使用双通信链路
    • 通过脚本监测链路状况,如果链路中断,自行关闭一个keepalived服务
    • 第三方监控软件,是否产生脑裂,如果产生脑裂,则自动关闭一个keepalived服务

    - 如何健康检查调度器和节点服务器?

  • 如果调度器用的LVS:那么调度器不需要做检查,LVS基于内核运行。

  • 节点服务器:通过tcp端口 ,URL路径做检查。

  • 🍟

    nginx做检查:脚本通过命令做检查,或者killall -o nginx是否正常运行

    节点服务器:默认被动方式做健康检

    相关文章

    服务器端口转发,带你了解服务器端口转发
    服务器开放端口,服务器开放端口的步骤
    产品推荐:7月受欢迎AI容器镜像来了,有Qwen系列大模型镜像
    如何使用 WinGet 下载 Microsoft Store 应用
    百度搜索:蓝易云 – 熟悉ubuntu apt-get命令详解
    百度搜索:蓝易云 – 域名解析成功但ping不通解决方案

    发布评论