LVS+Keepalivd 群集

132 阅读7分钟

一 .Keepalived 简介

Keepalived :高可用的工具

1. Keepalived工具介绍

  1. 支持故障自动切换 (Failover)
  2. 支持节点健康状态检查 (Health Checking)

2. 工作原理:

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

3. 下载keepalived 软件包官网

官方网站: www.keepalived.org/

4. 普及

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

1. 负载均衡

  1. 提高响应能力,实现高并发,高负载能力,减少延迟
  2. 代表 :LVS Nginx

2. 健康检查(探针)能力

  1. 检查节点服务器和调度器的健康
  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. 故障转移能力

  1. 主备切换

二 . Keepalived实现原理剖析

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

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

1. 原理剖析

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

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

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

  3. 若当前在线的路由器失效,则其他路由器会根据设置的优先级自动接替虚拟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服务

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

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

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

🍟

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

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