Keepalived工作原理

前文Keepalived简单介绍,知道Keepalived两大重要功能:基于LVS的负载均衡和基于VRRP的故障切换。从本质上讲Keepalived是提供数据流转发与服务器健康检查并具备故障切换的高可用路由,而数据转发与健康检查是对LVS功能的扩展和增强,因此可以认为Keepalived是运行在用户空间的LVS路由(LVS Router)进程。在实际应用中,Keepalived通常部署在两台主备或一主多备的服务器上,即Keepalived进程既可以运行在Active/Master状态的LVS Router中,也可以运行在Passive/Slave状态的LVS Router中,而所有运行Keepalived进程的LVS Router都遵循虚拟路由冗余协议VRRP

在RHEL7/Centos7系统中,由Systemctl命令通过读取/etc/keepalived/keepalived.conf配置文件来启动Keepalived进程。在遵循VRRP协议的Master Router中,Keepalived进程会启动内核中的LVS服务以创建虚拟服务器,并根据配置拓扑对服务运行状况进行监控。

在VRRP的协议框架下,作为Master的Router将会处理两个主要任务,即转发客户端访问请求到后端物理服务器以进行负载均衡和向Slave Routers周期性的发送VRRP协议报文,而作为Slave的Routers则负责接收VRRP报文,如果在用户预置的时间内,作为Slave的Routers接收VRRP报文失败,则Keepalived认为Master Router故障,并从Slave Routers中重新选举产生一个新的Master Router,触发LVS Router的Failover故障切换操作。

在故障切换Failover的过程中,Keepalived创建的虚拟服务器会被清除,新的Master  Router将接管VIP、发送ARP信息、设置IPVS Table记录条目(Virtual Server)以及物理服务器的健康检查和发送VRRP广播报文。Keepalived的Failover操作针对的是四层TCP/IP协议,即传输层,因为TCP在传输层上进行的是基于链路连接的数据传输。当服务器在响应TCP请求时,如果出现设置时间段的Timeout,则Keepalived的健康检查机制将会监测到该情况并认为该服务器故障,然后将其从服务器池中移除(故障隔离)。

基于Keepalived的两层拓扑负载均衡架构
基于Keepalived的两层拓扑负载均衡架构

基于Keepalived设计的具有二层拓扑的负载均衡架构,第一层为负载均衡层,由一个Active和多个Backup的LVS Routers组成,其中,每个LVS Router都配置有两个网络接口,一个接入Internet网络,另一个接入内部私有网络,Active的LVS Router在这两个网络接口间进行数据转发。位于第一层的LVS Routers和第二层的物理服务器通过私网接口接入相同的局域网中,Active的LVS Router通过NAT技术将Internet数据流转发到私网物理服务器上,而这些位于第二层的物理服务器运行着最终响应请求的服务。位于二层私网中的服务器在与Internet交互时必须经过主LVS Router的NAT转发,对于外部网络中的客户端而言,访问二层私网中的物理服务器就如访问Internet网络中的服务,因为从客户端的角度来看,访问请求的目的地址正是位于主LVS Router上的VIP地址,而该VIP与客户端地址处于相同网络中,VIP还可以是管理员指定的互联网域名。VIP在Keepalived的配置中通常被指定到一个或者多个虚拟服务器上,而虚拟服务器的主要任务便是监听VIP及相应端口上的请求当主LVS Router进行Failover操作的时候,VIP会从一个LVS Router转移到另一个LVS Router (VIP也称为浮动IP),从而保证了对外提供服务的VIP具有高可用性。

在Keepalived负载均衡架构的VIP配置中,每个将LVS Router连接到Internet的物理网卡接口均可配置多个VIP,且每个VIP对应着不同的Virtual Server,即多个Virtual Servers可以同时监听相同物理网卡上的不同VIP,其中每个VIP都对应着不同的服务。例如,Linux系统中的接口eth0将LVS Router连接到Internet中,则可以在eth0上配置一个地址为192.168.115.100的VIP以用于响应HTTP服务请求,同时还可以在eth0上配置另一个地址为192.168.115.200的VIP以用于响应FTP服务请求。

在由一个Active Router和一个Backup  Router组成的Keepalived负载均衡架构中,Active Router的主要任务是将VIP上的请求转发到选中的某个后端服务器上,具体服务器的选举机制则由Keepalived所支持的负载均衡算法来决定。此外,Active Router还负责动态监控后端服务器上特定服务的健康状况监控方式主要是Keepalived自带的三种健康检测机制,即简单TCP连接、HTTP和HTTPS简单TCP连接检测方式,Active  Router会周期性地对服务器上某个特定端口进行TCP连接,如果TCP连接超时或者中断则认为服务不可用,而对于HTTP和HTTPS检测方式,Active Router通过周期性地抓取(Fetch)请求URL并验证其内容来判断服务的可用性。与此同时,Backup Router一直处于Standby状态,LVS Router的Failover由VRRP来处理。在Keepalived进程启动的时候,所有LVS Routers会加入一个用来接收和发送VRRP广播的多播组,由于VRRP是一种基于优先级的协议,因此在启动之初优先级高的LVS Router会被选举为Master Router,而Master Router将会周期性地向多播组中的成员发送VRRP广播。如果多播组中的Backup Routers在一定时间内接收VRRP广播失败,则重新选举新的Master Router,新的Master Router将会接管VIP并广播地址解析协议(Address Resolution Protocol,ARP)信息。而当故障Router重新恢复后,根据该Router的优先级情况,其可能恢复到Master状态也可能保持为Backup状态。

两层负载均衡架构是最常见的部署环境,主要用于很多数据源变化不是很频繁的数据请求服务中。

基于Keepalived的三层拓扑负载均衡架构
基于Keepalived的三层拓扑负载均衡架构

在三层负载均衡架构中,前端的LVS Router负责将访问请求转发到物理服务器(Real  Servers)中,然后Real Server再通过网络形式访问可共享的数据源。对于数据请求比较繁忙的FTP站点,三层架构是最为理想的负载均衡架构,在这种架构下,可供访问的数据源集中存储在高可用的集群服务器上,Real Servers通过NFS共享目录或者Samba文件共享等网络文件系统形式来访问数据。此外,类似的三层负载均衡架构在需要提供中心化及数据库事务处理高可用的Web站点中也被普遍使用。

笔记整理来自山金孝的《OpenStack高可用集群(上册):原理与架构》4.1.2章节,如有侵权请通知删除

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,968评论 6 482
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,601评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 153,220评论 0 344
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,416评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,425评论 5 374
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,144评论 1 285
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,432评论 3 401
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,088评论 0 261
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,586评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,028评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,137评论 1 334
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,783评论 4 324
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,343评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,333评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,559评论 1 262
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,595评论 2 355
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,901评论 2 345

推荐阅读更多精彩内容