zoukankan      html  css  js  c++  java
  • 青蛙学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服务。

  • 相关阅读:
    课后作业03-以淘宝网为例从质量的六个属性描述分析
    软件体系架构课后作业02-架构漫谈阅读笔记
    java中怎样跳出当前的多层循环嵌套
    redis二级缓存的五种数据类型的常用命令
    递归算法 菲波那切数列 (一个楼梯有n阶,每一次可以走一个台阶或者二个台阶请问总共有几种走法)
    restful代码风格
    java开发工程师面试题总结(适用于1-2年工作经验的人)
    Java中HashMap与HashTable的联系与区别
    HashMap扩容因子默认是0.75?底层数据结构? hash函数处理冲突的集中方式?
    设计模式
  • 原文地址:https://www.cnblogs.com/yu2006070-01/p/10370069.html
Copyright © 2011-2022 走看看