keepalived知识梳理-创新互联
文章大纲
创新互联公司-专业网站定制、快速模板网站建设、高性价比南陵网站开发、企业建站全套包干低至880元,成熟完善的模板库,直接使用。一站式南陵网站制作公司更省心,省钱,快速模板网站建设找我们,业务覆盖南陵地区。费用合理售后完善,十载实体公司更值得信赖。前言
VRRP介绍
Keepalived详解
前言
Keepalived 是一个基于VRRP协议来实现的LVS服务高可用方案,可以利用其来避免单点故障。我们都知道,在一个LVS集群中,虽然LVS能够对客户端的请求基于IP进行调度,但是LVS自身并不能提供高可靠性,即不能进行容错。并且LVS只能将客户端的服务基于某种调度算法调度至后端服务器进行处理,却不能检查后端服务器的状态,所以我们需要一个工具能够实现这些功能,而keepalived刚好能够提供这些功能,在keepalived与LVS配合组成高可用集群中(HAC),至少需要2台服务器运行Keepalived,一台为主服务器(MASTER),一台为备份服务器(BACKUP),但是对外表现为一个虚拟IP(即LVS中的VIP),主服务器会发送特定的消息给备份服务器,当备份服务器收不到这个消息的时候,即主服务器宕机的时候, 备份服务器就会接管虚拟IP,继续提供服务,从而保证了高可用性。Keepalived是VRRP的完美实现,因此在介绍keepalived之前,先介绍一下VRRP的原理。
VRRP介绍
1 VRRP概念
VRRP是英文”Virtual Router Redundancy Protocol”的缩写,即虚拟路由冗余协议,他是一种容错协议,它保证当主机的下一跳路由器出现故障时,由另一台路由器来代替出现故障的路由器进行工作,从而保持网络通信的连续性和可靠性。VRRP具有如下优点:
简化网络管理。在具有多播或广播能力的局域网(如以太网)中,借助VRRP 能在某台设备出现故障时仍然提供高可靠的缺省链路,有效避免单一链路发生故障后网络中断的问题,而无需修改动态路由协议、路由发现协议等配置信息,也无需修改主机的默认网关配置。
适应性强。VRRP 报文封装在 IP 报文中,支持各种上层协议。
网络开销小。VRRP 只定义了一种报文——VRRP 通告报文,并且只有处于Master 状态的路由器可以发送 VRRP 报文。
2 VRRP工作过程
1) 虚拟路由器中的路由器根据优先级选举出 Master。Master 路由器通过发送免费 ARP 报文,将自己的虚拟 MAC 地址通知给与它连接的设备或者主机,从而承担报文转发任务;
2) Master 路由器周期性发送 VRRP 报文,以公布其配置信息(优先级等)和工作状况;
3) 如果 Master 路由器出现故障,虚拟路由器中的 Backup 路由器将根据优先级重新选举新的 Master;
4) 虚拟路由器状态切换时,Master 路由器由一台设备切换为另外一台设备,新的 Master路由器只是简单地发送一个携带虚拟路由器的 MAC 地址和虚拟 IP地址信息的免费 ARP报文,这样就可以更新与它连接的主机或设备中的ARP 相关信息。网络中的主机感知不到Master 路由器已经切换为另外一台设备。
5) Backup 路由器的优先级高于 Master 路由器时,由 Backup 路由器的工作方式(抢占方式和非抢占方式)决定是否重新选举 Master。
终上所述,为了保证Master路由器和Backup路由器能够协调工作,VRRP需要实现以下功能:
Master 路由器的选举;
Master 路由器状态的通告;
同时,为了提高安全性,VRRP 还提供了认证功能;
3 MSTER选举方式
VRRP根据优先级来确定虚拟路由器中每台路由器的角色(Master路由器或Backup路由器)。优先级越高,则越有可能成为Master路由器。初始创建的路由器工作在Backup状态,通过VRRP报文的交互获知虚拟路由器中其他成员的优先级:
如果 VRRP 报文中 Master 路由器的优先级高于自己的优先级,则路由器保持在 Backup 状态;
如果 VRRP 报文中 Master 路由器的优先级低于自己的优先级,采用抢占工作方式的路由器将抢占成为 Master 状态,周期性地发送 VRRP 报文,采用非抢占工作方式的路由器仍保持 Backup 状态;
如果在一定时间内没有收到 VRRP 报文,则路由器切换为 Master
VRRP优先级的取值范围为0到255(数值越大表明优先级越高),可配置的范围是1到254,优先级0为系统保留给路由器放弃Master位置时候使用,255则是系统保留给IP地址拥有者使用。当路由器为IP地址拥有者时,其优先级始终为255。因此,当虚拟路由器内存在IP地址拥有者时,只要其工作正常,则为Master路由器。
4 VRRP的三种认证方式
无认证:不进行任何 VRRP 报文的合法性认证,不提供安全性保障。
简单字符认证:在一个有可能受到安全威胁的网络中,可以将认证方式设置为简单字符认证。发送 VRRP 报文的路由器将认证字填入到 VRRP 报文中,而收到 VRRP 报文的路由器会将收到的 VRRP 报文中的认证字和本地配置的认证字进行比较。如果认证字相同,则认为接收到的报文是合法的 VRRP 报文;否则认为接收到的报文是一个非法报文。
MD5 认证:在一个非常不安全的网络中,可以将认证方式设置为 MD5 认证。发送 VRRP 报文的路由器利用认证字和 MD5 算法对 VRRP 报文进行加密,加密后的报文保存在 Authentication Header(认证头)中。收到 VRRP报文的路由器会利用认证字解密报文,检查该报文的合法性。
Keepalived
1 keepalived工作原理
Keepalived是基于vrrp的原理开发的可实现高可用的服务软件,并且就有health-check功能,可以使用它提供双机浮动的vip(vrrp虚拟路由功能),这样可以简单实现一个双机热备高可用功能;keepalived在VRRP虚拟路由冗余协议为基础实现高可用,也可以认为是实现路由器高可用的协议,即将N台提供相同功能的路由器组成一个路由器组,这个组里面有一个master和多个backup,master上面有一个对外提供服务的vip(该路由器所在局域网内其他机器的默认路由为该vip),master会发组播,当backup收不到VRRP包时就认为master宕掉了,这时就需要根据VRRP的优先级来选举一个backup当master。这样的话就可以保证路由器的高可用了。下面是官方给出的KeepAlived组件图
由上图可以看出,keepalived也是模块化设计,不同模块实现不同的功能,它主要有三个模块,分别是core、check和VRRP,其中:
core模块:为keepalived的核心组件,负责主进程的启动、维护以及全局配置文件的加载和解析;
check模块:负责健康检查,包括常见的各种检查方式;
VRRP模块:是来实现VRRP协议的。
system call:系统调用
watch dog:监控check和vrrp进程的管理进程,他是用来对check和vrrp进程实现高可用的。
checkers:负责检测器子进程的健康状态,当其检测到master上的服务不可用时则通告vrrp将其转移至backup服务器上。
2 keepalived作用
Keepalived主要用作RealServer的健康状态检查以及LoadBalance主机和BackUP主机之间failover的实现。Keepalived的作用是检测web服务器的状态,如果有一台web服务器死机,或工作出现故障,Keepalived将检测到,并将有故障的web服务器从系统中剔除,当web服务器工作正常后Keepalived自动将web服务器加入到服务器群中,这些工作全部自动完成,不需要人工干涉,需要人工做的只是修复故障的web服务器。
3 keepalived配置文件
Keepalived是一个相对轻量级的服务,而且与LVS配合的非常好,它只有一个配置文件,主要包括global_defs、static_ipaddress、static_routes、VRRP_script、VRRP_instance和virtual_server的设置,而这个这些配置又可分为三大类:全局配置,VRRP的配置以及LVS配置。
1)全局配置
global_defs { # Block id notification_email { admin@example1.com # 指明接收keepalived信息的邮箱 ... } notification_email_from admin@example.com # 邮箱名 smtp_server 127.0.0.1 # 收邮件的主机地址 smtp_connect_timeout 30 # integer, seconds router_id my_hostname # 一个标记该主机的字符串,可以不是主机名,建议使用主机名 vrrp_mcast_group4 224.0.0.18 # 多播组地址, 默认是 224.0.0.18 vrrp_mcast_group6 ff02::12 # ipv6多播组地址, 默认是 ff02::12 enable_traps # 启用SNMP陷阱,可以不启用 }2)VRRP配置
VRRPD配置包括三个类:VRRP同步组(synchroization group)、VRRP实例(VRRP Instance)、VRRP脚本
******VRRP instance(s)******* # describes the moveable IP for each instance of a group in vrrp_sync_group. Here are described two IPs # (on inside_network and on outside_network), on machine "my_hostname", which belong to the group VG_1 and which # will transition together on any state change. vrrp_instance inside_network { state MASTER # interface eth0 # use_vmac