高性能集群软件Keepalived的介绍以及安装与配置

Keepalived介绍:

Keepalived是Linux下一个轻量级的高可用解决方案;起初是为LVS设计的,专门用来监控集群系统中各个服务节点的状态。它根据TCP/IP参考模型的第三、第四和第五层交换机机制检测每个服务节点的状态,如果某个服务节点出现异常,或工作出现故障,Keepalived将检测到,并将出现故障的服务节点从集群系统中剔除,而在故障节点恢复正常后,Keepalived又可以自动将此服务节点重新加入服务器集群中,这些工作全部自动完成,不需要人工干涉,需要人工完成的只是修复出现故障的服务节点。

Keepalived后来又加入了VRRP的功能,VRRP(Virtual Router Redundancy Protocol,虚拟路由器冗余协议)出现的目的是解决静态路由出现的单点故障问题,通过VRRP可以实现网络不间断稳定运行。因此,Keepalived一方面具有服务器状态检测和故障隔离功能,另一方面也具有HA cluster 功能。

VRRP协议与工作原理

VRRP,它是一种主备模式的协议,通过VRRP可以在网络发生故障时透明地进行设备切换而不影响主机间的数据通信;这其中涉及两个概念:物理路由器和虚拟路由器。

VRRP可以将两台或多台物理路由器设备虚拟成一个虚拟路由器,这个虚拟路由器通过虚拟IP(一个或多个)对外提供服务,而在虚拟路由器内部是多个物理路由器协同工作,同一时间只有一台物理路由器对外提供服务,这台物理路由器被称为主路由器(处于MASTER角色)。一般情况MASTER由选举算法产生,它拥有对外服务的虚拟IP,提供各种网络功能,如ARP请求、ICMP、数据转发等。而其他物理路由器不拥有对外的虚拟Ip,也不提供对外网络功能,仅仅接收MASTER的VRRP状态通告信息,这些路由器被统称为备份路由器(处于BACKUP角色)。当主路由器失效时,处于BACKUP角色的备份路由器将重新进行选举,产生一个新的主路由器进入MASTER角色继续提供对外服务。

每个虚拟路由器独有一个唯一标识,称为VRID,一个VRID与一组IP地址构成了一个虚拟路由器。在VRRP协议中,所有的报文都是通过IP多播形式发送的,而在一个虚拟路由器中,只有处于MASTER角色的路由器会一直发生VRRP数据包,处于BACKUP角色的路由器只接收MASTER发送过来的报文信息,用来监控MASTER运行状态,因此,不会发生BACKUP抢占的现象,除非它的优先级更高。而当MASTER出现故障,多台BACKUP就会进行选举,优先级最高的BACKUP成为新的MASTER,这种选举并进行角色切换的过程非常快,因而保证了服务的持续可用性。

Keepalived工作原理

keepalive运行机制如下:

        在网络层,运行着4个重要的协议:互联网协议IP、互联网控制报文协议ICMP、地址转换协议ARP以及反向地址转换协议RARP。Keepalived在网络层采用的最常见的工作方式是通过ICMP协议向服务器集群中的那个节点发送一个ICMP数据包(类似于ping实现的功能),如果某个节点没有返回响应数据包,那么认为此节点发生了故障,Keepalived将报告次节点失效,并从服务器集群中剔除故障节点。

在传输层,提供了两个主要的协议:传输控制协议TCP和用户数据协议UDP。传输控制协议TCP可以提供可靠的数据传输服务、Ip地址和端口代表TCP的一个连接端。要获得TCP服务,需要在发送机的一个端口上和接收机的一个端口上建立连接,而Keepalived在传输层就是利用TCP协议的端口连接和扫描技术来判断集群点是否正常的。比如,对于常见的WEB服务默认的80端口、SSH服务默认的22端口等,Keepalived一旦在传输层探测到这些端口没有响应数据返回,就认为这些端口发生异常,然后强制将此端口对应得节点从服务器集群组中移除。

在应用层,可运行FTP、TELNET、SMTIP、DNS等各种不同类型的高层协议,Keepalived的运行方式也更加全面化和复杂化,用户可以通过自定义Keepalived的工作方式;例如:用户可以通过编写程序来运行keepalived。而keepalived将根据用户的设定检测各种程序或服务是否运行正常,如果Keepalived的检测结果与用户设定不一致时,Keepalived将把对应的服务从服务器中移除。

Keepalived的组件:

核心组件:

VRRP Stack:实现HA集群中失败切换(Failover)功能。Keepalived通过VRRP功能能

再结合LVS负载均衡软件即可部署一个高性能的负载均衡集群系统。

ipvs wrapper:可以将设置好的IP VS规则发送到内核空间并提交给IP VS模块,最终实

现 IP VS模块的负载均衡功能。

checkers:这是Keepalived 最基础的功能,也是最主要的功能,可实现对服务器运行状

态检测和故障隔离。

HA Cluster的配置前提:

(1) 各节点时间必须同步;

ntp, chrony

(2) 确保iptables及selinux不会成为阻碍;

(3) 各节点之间可通过主机名互相通信(对KA并非必须);

建议使用/etc/hosts文件实现;

(4) 确保各节点的用于集群服务的接口支持MULTICAST通信;

D类:224-239;

Keepalived安装与配置:

Centos6.4以后版本可以直接yum安装:

yum install keepalived

程序环境:

主配置文件:/etc/keepalived/keepalived.conf

主程序文件:/usr/sbin/keepalived

Unit File:keepalived.service

Unit File的环境配置文件:/etc/sysconfig/keepalived

根据配置文件所实现的功能,将Keepalived配置分三类:

Global Configuration

 VRRPD 配置、LVS配置

全局配置以”global_defs”作为标识,在“global_defs”区域内的都是

全局配置选项:

global_defs {

notification_email {

[email protected]

[email protected]

[email protected]

}

notification_email_from

[email protected]

smtp_server 192.168.200.1

smtp_connect_timeout 30

router_id LVS_DEVEL

vrrp_mcast_group4 224.110.129.18

}

notification_email :用于设置报警邮件地址,可以设置多个,每行一个。注意,如果要开启邮                                                         件报警,需要开启本机的Sendmail服务。

notification_email_from :用于设置邮件的发送地址,真正的能发邮件的地址。

smtp_server:用于设置邮件的smtp server地址

smtp_connect_timeout:设置smtp server的超时时间

router_id :表示运行keepalived服务器的一个标识,是发邮件时显示在邮件主题中的信息

vrrp_mcast_group4 :多播地址段

  VRRP配置段主要用来配置节点角色(主或从)、绑定的网络接口、节点间验证机制、集群                     服务IP等。

vrrp_instance VI_1 {

state MASTER

interface eth0

virtual_router_id 51

priority 100

advert_int 1

authentication {

auth_type PASS

auth_pass 1111

}

virtual_ipaddress {

192.168.200.16

192.168.200.17

192.168.200.18

}

track_interface {

eth0

eth1

}

 VRRP 配置以” vrrp_instance“作为标识,包含了若干配置选项:

vrrp_instance:是VRRP实例开始的标识,后跟VRRP实例名称

state:用于指定Keepalived的角色,MASTER表示此主机是服 务器,BAVKUP表示此                                                  主机是备用服务器。

                    interface:虚拟IP配置指定的接口

virtual_router_id:虚拟路由标识,它是一个数字,同一个 VRRP配置段的唯一标识,                                                         即在同一个vrrp_instance下,MASTER和BACKUP必须是一致的。

priority:用于定义节点优先级,数字越大优先级越高。

advert_int:设定MASTER和BACKUP主机之间同步检查的时间间隔,单位是秒。

authentication:用于设定节点间通信验证类型和密码,验证类型主要有PASS(简单字                                       符串认证,支持前8位,可以用:openssl rand -base64 8 获取随机密码)和AH两                                          种,在一个vrrp_instance下,MASTER和BACKUP必须使用相同的密码才能正常通信。

virtual_ipaddress:用于设置虚拟IP地址(VIP)。

track_interface:配置要监控的网络接口,一旦接口出现故障,则转为FAULT状态;

nopreempt:定义工作模式为非抢占模式;可以实现主节点故障恢复后不再切回到主节                                                        点,让服务一直在备用节点工作,直到备用节点出现故障才会进行切换。在使                                                   用不抢占时,只能在”state“状态为BACKUP的节点上设置,而且这个节点的优                                                    先级必须高于其他节点。

preempt_delay 300:抢占式模式下,节点上线后触发新选举操作的延迟时长;

定义通知脚本

notify_master:指定当Keepalived进入MASTER状态时要执行的脚本,这个脚本可以是一个状                          态报警脚本,也可以是一个服务管理脚本。Keepalived允许脚本出入参数,因此灵活性很强。

notify_backup:当Keepalived进入BACKUP状态时要执行的脚本,这个脚本可以是一个状态报警                              脚本,也可以是一个服务管理脚本。

notify_fault:指定当Keepalived进入FAULT状态时要执行的脚本,脚本功能与前两个类似。

notify <STRING>|<QUOTED-STRING>:通用格式的通知触发机制,一个脚本可完成以上三种                           状态的转换时的通知;

实验: 单主配置示例

   环境:

两台主机分别是:172.16.252.18/16(node1) 配置BACKUP

172.16.252.19/16 (node2) 配置MASTER

两台主机分别配置:/etc/keepalived/keepalived.conf

两台主机:systemctl restart keepalived

启动之后,可以在MASTER的主机上查看:

  ip     a     l

下图中: 可以看出MASTER主机,一直向多播地址发送信息.

   模拟MASTER主机宕机 :

iptables -A OUTPUT -d 224.110.129.18 -j REJECT

systemctl stop keepalived

  BACKUP主机上:显示虚拟地址加进来了

ip a l 可以查看到虚拟地址了。如果MASTER主机再启动后,由于优先级高,VIP虚拟地址又被                        抢回来了!

双主模型的配置:

所谓双主模型对于VRRP来讲还是单主,所不同的是在同一个接口上,配置了多个虚拟路由器。

在上个实验基础上配置:

在note2主节点上配置:

同一个接口上同一组物理服务器上配置第二个虚拟路由器:

vim     /etc/keepalived/keepalived.conf

在原来基础上添加下图配置段:

  同理在note1节点上配置:

                     测试效果:

note2: systemctl stop keepalived.service

note1: systemctl start keepalived.service

同理:把note2主机启动起来,查看效果,由于优先级高,会拿走一个地址;而note1主机就一个虚拟地址。

通知脚本的使用方式:

脚本的调用方法:

notify_master “/etc/keepalived/notify.sh master”

notify_backup “/etc/keepalived/notify.sh backup”

notify_fault “/etc/keepalived/notify.sh fault”

在单主模型的实验环境下:

在note1和note2节点上,分别执行以下操作:

cd /etc/keepalived/

vim notify.sh

note1、note2两台主机上:

systemctl stop keepalived

vim /etc/keepalived/keepalived.conf

当note1备用节点先启动时,它会变成MASTER,虚拟地址被添加:

systemctl restart keepalived.service

当再启动note2时,它从没有启动到变成主节点,而当前的note1变成了备用节点:

note2: systemctl restart keepalived.service

note1上查看:

root 又收到一份邮件:

而note2主机上:变成了主节点,虚拟地址被添加了:

Keepalived 简单配置,以及通知脚本的运用就介绍到这里。之后的高级集群架构,后期会继续整理,更新!

本文为马哥Linux运维学员原创,首发于178linux.com

时间: 2024-10-06 15:58:57

高性能集群软件Keepalived的介绍以及安装与配置的相关文章

高性能集群软件Keepalived之基础知识篇

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

高性能集群软件Keepalived之安装配置篇

一.Keepalived的安装过程 Keepalived的安装非常简单,下面通过源码编译的方式介绍下Keepalived的安装过程.首先打开Keepalived的官方网址http://www.keepalived.org,从中可以下载到各种版本的Keepalived,这里下载的是keepalived-1.2.12.tar.gz.以操作系统环境Centos6.3为例,Keepalived安装步骤如下: [[email protected] app]#tar zxvf keepalived-1.2.

高性能集群软件-----Keepalived 安装配置

keepalived介绍: Keepalived是Linux下轻量级的高可用的解决方案.Keepalived主要是通过虚拟路由冗余来实现高可用功能,具有部署和使用非常简单,只需一个配置文件即可.它是根据TCP/IP参考模型的第三,第四和第五层交换机检测到每个服务接点的状态,如果某个服务节点出现异常,或者出现故障,keepalived将检测到,并将出现故障的服务节点从集群中剔除,而在故障节点恢复后,keepalived又可以自动将此服务节点重新加入服务器集群中,这些工作全部自动完成,不需要人工干涉

HA 集群软件 keepalived 详解3

在前两篇文章中我们队keepalived做了相关介绍,这里环境还是和之前保持的一样,这次我们主要介绍vrrp_script模块,在上次介绍keepalived基础HA功能时用到了vrrp_script这个模块,此模块专门用于对集群中服务自己进行监控,与此模块一起使用的还有track_script模块,在此模块中可以引用监控脚本,命令组合,shell语句等,以实现对服务端口多方面的监控,track_script模块主要用来调用vrrp_script模块使keepalived执行对集群服务资源的检查

Hadoop集群中Hbase的介绍、安装、使用

导读 HBase – Hadoop Database,是一个高可靠性.高性能.面向列.可伸缩的分布式存储系统,利用HBase技术可在廉价PC Server上搭建起大规模结构化存储集群. 一.Hbase简介 HBase是Google Bigtable的开源实现,类似Google Bigtable利用GFS作为其文件存储系统,HBase利用Hadoop HDFS作为其文件存储系统:Google运行MapReduce来处理Bigtable中的海量数据,HBase同样利用Hadoop MapReduce

Linux系统高可用集群软件之Keepalived

Keepalived 集群软件是一个基于VRRP协议来实现的LVS(四层协议)服务高可用方案,可以利用避免单节点故障.LVS服务需要有2台服务器运行Keepalived服务,一台为主服务器(MASTER),一台为备份服务器(BACKUP),但是对外只有一个虚拟IP,主服务器会发送特定的消息给备份服务器,当备份服务器收不到这个消息的时候,备份服务器认为主服务器宕机并会接管虚拟IP提供服务,从而保证了服务的高可用性. 1.环境说明 系统:Centos 6.5 64位 软件:Keepalived ip

LVS+Keepalived+Squid+Nginx+MySQL主从 高性能集群架构配置

原文地址:LVS+Keepalived+Squid+Nginx+MySQL主从 高性能集群架构配置 作者:gron 原文链接:http://www.linuxidc.com/Linux/2012-07/65547.htm 架构图 先进行优化 vi /etc/sysctl.conf   # 编辑sysctl.conf文件添加以下内容 net.ipv4.tcp_rmem = 4096 87380 4194304 net.ipv4.tcp_wmem = 4096 65536 4194304 net.c

LVS+Keepalived+Squid+Nginx+MySQL主从高性能集群架构部署方案

方案一,在tomcat的workers.properties里面配置相关条件 worker.tomcat.lbfactor=50 worker.tomcat.cachesize=10 worker.tomcat.cache_timeout=600 worker.tomcat.socket_keepalive=1 worker.tomcat.socket_timeout=300 Linux内核优化: vi /etc/sysctl.conf   # 编辑sysctl.conf文件添加以下内容net.

keepalived+lvs实现调度、高可用、高性能集群

6.keepalived+lvs实现调度.高可用.高性能集群 Keepalived的作用是: 检 测web服务器的状态,如果有一台web服务器死机,或工作出现故障,Keepalived将检测到,并将有故障的web服务器从系统中剔除,当web服 务器工作正常后Keepalived自动将web服务器加入到服务器群中,这些工作全部自动完成,不需要人工干涉,需要人工做的只是修复故障的web服务 器       (1)安装keepalived     # ./configure --prefix=/usr