首页 > 其他分享 >keepalived原理

keepalived原理

时间:2022-12-27 23:31:52浏览次数:64  
标签:优先级 keepalived VRRP 虚拟 Master 原理 路由器

​http://zkchang.blog.51cto.com/10574636/1706998​

 

一.keepalived和其工作原理:

 

keepalived是一个类似于Layer2,4,7交换机制的软件。是Linux集群管理中保证集群高可用的一个服务软件,其功能是用来防止单点故障。

 

keepalived的工作原理:

         keepalived是基于VRRP协议实现的保证集群高可用的一个服务软件,主要功能是实现真机的故障隔离和负载均衡器间的失败切换,防止单点故障。在了解keepalived原理之前先了解一下VRRP协议。

 

VRRP协议:Virtual Route Redundancy Protocol虚拟路由冗余协议。是一种容错协议,保证当主机的下一跳路由出现故障时,由另一台路由器来代替出现故障的路由器进行工作,从而保持网络通信的连续性和可靠性。在介绍VRRP之前先介绍一些关于VRRP的相关术语:

 

虚拟路由器:由一个 Master 路由器和多个 Backup 路由器组成。主机将虚拟路由器当作默认网关。

VRID:虚拟路由器的标识。有相同 VRID 的一组路由器构成一个虚拟路由器。

Master 路由器:虚拟路由器中承担报文转发任务的路由器。

Backup 路由器: Master 路由器出现故障时,能够代替 Master 路由器工作的路由器。

虚拟 IP 地址:虚拟路由器的 IP 地址。一个虚拟路由器可以拥有一个或多个IP 地址。

IP 地址拥有者:接口 IP 地址与虚拟 IP 地址相同的路由器被称为 IP 地址拥有者。

虚拟 MAC 地址:一个虚拟路由器拥有一个虚拟 MAC 地址。虚拟 MAC 地址的格式为 00-00-5E-00-01-{VRID}。通常情况下,虚拟路由器回应 ARP 请求使用的是虚拟 MAC 地址,只有虚拟路由器做特殊配置的时候,才回应接口的真实 MAC 地址。

 

优先级: VRRP 根据优先级来确定虚拟路由器中每台路由器的地位。

非抢占方式:如果 Backup 路由器工作在非抢占方式下,则只要 Master 路由器没有出现故障,Backup 路由器即使随后被配置了更高的优先级也不会成为Master 路由器。

抢占方式:如果 Backup 路由器工作在抢占方式下,当它收到 VRRP 报文后,会将自己的优先级与通告报文中的优先级进行比较。如果自己的优先级比当前的 Master 路由器的优先级高,就会主动抢占成为 Master 路由器;否则,将保持 Backup 状态。

 

虚拟路由示意图:

              

keepalived原理_优先级

 

 

      VRRP将局域网内的一组路由器划分在一起,形成一个VRRP备份组,它在功能上相当于一台路由器的功能,使用虚拟路由器号进行标识(VRID)。虚拟路由器有自己的虚拟IP地址和虚拟MAC地址,它的外在变现形式和实际的物理路由完全一样。局域网内的主机将虚拟路由器的IP地址设置为默认网关,通过虚拟路由器与外部网络进行通信。

 

      虚拟路由器是工作在实际的物理路由器之上的。它由多个实际的路由器组成,包括一个Master路由器和多个Backup路由器。 Master路由器正常工作时,局域网内的主机通过Master与外界通信。当Master路由器出现故障时, Backup路由器中的一台设备将成为新的Master路由器,接替转发报文的工作。(路由器的高可用)

 

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。

VRRP优先级的取值范围为0到255(数值越大表明优先级越高)

 

================================================================

 

keepalived的工作原理就是基于VRRP实现的,keepalived的体系结构图如下:


             

keepalived原理_IP_02

 

在这个机构图中,处于内核的IPVS和NETLINK,其中NETLINK是提供高级路由及其他相关的网络功能,如果在负载均衡器上启用iptables/netfilter,将会直接影响它的性能。对于图中不同模块功能的介绍如下:

 

         - VRRP Stack 负责负载均衡器之间的失败切换FailOver;//LVS中负责DR调度器组的

 

         - Checkers 负责检查调度器后端的Real server 或者 Upstream Server的健康状况; // 检查RS的状态,决定是否将其剔除

   - WatchDog 负责监控checkers和VRRP进程的状况;

   - IPVS wrapper 用来发送设定的规则到内核IPVS;

   - Netlink Reflector 用来设定VRRP的vip地址。// VIP也有‘人’管

 

keepalived运行时,会启动3个进程,分别为:core(核心进程),check和vrrp 

    - core:负责主进程的启动,维护和全局配置文件的加载;

    - check:负责健康检查

    - vrrp:用来实现vrrp协议

 

总结:在vrrp协议的基础上实现了服务器主机的负载均衡,VRRP负责调度器之间的高可用。

 

Keepalived 配置文件介绍:

 

              在yum安装好keepalived之后,keepalived会产生一个配置文件/etc/keepalived/keepalived.conf ,配置文件包含了三个段:

  全局定义段、VRRP实例定义段、虚拟服务器定义段。

global_defs {
notification_email { 指定keepalived在发生切换时需要发送email到的对象。
[email protected]
}
notification_email_from [email protected] #指定发件人
smtp_server smtp.163.com #指定smtp服务器地址
smtp_connect_timeout 3 #指定smtp连接超时时间
router_id LVS_DEVEL #运行keepalived的一个标识
}
vrrp_sync_group VG_1{ #监控多个网段的实例
group{
inside_network #实例名
outside_network }
notify_master /path/xx.sh #指定当切换到master时,执行的脚本
netify_backup /path/xx.sh #指定当切换到backup时,执行的脚本
notify_fault "path/xx.shVG_1" #故障时执行的脚本
notify /path/xx.sh #脚本所在目录
smtp_alert #使用global_defs中提供的邮件地址和smtp服务器发送邮件通知}
#VRRP实例定义段
vrrp_instance VI_1 {
state MASTER #指定哪个为master,哪个为backup
interface eth0 #设置实例绑定的网卡
virtual_router_id 51 #VRID标记
priority 100 #优先级,高优先级的DR会抢占为master (默认为抢占模式)
advert_int 1 #检查间隔,1秒
authentication { #设置认证
auth_type PASS #认证方式
auth_pass 1111 #认证字符串(使用 openssl rand -hex 6生成随机字符串)
}
virtual_ipaddress { #设置VIP
<IPADDR>/<MASK> brd <IPADDR> dev <STRING>scope <SCOPE> label <LABEL>
192.168.200.17/24 deveth1
192.168.200.100/24 deveth2 label eth2:1
}
sorry_server 127.0.0.1 80 #web服务器全部失败,可以指定Sorry web
}
virtual_server 192.168.200.100 443 {
delay_loop 6 #健康检查时间间隔,单位秒
lb_algo rr #负载调度算法,支持的算法:rr|wrr|lc|wlc|lblc|sh|dh
lb_kind DR #LVS的类型:有NAT|DR|TUN
nat_mask255.255.255.0 #子网掩码
persistence_timeout50 #会话保持时间,单位秒(可以适当延长时间以保持session)
protocol TCP #转发协议类型,有TCP和UDP两种
real_server 192.168.201.100443 { #定义RS 服务
weight 1#权重
#inhibit_on_failure #当服务器健康检查失效时,将weight设置为0不是直接从ipvs中删除
#notify_up <STRING>|<QUOTED-STRING>#Server启动时执行的脚本
#notify_down <STRING>|<QUOTED-STRING>#Server down时执行的脚本
#后端RS服务器的检查 (HTTP_GET 和SSL_GET):
SSL_GET {
url { #检查url,可以指定多个,status_codeand digest
path /
digest ff20ad #或者status_code 200 ....
}
connect_timeout 3 #连接超时时间
nb_get_retry 3 #重连次数
delay_before_retry 3 #重连间隔时间
}
#也可以通过TCP_CHECK判断RealServer的健康状况:
}
}



标签:优先级,keepalived,VRRP,虚拟,Master,原理,路由器
From: https://blog.51cto.com/aaronthon/5973748

相关文章

  • SSL/TLS协议原理与证书签名多种生成方式实践指南
    本章目录:0x00前言简述CA认证原理PKI公钥基础设施0x01自签名SSL证书生成1.在线(脚本)生成2.OpenSSL生成3.CFSSL生成0x03cfssl使用实践0x00前言简述简单快速了解​​......
  • SSH连接原理及ssh-key
    第1章SSH服务1.1ssh介绍SSH是SecureShellProtocol的简写,由IETF网络工作小组(NetworkWorkingGroup)制定:在进行数据传输之前,SSH先对联机数据包通过加密技术进行加密......
  • RAID的原理与搭建
    一、RAID概念磁盘阵列(RedundantArraysofIndependentDisks,RAID)有“独立磁盘构成的具有冗余能力的阵列”之意。RAID是由很多价格较便宜的磁盘组合成的一个容量巨大的磁盘......
  • 霍夫(圆)变换(hough Transform/hough cirlce Transform)原理和实现
    一、霍夫(圆)变换的广泛使用和简要历史霍夫变换是一种​​特征​​​提取方法,被广泛应用在图像处理和计算机视觉应用中。霍夫变换是用来辨别找出物件中的特征,例如:线条。他的......
  • 容斥原理
    \(\mathcalPreface\)可能容斥原理的公式等还是\(AK\IOI\)的巨佬讲得详细,大家可以看看这篇博客。这篇博客把我写得手废了。我这个里这接上公式:\[|\bigcup\limits_{i......
  • 【Mybatis技术专题】MybatisPlus自带强大功能之多租户插件实现原理和实战分析(3)
    ​​http://mp.baomidou.com/guide/tenant.html​​前提介绍一般的程序应用当使用者访问不同,并且进入相对应的程序页面,则会把用户相关数据传输到后台这里。在传输的时候需要......
  • 【基于物理的渲染(PBR)白皮书】(二) PBR核心理论与渲染光学原理总结
    这是【基于物理的渲染(PBR)白皮书】系列的第二篇文章。按照既定规划,本文将主要关注基于物理的渲染的核心理论与渲染的光学原理,以在整个系列中起到理论支柱的作用。从本文内容......
  • docker技术原理
    一、docker技术原理简介    集装箱这是现实生活中大家都熟知的,它的主要作用就是存放货物,彼此独立开来,相互隔离。docker也是运用了集装箱思想,可以把我们工作中常用......
  • Kubernetes Pod原理(十六)
    一、PodKubernetes最基本的调度单元前面我们了解了Kubernetes的基本架构,以及如何使用资源清单在集群中部署一个应用。我们也了解到了Pod是Kubernetes集群中最基本......
  • 【视频】向量自回归VAR数学原理及R软件经济数据脉冲响应分析实例|附代码数据
    原文链接:http://tecdat.cn/?p=9368最近我们被客户要求撰写关于向量自回归VAR的研究报告,包括一些图形和统计输出。向量自回归(VAR)是一种用于多变量时间序列分析的统计......