青蛙学Linux—高可用集群软件Keepalived

Keepalived是Linux下一个轻量级的高可用解决方案,它与HACMP、RoseHA实现的功能相似,均可以实现服务或网络的高可用,可是又有差异:HACMP是一个专业的、功能完善的高可用软件,它提供了HA软件所需的基本功能,好比心跳检测和资源接管、监测集群中的系统服务、在集群节点间转移共享IP地址的全部者等,HACMP功能强大,可是部署和使用相对比较麻烦,同时也是商业化软件;与HACMP相比,Keepalived主要是经过虚拟路由冗余来实现高可用功能,虽然它没有HACMP功能强大,但Keepalived部署和使用很是简单,全部配置只须要一个配置文件便可。html

一、Keepalived的用途

Keepalived起初是为LVS设计的,专门用来监控LVS负载均衡集群中各个后端节点的状态。它根据layer3,4 & 5交换机制检测每一个服务节点的状态,若是某个后端节点出现异常,Keepalived将检测到,并将故障节点从集群中剔除,而在故障节点恢复正常以后,Keepalived又可自动将节点从新加入集群。c++

Keepalived后来加入了VRRP功能(Virtual Route Redundancy Protocol,虚拟路由器冗余协议,用于解决路由器出现的单点故障),使其也具备了HA功能。这样,Keepalived不只能够用于LVS负载均衡集群的节点监控,也能够用于实现高可用。算法

二、VRRP协议与工做原理

在现实的网络环境中,主机之间的通讯都是经过配置静态路由(默认网关)完成的,而主机之间的路由器一旦出现故障,通讯就会失败。所以,在这种通讯模式中,路由器就成了一个单点瓶颈。为了解决这个问题,引入了VRRP协议。shell

VRRP将两台或多台物理路由器虚拟成一个虚拟路由器,这个虚拟路由器经过虚拟IP对外提供服务。而在虚拟路由器内部,多个物理路由器协同工做,同一时间只有一台物理路由器对外提供服务,这台路由器被称为主路由器(Master角色)。通常状况下Master由选举算法产生,拥有对外服务的虚拟IP,提供各类服务。而其余物理路由器不拥有虚拟IP,不提供网络服务,仅仅接收Master的VRRP状态通告信息,这些路由器被称为备份路由器(Backup角色)。当主路由失效时,处于Backup角色的备份路由将从新选举出一台新的主路由进入Master角色对外提供服务。后端

三、Keepalived体系结构

Keepalived是一个高度模块化的软件,结构简单,但扩展性很强,下图是官方给出的体系结构拓扑图:网络

2

Keepalived从总体上分为两层,分别是用户空间(User Space)和内核空间(Kernel Space)。负载均衡

内核空间处于最底层,包括IPVS和NETLINK两个模块。IPVS包含在LVS集群软件中,能够实现基于IP的负载均衡,而Keepalived最初就是用于为LVS提供节点状态检测功能的,IPVS模块可经过编译时的参数来打开和关闭;NETLINK模块主要用于实现一些高级路由框架和一些相关的网络功能,完成用户空间Netlink Reflector模块发来的各类网络请求。框架

用户空间位于内核空间之上,Keepalived的全部具体功能都在这里实现。模块化

四、安装Keepalived

Keepalived能够经过YUM安装,也可使用源码进行安装。设计

从Keepalived官网http://www.keepalived.org/上能够下载到Keepalived的源码包。

4.1YUM安装Keepalived

使用如下命令经过YUM安装Keepalived:

yum install keepalived

4.二、源码安装Keepalived

这里以Keepalived最新版本2.0.12为例介绍源码安装Keepalived。

经过YUM安装依赖环境:

[root@localhost keepalived-2.0.12]# yum install gcc gcc-c++ wget popt-devel openssl openssl-devel libnl libnl-devel libnl3 libnl3-devel libnfnetlink-devel

解压源码包后,进入源码目录,执行configure,这里不指定Keepalived的安装路径,仅指定Keepalived配置文件路径:

[root@localhost keepalived-2.0.12]# ./configure --sysconf=/etc
  • --sysconf:指定Keepalived配置文件目录,此时会在/etc下生成keepalived目录,配置文件就位于该目录内

configure运行完毕无报错后执行:

[root@localhost keepalived-2.0.12]# make && make install

命令运行完成无报错,Keepalived就安装成功了。

可使用service(init)systemclt(systemd)管理Keepalived服务。

相关文章
相关标签/搜索