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 {

acassen@firewall.loc

failover@firewall.loc

sysadmin@firewall.loc

}

notification_email_from

Alexandre.Cassen@firewall.loc

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

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

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

    一.Keepalived介绍 Keepalived是Linux下一个轻量级的高可用解决方案,它与HeartBeat.RoseHA实现的功能类似,都可以实现服务或者网络的高可用,但是又有差别:Heart ...

  2. 高性能集群软件keepalived

    背景 网络的飞速发展,给网络带宽和服务器性能带来了巨大的挑战,基于互联网的应用系统越来越多地瓶颈出现在服务器端,这就对服务器提出了更高的要求,来保证服务的持续性. 集群简介 定义:集群是一组协同工作的 ...

  3. 服务器集群之keepalived配置高可用(资料)

    2019独角兽企业重金招聘Python工程师标准>>> Linux集群概述 • 根据功能划分为两大类:高可用和负载均衡 • 高可用集群通常为两台服务器,一台工作,另外一台作为冗余,当 ...

  4. Linux下的5款主流高可用集群软件介绍

    Linux集群主要分成三大类:高可用集群(High Availability Cluster).负载均衡集群(Load Balance Cluster).科学计算集群(High Performance ...

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

    Keepalived 集群软件是一个基于VRRP协议来实现的LVS(四层协议)服务高可用方案,可以利用避免单节点故障.LVS服务需要有2台服务器运行Keepalived服务,一台为主服务器(MASTE ...

  6. 基于开源软件构建高性能集群NAS系统

    大数据时代的到来已经不可阻挡,面对数据的爆炸式增长,尤其是半结构化数据和非结构化数据,NoSQL存储系统和分布式文件系统成为了技术浪潮,得到了长足的发展.非结构化数据目前呈现更加快速的增长趋势,IDC ...

  7. 了解集群、集群的分类、常用的集群软硬件及选型介绍(内附详细图解)

    Table of Contents 一.集群简介 二.集群的七大优点 三.集群的分类 四.常用的集群软硬件及选型介绍 一.集群简介 集群就是一组(若干个)相互独立的计算机,利用高速通信网络组成的一个较 ...

  8. LinuxService- MPI实现高性能集群

    1 集群介绍 1.1 集群概念 集群(Cluster):是指由一批具备相同或类似功能的物品组成的,提供更大.更强.更稳定功能的这样一种组合.集群通常可以定义为两台或两台以上相互独立的计算机,对外表现为 ...

  9. Linux 高可用(HA)集群之keepalived详解

    大纲 一.前言 二.Keepalived 详解 三.环境准备 四.LVS+Keepalived 实现高可用的前端负载均衡器 一.前言 这篇文章是前几篇文章的总结,我们先简单的总结一下我们前面讲解的内容 ...

最新文章

  1. 2021年大数据Flink(三十八):​​​​​​​Table与SQL ​​​​​​案例五 FlinkSQL整合Hive
  2. Divide Two Integers
  3. 手动启动 oracle 服务
  4. java实验指导书(实验四)答案_java程序设计实验指导书答案
  5. 光纤收发器相比其他数据交换器有哪些优势?
  6. 深度学习(三)之LSTM写诗
  7. python贪吃蛇的实验报告_贪吃蛇游戏程序设计实验报告.doc
  8. 初中计算机考试操作题免费,初中信息技术考excel操作题.doc
  9. 计算机的开机自检是由什么完成的,什么是开机自检 取消开机自检方法【方法详解】...
  10. xp镜像文件的product key
  11. crucible VS gerrit
  12. 【面试官一定会问的几题】视觉过关挑战赛 - 附源码
  13. 教资高中计算机科目,中学信息技术考试科目
  14. Unable to boot device because it cannot be located on disk. Domain: NSPOSIXErrorDomain
  15. iOS11.3 beta5专为提升苹果X速度?网友:iPhone6S的我们怎么办
  16. arduino编程语言Wiring参考手册API
  17. C语言课间程序设计实践报告
  18. 模块化:ES Module与commonJS
  19. Excel 表单元格数字显示为#NAME!
  20. R 实现分层抽样教程

热门文章

  1. 一个网络管理员应该掌握的mysql管理命令
  2. Oracle常用工具
  3. 谈一谈周公所理解的面试
  4. 第一次使用Android Studio时你应该知道的一切配置(三):gradle项目构建
  5. ActiveMQ入门教程(二) - ActiveMQ的安装
  6. 如何制作在线参考手册
  7. Ethereum 君士坦丁堡安全漏洞对 FOD 的影响
  8. CentOS7.3下Jenkins+docker自动化部署solo站点
  9. jQuery异步上传文件
  10. eclipse(myeclipse) JavaWeb项目导入Idea2017