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

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

1、Keepalived的用途

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

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

2、VRRP协议与工作原理

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

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

3、Keepalived体系结构

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

2

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

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

用户空间位于内核空间之上,Keepalived的所有具体功能都在这里实现。

4、安装Keepalived

Keepalived可以通过YUM安装,也可以使用源码进行安装。

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

4.1YUM安装Keepalived

使用以下命令通过YUM安装Keepalived:

yum install keepalived

4.2、源码安装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服务。

posted @ 2019-02-13 15:29  青蛙学Linux  阅读(423)  评论(0编辑  收藏  举报