![](http://static.blog.csdn.net/images/category_icon.jpg)
http://zkchang.blog.51cto.com/10574636/1706998
一.keepalived和其工作原理:
keepalived是一个类似于Layer2,4,7交换机制的软件。是Linux集群管理中保证集群高可用的一个服务软件,其功能是用来防止单点故障。
keepalived的工作原理:
keepalived是基于
VRRP协议
实现的保证集群高可用的一个服务软件,主要功能是实现
真机的故障隔离和负载均衡器间的失败切换,防止单点故障
。在了解keepalived原理之前先了解一下VRRP协议。
VRRP协议:Virtual Route Redundancy Protocol虚拟路由冗余协议。是一种容错协议,保证当主机的下一跳路由出现故障时,由另一台路由器来代替出现故障的路由器进行工作,从而保持网络通信的连续性和可靠性。在介绍VRRP之前先介绍一些关于VRRP的相关术语:
虚拟路由器:由一个 Master 路由器和多个 Backup 路由器组成。主机将虚拟路由器当作默认网关。
VRID:虚拟路由器的标识。有相同 VRID 的一组路由器构成一个虚拟路由器。
Master 路由器:虚拟路由器中承担报文转发任务的路由器。
Backup 路由器: Master 路由器出现故障时,能够代替 Master 路由器工作的路由器。
虚拟 IP 地址:虚拟路由器的 IP 地址。一个虚拟路由器可以拥有一个或多个IP 地址。
IP 地址拥有者:接口 IP 地址与虚拟 IP 地址相同的路由器被称为 IP 地址拥有者。
虚拟 MAC 地址:一个虚拟路由器拥有一个虚拟 MAC 地址。虚拟 MAC 地址的格式为 00-00-5E-00-01-{VRID}。通常情况下,虚拟路由器回应 ARP 请求使用的是虚拟 MAC 地址,只有虚拟路由器做特殊配置的时候,才回应接口的真实 MAC 地址。
优先级: VRRP 根据优先级来确定虚拟路由器中每台路由器的地位。
非抢占方式:如果 Backup 路由器工作在非抢占方式下,则只要 Master 路由器没有出现故障,Backup 路由器即使随后被配置了更高的优先级也不会成为Master 路由器。
抢占方式:如果 Backup 路由器工作在抢占方式下,当它收到 VRRP 报文后,会将自己的优先级与通告报文中的优先级进行比较。如果自己的优先级比当前的 Master 路由器的优先级高,就会主动抢占成为 Master 路由器;否则,将保持 Backup 状态。
虚拟路由示意图:
VRRP将局域网内的一组路由器划分在一起,形成一个VRRP备份组,它在功能上相当于一台路由器的功能,使用虚拟路由器号进行标识(VRID)。虚拟路由器有自己的虚拟IP地址和虚拟MAC地址,它的外在变现形式和实际的物理路由完全一样。局域网内的主机将虚拟路由器的IP地址设置为默认网关,通过虚拟路由器与外部网络进行通信。
虚拟路由器是工作在实际的物理路由器之上的。它由多个实际的路由器组成,包括一个Master路由器和多个Backup路由器。 Master路由器正常工作时,局域网内的主机通过Master与外界通信。当Master路由器出现故障时, Backup路由器中的一台设备将成为新的Master路由器,接替转发报文的工作。(路由器的高可用)
VRRP的工作工程:
(1) 虚拟路由器中的路由器根据优先级选举出 Master。 Master 路由器通过发送免
费 ARP 报文,将自己的虚拟 MAC 地址通知给与它连接的设备或者主机,从
而承担报文转发任务;
(2) Master 路由器周期性发送 VRRP 报文,以公布其配置信息(优先级等)和工
作状况;
(3) 如果 Master 路由器出现故障,虚拟路由器中的 Backup 路由器将根据优先级
重新选举新的 Master;
(4) 虚拟路由器状态切换时, Master 路由器由一台设备切换为另外一台设备,新
的 Master 路由器只是简单地发送一个携带虚拟路由器的 MAC 地址和虚拟 IP
地址信息的ARP 报文,这样就可以更新与它连接的主机或设备中的
ARP 相关信息。网络中的主机感知不到 Master 路由器已经切换为另外一台
设备。
(5) Backup 路由器的优先级高于 Master 路由器时,由 Backup 路由器的工作方
式(抢占方式和非抢占方式)决定是否重新选举 Master。
VRRP优先级的取值范围为0到255(数值越大表明优先级越高)
================================================================
keepalived的工作原理就是基于VRRP实现的,keepalived的体系结构图如下:
在这个机构图中,处于内核的IPVS和NETLINK,其中NETLINK是提供高级路由及其他相关的网络功能,如果在负载均衡器上启用iptables/netfilter,将会直接影响它的性能。对于图中不同模块功能的介绍如下:
-
VRRP Stack
负责负载均衡器之间的失败切换FailOver
;//LVS
中负责DR调度器组的
-
Checkers
负责检查调度器后端的Real server 或者 Upstream Server的健康状况; // 检查RS的状态,决定是否将其剔除
- WatchDog 负责监控checkers和VRRP进程的状况;
- IPVS wrapper 用来发送设定的规则到内核IPVS;
- Netlink Reflector 用来设定VRRP的vip地址。// VIP也有‘人’管
keepalived运行时,会启动3个进程,分别为:core(核心进程),check和vrrp
- core:负责主进程的启动,维护和全局配置文件的加载;
- check:负责健康检查
- vrrp:用来实现vrrp协议
总结:在vrrp协议的基础上实现了服务器主机的负载均衡,VRRP负责调度器之间的高可用。
Keepalived 配置文件介绍:
在yum安装好keepalived之后,keepalived会产生一个配置文件/etc/keepalived/keepalived.conf ,配置文件包含了三个段:
全局定义段、VRRP实例定义段、虚拟服务器定义段。