1:keepalived高可用
首先了解介个基本概念:
(1)HA(High Available)高可用性集群,是保证业务连续性的有效解决方案,一般有2个或2个以上的节点,且分为活动节点和备用节点。
(2)nginx作为负载均衡器,所有请求都到了nginx服务器,nginx是处于一个很重要的位置,如果nginx服务器宕机,那后后台的服务器将无法提供服务,严重影响客户端的请求。
如下图所示:
为了解决ngnix服务器单点故障的问题,需要再建立一个备服务器,然后在主服务器和备服务器上都运行高可用HA监控程序,备服务器通过类似“心跳检测”这样的方式来检测对方的运行状况。一旦当备服务器不能再指定的时间内收到“心跳检测”这样的信息,他就会认为主服务器出故障了,然后接管主服务器的工作并继续提供服务;当备服务器又从主服务器收到“心跳检测”这样的信息事,备服务器就会让出现在的位置,把工作交还给主服务器,这样主服务器就开始再次提供服务了。重点:FTP HA的方案是即使主服务器故障后再恢复,备服务器也不会将现在的位置让给主服务器,除非备服务器故障。
(3)VRRP协议
keepalived之所以能保证高可用是基于VRRP协议实现的。
VRRP是通过一种竞选协议来动态的将路由任务交给局域网中虚拟路由中的某台VRRP路由器。
(4)VRRP路由器
我们可以把VRRP路由器理解为只要是运行了leepalived软件(VRRP协议)的一台物理路由器就是VRRP路由器,而一台VRRP路由器可以位于多台虚拟路由器。
(5)VRRP虚拟路由器
VRRP虚拟路由器从字面意思上来理解的话,就是虚拟出来的路由器,并不存在,也就是逻辑上的一台路由器,看不见,也摸不着。
简单来说,虚拟路由器是我们逻辑上把多台物理的VRRP路由器通过某种方式组成的(而组合成的这台路由器就是VRRP虚拟路由器),这样看起来就只有一台VRRP虚拟路由器,但是VRRP虚拟路由器内部实际上有很多台物理的路由器。
2.keepalived介绍
(1)keepalived是集群管理中保证集群高可用的一个服务软件,其功能类似于heartbeat,用来防止单点故障,它可以自动检测集群中服务器的健康状况,比如主从模式时,当主服务器发生故障时,keepalived会根据服务器的VRRP的优先级来选举一个从服务器变成主服务器,实现主从的无缝切换,保证持续的提供服务,并且keepalived也会及时的通过邮件通知到相关责任人进行维护出现问题的服务器。
(2)keepalived是集群管理中保证集群高可用的一个服务软件,主要是防止单点故障问题。
3.keepalived工作原理
Keepalived是以VRRP协议为实现基础的,VRRP全程是Virtual Router Redundancy Protocol, 即虚拟路由冗余协议。
虚拟路由冗余协议,可以认为是实现路由器高可用的协议,即将N台提供相同功能的路由器组成一个路由器组,这个组里面有一个master和多个backup,master上面有 一个对外提供服务的虚拟ip,即VIP(该路由器所在局域网内其他及其的默认路由为该VIP),在keepalived中只有作为master的服务器会一直发送VRRP广播包(心跳消息),以告知局域网内的其他backup节点自己还活着,当master宕机了那么backup就无法收到VRRP包,这时就需要根据VRRP的优先级来选在一个backup接管master工作,当检测到master恢复时,backup又会让出工作,恢复原来备机状态。VRRP的出现就是用来保障单点故障问题,即某个节点出现故障,不会影响整个网络的正常运行,这样的话就可以保证路由器的高可用了。
4.Keepalived三个模块
keepalived主要由三个模块,分别时core,check,vrrp。
core模块时为keepalived的核心,负责主进程的启动,维护以及全局配置文件的加载和解析。
check负责健康检查,包括常见的各种检查方式。
vrrp模块是来实现VRRP协议的。(VRRP_script是用来做健康检查的,当检查失败时会将vrrp_instance的priority减少相应的值。
5.VIP
在keepalived的工作原理中,提到一个很重要的概念,虚拟ip-vip.
如果你已经理解了前面所将的VRRP虚拟路由,那么虚拟ip对你来说就很简单了,因为虚拟ip和VRRP虚拟路由器其实时一个道路,前面的VRRP虚拟路由都是铺垫,对于学过的NA的同学来说,VRRP虚拟路由和虚拟ip不难理解。
比如:一般我们使用的电脑都有一个网卡,在网卡上绑定一个ip地址就可以开始上网了,一个网卡可以绑定多个ip地址。
虚拟ip跟VRRP虚拟路由器也是类似的,虚拟出来的,一个逻辑上的ip地址,也是由多个机器的真实有效的ip绑定组合而成的一个虚拟ip,但是访问虚拟ip和访问真是ip的效果时一样的。