1、HA集群中的相关术语
1.节点(node)node
运行HA进程的一个独立主机,称为节点,节点是HA的核心组成部分,每一个节点上运行着操做系统和高可用软件服务,在高可用集群中,节点有主次之分,分别称之为主节点/备份节点,每一个节点拥有惟一的主机名,而且拥有属于本身的一组资源,例如,磁盘,文件系统,网络地址和应用服务等,主节点上通常运行着一个或多个应用服务,而备节点通常处于监控状态linux
2.资源(resource)算法
资源是一个节点能够控制的实体,而且当节点发生故障时,这些资源可以被其余节点接管,HA集群软件中,能够当作资源的实体有:shell
(1)磁盘分区、文件系统vim
(2)IP地址VIP服务器
(3)应用程序服务网络
(4)NFS文件系统负载均衡
3.事件(event)tcp
也就是集群中可能发生的事情,例如节点系统故障,网络连通故障,网卡故障,应用程序故障等,这些事情都会发生节点资源发生转移,HA的测试也是基于这些事情来进行的模块化
4.动做(action)
事件发生时HA的响应方式,动做是由shell脚本控制的,例如当某个节点发生故障后,备份节点将经过事先设定好的执行脚本进行服务的关闭或启动,进而接管故障节点的资源
2、keepalived简介
keepalived 是linux下一个轻量级的高可用解决方案,它与HACMP实现功能相似,均可以实现服务或者网络的高可用,可是又有差异:hacmp是一个专业的、功能完善的高可用软件,它提供了HA软件所需的基本功能,好比心跳检测和资源接管,检测集群中的系统服务,在集群节点间转移共享ip地址全部者等,hacmp功能强大,可是部署和使用相对麻烦,同时也是商业化软件,与hacmp相比,keepalived主要是经过虚拟路由冗余来实现高可用功能,虽然他没有hacmp功能强大,可是keepalived部署使用相对简单,全部配置只须要一个配置文件便可完成.
3、keepalived的用途
keepalived起初是为lvs设计的,专门用来监控集群系统中各个服务节点的状态,它根据layer3,4 & 5交换机制检测每一个服务节点的状态,若是某个服务节点出现异常,或工做出现故障,keepaived将检测到,并将出现故障的服务节点从集群系统中剔除,而在故障节点恢复正常后,keepalived又能够自动将此服务节点从新加入到集群中,这些工做所有自动完成,不须要人工干预,须要人工完成的只是修复故障节点。
keepalived后来又加入了VRRP 的功能,VRRP是Virtual Router Redundancy Protocol(虚拟路由器冗余协议)的缩写,它出现的目的是为了解决静态路由出现的单点故障问题,经过VRRP能够实现网络不间断的、稳定的运行,所以,keepalived一方面具备服务器状态监测和故障隔离功能,另外一方面也具备HA Cluster功能,下面详细介绍下VRRP协议的实现过程
4、VRRP协议与工做原理
在现实的网络环境中,主机之间的通讯都是经过配置静态路由完成的,而主机之间的路由器一旦出现故障,通讯就会失败,所以在这种通讯模式中,路由器就成了一个单点瓶颈,为了解决这个问题就引入了VRRP协议
VRRP协议是一种主备模式的协议,经过VRRP能够在网络发生故障时透明地进行设备切换不影响主机间的数据通讯,这其中涉及两个概念:物理路由器和虚拟路由器
VRRP能够将两台或者多台物理路由器设备虚拟成一个虚拟路由器,这个虚拟路由器经过虚拟IP(一个或多个)对外提供服务,二在虚拟路由器内部,是多个物理路由器协同工做,同一时间只有一台物理路由器对外提供服务,这台物理路由器被称之为主路由器(处于master状态角色)。它拥有对外提供的虚拟ip,提供各类网络功能,好比arp请、icmp、数据转发等,二其余物理路由器不拥有对外提供的虚拟ip,也不提供对外网络功能,仅仅接收master的vrrp状态通告信息,这些路由器被统称为备份路由器(处于backup角色)。当主路由器失效时,处于backup角色的备份路由器将从新进行选举,产生一个新的主路由器进入master角色继续对外服务,整个切换过程对于用户来讲彻底同名
在一个虚拟路由器中,只有处于master角色的路由器会一直发送vrrp数据包,处于backup角色的路由器只接受master发过来的报文信息,用来监控master运行状态,所以,不会发生master抢占的现象,除非它的优先级更高,而当master不可用时,backup也就没法收到master发过来的报文信息,因而就认定master出现故障,接着多台backup就会进行选举,优先级最高的backup将成为新的master,这种选举并进行角色的过程很是快,所以也就保证了服务的持续可用性
5、keepalived的体系结构
keepaived是一个高度模块化的软件,结构简单,但扩展性很强,下图是官方给出的keepalived的体系结构
能够看出来,keepalived的体系结构从总体上分为两层,分别是用户空间层和内核空间层。下面介绍一个keepalived两层结构的详细组成及实现的功能。
内核空间层处于最底层,它包括ipvs和netlink两个模块。ipvs模块是keepalived引入的一个第三方模块,经过ipvs能够实现基于ip的负载均衡集群。ipvs默认包含在lvs集群软件中。
这里有一个误区,因为keepalived能够和ipvs一块儿很好的工做,因此不少初学者都认为keepalived是一个负载均衡的软件,这种理解是错误的
内核模块:
IPVS:主要用于经过IPVS跟lvs进行整合,是lvs的核心模块,跟lvs一块使用的
NETLINK:主要实现一些网络的功能
用户模块:主要用于高可用
checker:检查服务状态
vrrp stack:用于DS高可用
6、keepalived的安装与配置
yum install keepalived
yum安装keepalived默认配置文件在/etc/keepalived/keepalived.conf
配置文件主要分为三类分别是:
(1)全局配置
(2)VRRP配置
(3)LVS配置
keepalived: yum install keepalived vim /etc/keepalived/keepalived.conf ! Configuration File for keepalived #全局配置 global_defs { notification_email { #收件人地址 } #邮件服务器 } VRRP配置DS1 vrrp_instance VI_1 { state MASTER #角色类型MASTER|BACKUP interface ens33 #网卡名称 virtual_router_id 51 #虚拟路由id(须要与BACKUP一致) priority 100 #优先级 advert_int 1 #没1秒检查一次 #nopreempt #非抢占模式 authentication { auth_type PASS #认证类型 主备之间必须同样 auth_pass 1111 #认证密码 主备之间必须同样 } virtual_ipaddress { 192.168.254.250 #虚拟ip(vip) } } #LVS配置 virtual_server 192.168.254.250 80 { delay_loop 3 #健康检查时间间隔 lb_algo rr #负载均衡调度算法 lb_kind DR #负载均衡转发规则 protocol TCP #协议 real_server 192.168.254.18 80 { #要监控的real_server的ip和端口号 weight 1 #权重 TCP_CHECK { #基于tcp协议的检查 connect_timeout 3 #链接时间超时 retry 3 #重连次数 delay_before_retry 3 #重连间隔时间 } } real_server 192.168.254.19 80 { weight 1 TCP_CHECK { connect_timeout 3 retry 3 delay_before_retry 3 } } }
上述配置虽然能够预防RS的单点故障,可是DS的单点故障并无消除,因此须要给DS在加一个备份机器
上述配置中拷贝一份到备机上能够用scp keepalived.conf root@192.168.254.20:/etc/keepalived
须要改写的地方:
state MASTER #角色类型MASTER|BACKUP
priority 55 #优先级(这里须要设置比master机器小的值)