LVS+Keepalived

一、Keepalived 简介

Keepalived是Linux下一个轻量级别的高可用解决方案,高可用(High Avalilability,HA),其实两种不同的含义:广义来讲,是指整个系统的高可用行,狭义的来讲就是之主机的冗余和接管。

Keepalived与HeartBeat RoseHA 的区别:

  • Keepalived与HeartBeat RoseHA实现相同类似的功能,都可以实现服务或者网络的高可用
  • HeartBeat是一个专业的、功能完善的高可用软件,它提供了HA 软件所需的基本功能,比如:心跳检测、资源接管,检测集群中的服务,在集群节点转移共享IP地址的所有者等等
  • HeartBeat功能强大,但是部署和使用相对比较麻烦
  • 与HeartBeat相比,Keepalived主要是通过虚拟路由冗余来实现高可用功能,虽然它没有 HeartBeat功能强大,但是Keepalived部    署和使用非常的简单,所有配置只需要一个配置文件即可以完成;      

Keepalived起初是为LVS设计的,专门用来监控集群系统中各个服务节点的状态,它根据TCP/IP参考模型的第三、第四层、 第五层交换机制检测每个服务节点的状态,如果某个服务器节点出现异常,或者工作出现故障,Keepalived将检测到,并将出现的故障的服务器节点从集群系统中剔除,这些工作全部是自动完成的,不需要人工干涉,需要人工完成的只是修复出现故障的服务节点,后来Keepalived又加入了VRRP的功能,VRRP(Vritrual Router Redundancy Protocol,虚拟路由冗余协议)出现的目的是解决静态路由出现的单点故障问题,通过VRRP可以实现网络不间断稳定运行,因此Keepalvied 一方面具有服务器状态 检测和故障隔离功能,另外一方面也有HA cluster功能

二、VRRP协议与工作原理          

  在现实的网络环境中,主机之间的通信都是通过配置静态路由或者(默认网关)来完成的,而主机之间的路由器一旦发生故障,通信就会失效,因此这种通信模式当中,路由器就成了一个单点瓶颈,为了解决这个问题,就引入了VRRP协议,VRRP协议是一种主备模式的协议,通过VRRP可以在网络发生故障时透明的进行设备切换而不影响主机之间的数据通信,这其中涉及到两个概念:物理路由器和虚拟路由器;

  VRRP可以将两台或者多台物理路由器设备虚拟成一个虚拟路由,这个虚拟路由器通过虚拟IP(一个或者多个)对外提供服务,而在虚拟路 由器内部十多个物理路由器协同工作,同一时间只有一台物理路由器对外提供服务,这台物理路由设备被成为:主路由器(Master角色),一般情况下Master是由选举算法产生,它拥有对外服务的虚拟IP,提供各种网络功能,如:ARP请求,ICMP 数据转发等,而且其它的物理路由器不拥有对外的虚拟IP,也不提供对外网络功能, 仅仅接收MASTER的VRRP状态通告信息,这些路由器被统称为“BACKUP的角色”,当主路由器失败时,处于BACKUP角色的备份路由器将重新进行选举, 产生一个新的主路由器进入MASTER角色,继续提供对外服务,整个切换对用户来说是完全透明的;

 每个虚拟路由器都有一个唯一的标识号,称为VRID,一个VRID与一组IP地址构成一个虚拟路由器,在VRRP协议中,所有的报文 都是通过IP多播方式发送的,而在一个虚拟路由器中,只有处于Master角色的路由器会一直发送VRRP数据包,处于BACKUP角色的路由器只会接受Master角色发送过来 的报文信息,用来监控Master运行状态,一般不会发生BACKUP抢占的情况,除非它的优先级更高,而当MASTER不可用时,BACKUP也就无法收到 Master发过来的信息,于是就认定Master出现故障,接着多台BAKCUP就会进行选举,优先级最高的BACKUP将称为新的MASTER,这种选举角色切换非常之快,因而保证了服务的持续可用性

三、Keepalvied的工作原理        

     Keepalived通过VRRP实现高可用性工作原理,Keepalived作为一个高性能集群软件,它还能实现对集群中服务器运行状态的监控以及故障隔离。

Keepalived对服务器运行状态和故障隔离的工作原理;

   Keepalived工作在TCP/IP 参考模型的 三层、四层、五层,也就是分别为:网络层,传输层和应用层,根据TCP、IP参数模型隔层所能实现的功能,Keepalived运行机制如下:

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

Keepalived 是运行在lvs 之上,它的主要功能是实现真实机的故障隔离及负载均衡器间的失败切换,提高系统的可用性

四、LVS和Keepalived

LVS提供负载均衡,keepalived提供健康检查,故障转移,提高系统的可用性!采用这样的架构以后很容易对现有系统进行扩展,只要在后端添加或者减少realserver,只要更改lvs的配置文件,并能实现无缝配置变更!

lvs+keepalived的架构图(箭头方向为数据的流向)

LVS+Keepalived_第1张图片

搭建高可用集群HA

如果开启了ldirectord 。关闭 ,并设置开机不自启

keepalived 一般是系统自带的

LVS+Keepalived_第2张图片

解决依赖性

查找包

LVS+Keepalived_第3张图片

由于环境变量问题,需对以下文件进行软链接

LVS+Keepalived_第4张图片

LVS+Keepalived_第5张图片

将server1的文件传给server4,server4上做与server1一样的操作

LVS+Keepalived_第6张图片

在server1中

修改主配置文件

LVS+Keepalived_第7张图片

LVS+Keepalived_第8张图片

LVS+Keepalived_第9张图片

LVS+Keepalived_第10张图片

删掉原先设置的vip

LVS+Keepalived_第11张图片

打开keepalived 服务,会自动添加vip

LVS+Keepalived_第12张图片

server1为主,server4为从。当server1正常运行时,server4只能为待机状态,只有server1 down掉,server4才会被启用

编辑主配置文件 server4中只修改以下内容

LVS+Keepalived_第13张图片

LVS+Keepalived_第14张图片

测试:

停掉server1.  server4上自动添加上了vip

LVS+Keepalived_第15张图片

搭建互为主从关系

编辑配置文件

只需在与源文件后面增加以下内容,新增一个vip

LVS+Keepalived_第16张图片

LVS+Keepalived_第17张图片

LVS+Keepalived_第18张图片

在server4中的配置文件

LVS+Keepalived_第19张图片

LVS+Keepalived_第20张图片

LVS+Keepalived_第21张图片

server1 80 端口为主,21端口为从。server4则与server1相反。server1与server4互为主从

当都正常的时候,都执行自己的主 ,任意一方down掉都会直接执行从

LVS+Keepalived_第22张图片

LVS+Keepalived_第23张图片

最后可在物理机上进行测试。判断是否实现了负载均衡和健康检查。

LVS+Keepalived_第24张图片

LVS+Keepalived_第25张图片

 

 

 

 

 

 

 

 

 

 

 

 

 

你可能感兴趣的:(LVS+Keepalived)