网站建设资讯

NEWS

网站建设资讯

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知识梳理

由上图可以看出,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  # Use VRRP Virtual MAC.        #          vmac_xmit_base                             # VMAC interface         dont_track_primary                        #          track_interface {             eth0             eth2             ...         }         mcast_src_ip                      # 多播组源ip         unicast_src_ip          unicast_peer {                          ...         }         lvs_sync_daemon_interface eth2         garp_master_delay 10                     # secs, default 5         virtual_router_id 51         priority 100                             # 优先级         advert_int 1         authentication {                         # 认证信息模块             auth_type PASS                                      auth_pass 1234                         # 认证密码,建议使用"openssl rand -hex 4"生成8位随机密码         }         virtual_ipaddress {                     # vrrp实例                 / brd  dev  scope  label