LVS模式:(DR模式)+Keepalived(高可用)(4)

一.Keepalived的基本概念

keepalived概念-->vrrp概念--->vrrp工作原理---->keepalived原理

简单总结:(面试时候说)Keepalived高可用对之间是通过 VRRP进行通信的,

1.keepalived概念 :keepalived就是linux下轻量级的高可用解决方案,专门用来监控集群中服务器状态的。一旦发生故障就会剔除不需要人工参与。他是根据TCP/IP参考模型的第三,第四,第五层交换机制检测每个服务器的节点状态。
2.vrrp概念: vrrp就是虚拟路由冗余协议,在现实的网络环境中,主机之间的通信都是通过配置静态路由或者默认网关来完成的而主机之。间的路由器一旦发生故障,通信就会失败,因此在这种通信模式中,路由器就成了一个单点瓶颈
为了解决这个问题就引入了VRRP协议为了解决静态路由的单点故障问题,VRRP是通过一种竞选机制来将路由的任务交给某台VRRP路.由器的
3.vrrp工作原理: 虚拟路由器内部十多个物理路由器协同工作,同一时间只有一台物理路由器对外提供服务。处于BACKUP角色的路由器只会接受Master角色发送过来的报文信息(VRRP数据报文)
用来监控Master的运行状态。4Master出现故障,接着多台BACKUP就会进行选举,优先级最高的BACKUP将成为新的Master
4.keepalived原理: 在 Keepalived服务对之间,只有作为主的服务器会一直发送VRRP广播包,告诉备它还活着,保证集群高可用的一个服务软件。Keepalived工作在TCP/IP参考模型的三层,四层,五层,也就是分别为:网络层,传输层,应用层根据TCP,IP参数模型隔层所能实现的功能,Keepalived运行机制如下
(1)网络层
Keepalived在网络层采用最常见的工作方式是通过ICMP协议向服务器集群中的每一个节点发送一个ICMP的数据包,类似于ping的功能。返回响应数据包,那么认为该节点发生了故障,Keepalived将报告这个节点失效,并从服务器集群中的节点剔除
(2)在传输层
而Keepalived在传输层利用了TCP协议的端口连接和扫描技术来判断集群节点是否正常
比如对web服务器常见的80端口,keepalived一旦在传输层探测到这些端口信号没有数据响应和数据返回
就认为这些端口发生异常,然后强制这些端口所对应的节点从服务器集群中剔除掉
(3)在应用层:
可以运行FTP,TELNEL,SMTP,DNS等各种不同类型的高层协议工作方式,例如可以通过编写程序或者编写脚本来运行Keepalived。ved将根据用户设定的参数来检测各种程序或者服务是否运行正常。
当Keepalived的检测结果和用户设定的不一致时,Keepalived将把对应的服务器从服务器集群中剔除

https://blog.csdn.net/ymeng9527/article/details/97052994

keepalived是什么:

keepalived是集群管理中保证集群高可用的一个服务软件(防止单点故障)
它能够保证当个别节点宕机时,整个网络可以不间断地运行,所以,Keepalived
一方面具有配置管理LVS的功能,同时还具有对LVS下面节点进行健康检查的功能,另一方面也可实现系统网络服务的高可用功能

keepalived的基本概念

Keepalived是Linux下的一个轻量级别的高可用解决方案 高可用(High
Avalilability,HA),其实两种不同的含义:广义上来讲,是指整个系统的高可用性,狭义上来讲就是主机的冗余和接管
Keepalived起初是为LVS设计的,专门用来监控集群系统中的各个服务的节点的状态
它根据TCP/IP参考模型的第三,第四,第五层交换机制检测每个服务器的节点状态
如果某个服务器出现异常,或者工作出现故障,keepalived将检测到,并将出现故障的服务器节点从集群系统中剔除
这些工作都只自动完成的,不需要人为干预,需要人工完成的只是修复出现故障的服务节点 也就是可以使用keepalived可以实现调度器的转换
后来keepalived又加入了VRRP的功能 VRRP(Virtual Router Redundancy
Protocol)虚拟路由冗余协议出现的目的是 解决静态路由出现单点故障的问题,通过VRRP可以实现网络不间断稳定运行
因此keepalived一方面具有服务器状态检测和故障隔离的功能,另外一方面也具有HA cluster功能

keepalived工作原理

keepalived是以VRRP协议为实现基础的,VRRP全称Virtual Router Redundancy
Protocol,即虚拟路由冗余协议。
虚拟路由冗余协议,可以认为是实现路由器高可用的协议,即将N台提供相同功能的路由器组成一个路由器组,这个组里面有一个master和多个backup,master上面有一个对外提供服务的vip(该路由器所在局域网内其他机器的默认路由为该vip),master会发组播,当backup收不到vrrp包时就认为master宕掉了,这时就需要根据VRRP的优先级来选举一个backup当master。这样的话就可以保证路由器的高可用了

Keepalived高可用故障切换转移原理

Keepalived高可用服务对之间的故障切换转移,是通过 VRRP (Virtual Router Redundancy Protocol ,虚拟路由器冗余协议)来实现的。   
在 Keepalived服务正常工作时,主 Master节点会不断地向备节点发送(多播的方式)心跳消息,用以告诉备Backup节点自己还活看,当主 Master节点发生故障时,就无法发送心跳消息,备节点也就因此无法继续检测到来自主 Master节点的心跳了,于是调用自身的接管程序,接管主Master节点的 IP资源及服务。而当主Master节点恢复时,备Backup节点又会释放主节点故障时自身接管的IP资源及服务,恢复到原来的备用角色。

那么,什么是VRRP呢?

VRRP ,全 称 Virtual Router Redundancy Protocol ,中文名为虚拟路由冗余协议
,VRRP的出现就是为了解决静态路由的单点故障问题,VRRP是通过一种竞选机制来将路由的任务交给某台VRRP路由器的。

VRRP的工作原理

VRRP可以将两台或者多台物理路由器虚拟成一个虚拟路由,这个虚拟路由通过虚拟IP(一个或者多个)对外提供服务
而在虚拟路由器内部十多个物理路由器协同工作,同一时间只有一台物理路由器对外提供服务
这台物理路由设备称为主备路由器,他拥有对外虚拟IP,提供各种网络功能
而其它的物理路由器不拥有对外虚拟的IP,也不提供对外网络功能,仅仅接收master的VRRP状态通高信息
这些路由器统被称为BACKUP的角色,当主路由失败时,处于BACKUP角色的备份路由器将重新进行选举
产生一个新的主路由器进入MASTER角色,继续对外提供服务,整个切换对于用户来说是透明的
每个虚拟路由器都有一个唯一的标识号,成为VRID,一个VRID与一组IP地址构成一个虚拟路由器
在VRRP协议中,所有的报文都是通过IP多播放式发送的 而在一个虚拟的路由器中,只有处于Master角色的路由器会一直发送VRRP数据包
处于BACKUP角色的路由器只会接受Master角色发送过来的报文信息 用来监控Master的运行状态,一般不会发生BACKUP抢占的情况
除非它的优先级更高,而当Master不可用时,BACKUP也就无法受到Master发过来的信息
于是就认定Master出现故障,接着多台BACKUP就会进行选举,优先级最高的BACKUP将成为新的Master
这种选举角色的切换非常快。因而保证了服务的持续可用性

面试中的文字表述:

Keepalived的工作原理:

Keepalived高可用对之间是通过VRRP通信的,因此,我们从 VRRP开始了解起:

  1. VRRP,全称 Virtual Router Redundancy Protocol,中文名为虚拟路由冗余协议,VRRP的出现是为了解决静态路由的单点故障。

    2) VRRP是通过一种竟选协议机制来将路由任务交给某台 VRRP路由器的。

    3) VRRP用 IP多播的方式(默认多播地址(224.0_0.18))实现高可用对之间通信。

    4) 工作时主节点发包,备节点接包,当备节点接收不到主节点发的数据包的时候,就启动接管程序接管主节点的开源。备节点可以有多个,通过优先级竞选,但一般 Keepalived系统运维工作中都是一对。

    5) VRRP使用了加密协议加密数据,但Keepalived官方目前还是推荐用明文的方式配置认证类型和密码。

介绍完 VRRP,接下来我再介绍一下 Keepalived服务的工作原理:

Keepalived高可用对之间是通过 VRRP进行通信的,
VRRP是遑过竞选机制来确定主备的,主的优先级高于备,因此,工作时主会优先获得所有的资源,备节点处于等待状态,当主挂了的时候,备节点就会接管主节点的资源,然后顶替主节点对外提供服务。
  在 Keepalived服务对之间,只有作为主的服务器会一直发送
VRRP广播包,告诉备它还活着,此时备不会枪占主,当主不可用时,即备监听不到主发送的广播包时,就会启动相关服务接管资源,保证业务的连续性.接管速度最快可以小于1秒。

keepalived是集群管理中保证集群高可用的一个服务软件,其功能类似于heartbeat,用来防止单点故障。(单点故障是指一旦某一点出现故障就会导致整个系统架构的不可用)的发生
keepalived是一个类似于layer3, 4 & 5交换机制的软件,也就是我们平时说的第3层、第4层和第5层交换。Keepalived是自动完成,不需人工干涉。

  1. 主要提供 loadbalancing(负载均衡)和 high-availability(高可用)功能
  2. 负载均衡实现需要依赖Linux的虚拟服务内核模块(ipvs)
  3. 高可用是通过VRRP协议实现多台机器之间的故障转移服务
  4. 采用多进程的设计模式,每个进程负责不同的功能
  5. 高可用web架构: LVS+keepalived+nginx+apache+php+eaccelerator(+nfs可选 可不选)

keepalived作为一个高性能集群软件,它能实现对集群中服务器运行状态的监控以及故障隔离
下面介绍对服务器运行状态和故障隔离的工作原理
Keepalived工作在TCP/IP参考模型的三层,四层,五层,也就是分别为:网络层,传输层,应用层
根据TCP,IP参数模型隔层所能实现的功能,Keepalived运行机制如下

(1)在网络层
在网络层的四个协议(互联网络IP协议,互联网络可控制报文协议ICMP,地址转换协议ARP,反向地址转换协议RARP)
Keepalived在网络层采用最常见的工作方式是通过ICMP协议向服务器集群中的每一个节点发送一个ICMP的数据包,类似于ping的功能
如果某个节点没有返回响应数据包,那么认为该节点发生了故障,Keepalived将报告这个节点失效,并从服务器集群中的节点剔除
(2)在传输层
提供了两个主要的协议:
传输控制协议TCP和用户数据协议UDP,传输控制协议TCP可以提供可靠的数据输出服务,IP地址和端口
代表TCP的一个连接端,要获得TCP服务,需要在发送机的一个端口和接收机的一个端口上建立连接
而Keepalived在传输层利用了TCP协议的端口连接和扫描技术来判断集群节点是否正常
比如对web服务器常见的80端口,keepalived一旦在传输层探测到这些端口信号没有数据响应和数据返回
就认为这些端口发生异常,然后强制这些端口所对应的节点从服务器集群中剔除掉
(3)在应用层:
可以运行FTP,TELNEL,SMTP,DNS等各种不同类型的高层协议,Keepalived的运行方式也更加全面化和复杂化
用户可以通过自定义Keepalived工作方式,例如可以通过编写程序或者编写脚本来运行Keepalived
而Keepalived将根据用户设定的参数来检测各种程序或者服务是否运行正常
当Keepalived的检测结果和用户设定的不一致时,Keepalived将把对应的服务器从服务器集群中剔除

在这里插入图片描述

Keepalived的作用:

Keepalived的作用是检测服务器的状态,如果有一台web服务器宕机,或工作出现故障,Keepalived将检测到,并将有故障的服务器从系统中剔除,同时使用其他服务器代替该服务器的工作,当服务器工作正常后Keepalived自动将服务器加入到服务器群中,这些工作全部自动完成,不需要人工干涉,需要人工做的只是修复故障的服务器。

keepalived需要注意的点:

1.如果服务器和用户直接连接的话,会出现很多问题,例如网络,存储,访问
2.如果服务器压力很大:解决方法是先访问缓存,再访问负载均衡
3.搜索服务器:专门用来接受搜索的请求的,一般来说存储都比较高效
4.对于用户来说,等待的时间都是查询的时间
5.节耦的用处:为了避免某一个节点坏了,所有都坏
6.redhat 6.5和6的启动方式都使用了IPVS的架构
7.SNMP是简单网络管理协议
8.在高可用的目录下bin脚本,etc是配置文件,sbin下是一个编译好的二进制文件
9.在做项目的时候注意网卡接口的名称
10.优先级 也即权重

还有,需要注意:
Keepalived起初是为LVS设计的,由于Keepalived可以实现对集群节点的状态检测,而IPVS可以实现负载均衡功能,因此,Keepalived借助于第三方模块IPVS就可以很方便的搭建一套负载均衡系统。在这里有个误区就是由于Keepalived可以和IPVS一起工作,所以普遍就认为Keepalived是一个负载均衡软件,这种理解是错误的。

二.配置DR模式下的高可用

前面学习了lvs的基础知识,现在我们来讨论调度器的备份,也就是集群(不再是单纯的调度器)
在上一个实验的基础上,当调度器server1也挂了,客户就彻底不能访问了,这时我们可以设置调度器的高可用。
时刻保证调度器的正常工作:设置调度器的master(主)和调度器backup(备)
我们在两台调度器上使用keepalived服务就可以将两个调度器关联在一起,keepalived检测两个调度器的工作情况
如果lvs挂掉了,客户就彻底访问不到任何东西了。
现在做一个高可用的lvs
我们**使用keeplived代理lvs**它具有lvs的功能,但同时可以有多个,有主有备
当主挂了备用就去做轮询,当主好了备用就把任务还给主
当主调度器好着的时候,keepalived就回去通知备份调度器自己可以正常工作,不需要接管自己的任务
当主调度器坏了,不告诉备份调度器任何消息的时候,备份调度器就会自动去接管主调度器的工作
这个时候客户端依然可以正常访问

实验环境:
主机 	ip 	服务
server3 	172.25.63.3 	master
server2 	172.25.63.2 	Real-server
server1 	172.25.63.1 	Real-server
server4 	172.25.63.4 	Backup
物理机 	172.25.63.250 	测试

试验步骤:
首先,清除之前写过的LVS策略
在这里插入图片描述将物理机的keepalived包发给master 主机server1和备机server4,并解压,安装,编译
因为这一步两台虚拟机的操作是相同的,所以我们只展示master主机server3的解压安装与编译。
在这里插入图片描述
!master主机server3:

[root@nodel1 ~]# cd /mnt
[root@nodel1 mnt]# ls
keepalived-2.0.17.tar.gz
[root@nodel1 mnt]# tar zxf keepalived-2.0.17.tar.gz
[root@nodel1 mnt]# ls
keepalived-2.0.17  keepalived-2.0.17.tar.gz
[root@nodel1 mnt]# cd keepalived-2.0.17/
[root@nodel1 keepalived-2.0.17]# yum install openssl-devel  gcc -y
[root@nodel1 keepalived-2.0.17]# ./configure  --prefix=/usr/local/keepalived --with-init=systemd
[root@nodel1 keepalived-2.0.17]# make && make install

在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述

制作软连接:

[root@nodel1 keepalived-2.0.17]# cd /usr/local/keepalived/etc/keepalived/
[root@nodel1 keepalived]# ls
keepalived.conf  samples
[root@nodel1 keepalived]# ln -s /usr/local/keepalived/etc/keepalived/  /etc/

在这里插入图片描述备机4也是一样的操作
tar zxf keepalived-2.0.17.tar.gz ##解压
在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述
关闭server3的健康检查服务,并设置开机不启动(虽然我们是7.3版本的虚拟机,但这个健康检查服务是红帽6.5的管理方式)

在这里插入图片描述
此时,使用该种方式也是可以的
删除上一个实验手动添加的ip地址
在这里插入图片描述在这里插入图片描述

编辑master的高可用配置文件

[root@nodel1 keepalived]# vim /etc/keepalived/keepalived.conf 
里面的内容如下所示:
! Configuration File for keepalived

global_defs {
   notification_email {
     root@localhost      #接收警报的email地址,可以添加多个
   }
   notification_email_from keepalived@localhost
   smtp_server 127.0.0.1             #设置smtp server地址
   smtp_connect_timeout 30        #设置连接smtp服务器超时时间
   router_id LVS_DEVEL                 #load balancer的标识ID,用于email警报
   vrrp_skip_check_adv_addr
   #vrrp_strict
   vrrp_garp_interval 0
   vrrp_gna_interval 0
}

vrrp_instance VI_1 {
    state MASTER        #证明这台主机是master服务器,而备机要改成BACKUP,
   #此状态是由priority的值来决定的,当前priority的值小于备机的值,那么将会失去MASTER状态
    interface eth0           #监测网络接口 #
    virtual_router_id 11     #主,备机的virtual_router_id 必须相同,取值0-255
    priority 100                   #主机的优先级,备份机改为50,主机优先级一定要大于备机
    advert_int 1                   #主备之间的通告间隔秒数
    authentication {          #主备切换时的验证
        auth_type PASS   #设置验证类型,主要有PASS和HA两种
        auth_pass 1111   #设置验证密码,在一个vrrp_instance(实例)下,MASTER与BACPUP必须使用相同的密码才能正常通信
    }
    virtual_ipaddress {       #设置虚拟IP地址,可以设置多个虚拟IP地址,每行一个
        172.25.11.100
    }
}   
virtual_server 172.25.11.100 80 {        #定义虚拟服务器
    delay_loop 3              #每隔3秒查询realserver状态
    lb_algo rr                  #lvs调度算法,这里使用轮循
    lb_kind DR             #lvs是用DR模式
    #persistence_timeout 50        会话保持时间,单位是秒,这个选项对于动态网页是非常有
#用的,为集群系统中 session 共享提供了一个很好的解决方案。有了这个会话保持功能,用户的 
#请求会被一直分发到某个服务节点,直到超过这个会话保持时间。需要注意的是,这个会话保 
#持时间,是最大无响应超时时间,也就是说用户在操作动态页面时,如果在 50 秒内没有执行任 
#何操作,那么接下来的操作会被分发到另外节点,但是如果一直在操作动态页面,则不受 50 秒 #的时间限制。
    
    protocol TCP          #指定转发协议类型,有tcp和udp两种

    real_server 172.25.11.2 80 {                #配置服务节点
        TCP_CHECK {             #realserve的状态检测设置部分,单位是秒
        weight 1                  #配置服务节点的权值,权值大小用数字表示,数字越大,权
#值越高,设置权值的大小可以为不同性能的服务器分配不同的负载,可以对性能高的服务器设
#置较高的权值,而对性能较低的服务器设置相对较低的权值,这样就合理的利用和分配了系统资源
            connect_timeout 3      #3s无响应超时
            retry 3          #重试次数
            delay_before_retry 3     #重试间隔
     }
} 
    real_server 172.25.11.3 80 {
        TCP_CHECK {
        weight 1
            connect_timeout 3
            retry 3
            delay_before_retry 3
     } 
   }
}

在这里插入图片描述在这里插入图片描述在这里插入图片描述
配置BACKUP的配置文件,大体上与MASTER相同,只需要修改类型与优先级,所以不想一步一步设置可以直接从MASTER主机上面拷过来配置文件再做修改

vim /etc/keepalived/keepalived.conf
主要修改内容为:
vrrp_instance VI_1 {
    state BACKUP       #修改类型为BACKUP
    interface eth0   
    virtual_router_id 11
    priority 50       #优先级为50
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        172.25.15.100
    }
}

在这里插入图片描述
在这里插入图片描述在这里插入图片描述
启动主。备虚拟机的高可用服务
在这里插入图片描述
<1>开启服务后,会发现给MASTER虚拟机自动分配vip地址(172.25.63.100)
在这里插入图片描述在这里插入图片描述
在这里插入图片描述在这里插入图片描述将(主机)的keepalived服务关闭,则vip地址会漂移serverl4(备机)
在这里插入图片描述在这里插入图片描述在这里插入图片描述
在真机curl 172.25.63.100 发现可以正常访问两个web
在这里插入图片描述
如果将server3的服务再次开启,发现vip又会漂移回去
systemctl start keepalived.service
ip a ##发现恢复正常,查看有vip
此处忘记截图了。。。。。。。

测试健康检查

测试当没有服务宕机时,在物理机中测试的结果,发现测试页轮循输出
在这里插入图片描述在这里插入图片描述
把server1的apache关闭后,再次测试发现只会正常输出server2的测试页
在这里插入图片描述在这里插入图片描述在这里插入图片描述
此时在物理机测试只会有server2
在这里插入图片描述
将server1的恢复
在这里插入图片描述
物理机测试正常轮询
在这里插入图片描述在这里插入图片描述
如果我们把server1和server2的apache都关闭,那么再次测试会发现无法正常输出,Connection refused
因为我们关闭ldirectord了,因为此处的检查与ldirectord健康检查没有关系,所以显示的页面也不是“页面走丢了”

步骤总结:
keepalived:(删除lvs策略,关闭健康检查。和lvs,ld健康检查都没关系了。)
清除lvs策略
安装包–解压–编译(安装gcc openssl-devel)–安装make && make install–>制作软连接
–>关闭ld健康检查(红帽6.5管理方式)–>有虚拟ip 的话需要删除ip addr del 172.25.63.100/32 dev eth0
---->配置master的高可用配置文件(MASTER,主机优先级,轮询方式,虚拟ip,真实服务器都配置了)–拷贝给备机一份
—>开启keepalived服务之后,tail -f /var/log/messages可以看到master虚拟机自动分配VIP地址 ip a 查看。而
server4并没有分配到虚拟ip---->关闭主的keepalived服务,VIP自动飘移到server4上,可以查看server4日志
–>真机curl 测试 健康检查---->当server1/2出现故障了,可以在keepalived主机上mail查看邮件(在keepalived的配置文件里面配置了)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值