当前位置: 首页 > 科技观察

KeepalivedHighAvailability三种路由方案

时间:2023-03-16 18:48:27 科技观察

前言据说大学暑假的时候,在一家餐厅工作了两个月,Title是一名初级美食路人。正是这段兼职经历,让我收获了一波隐藏已久的素材。请听我的故事~本文主要内容如下:1.餐厅的角色餐厅中主要有这几个角色:服务员:负责记录顾客点了哪些菜,上菜时间,上菜,划线出去。多个服务员可以被视为客户,而不是食物传递者。传菜员:负责通知厨房取菜、排菜、传菜。Passers可以被认为是Keepalived组件。厨师:烹饪,服务。Chef可以看作是一个真正的后台服务器。为什么需要送餐员这个角色?传菜员这个角色怎么了?服务员需要在不离开包间去厨房取菜的情况下为顾客服务。(单一职责)服务员不需要定期来厨房询问菜是否准备好了。(解耦)流程图如下:①客户下单。②服务员记下菜名和上菜时间。这里的上菜时间是指顾客要求的上菜时间,因为有的顾客可能想等朋友一起过来再吃。③服务员给传菜员点单,另一单留包间。④服务员大声告知厨师要准备哪些菜品,什么时候开始上菜。⑤厨师准备食材和烹饪。如果缺少食材,厨师也会告诉路人,路人会告诉服务员这道菜做不出来。⑥厨师准备好后,将菜品摆上盘子,递给路人。⑦服务员把点单上相应的菜划掉,表示已经做好了。⑧服务员端菜给服务员。⑨服务员把菜划掉。⑩服务员端菜上桌。简单来说,这个流程就是顾客下单->服务员传单->路人通知->厨师做菜->路人传菜->服务员上菜。上面的过程不仅仅是服务员请求数据,请求发送给传菜者,传菜者将请求转发给厨师,厨师处理后返回结果。精彩的!!2、Keepalived的路由方案初探2.1为什么需要路由方案?在上一篇文章中,我们讲到了Keepalived的负载均衡调度算法。通过这个算法,选择一个真实的服务来处理这个客户端请求。这就像告诉其中一位厨师(通常是厨师)服务员想要做的菜。以及如何告诉厨师?我应该按喇叭、传呼机,还是走到他跟前告诉他?服务员跟厨师说话的方式就是为了Keepalived。选择真实服务器后,后续有两个流程需要梳理:Keepalived如何将请求转发给这个服务?服务处理完请求后,如何将处理结果返回给客户端呢?以上两个过程就是Keepalived的路由方案要做的事情。Keepalived有三种路由方案:NAT、TUN、DR。2.2在哪配置具体要配置的路由方案在keepalived.conf配置文件中,其中包含一个lb_kind配置,可以配置为NAT、DR、TUN。当前配置为DR模式。还有一个配置lb_algo,配置调度算法,比如这里配置的wrrweightedround-robin调度算法。2.3LVS的结构在上一篇文章中,我们提到Keepalived是利用LVS模块的功能来实现负载均衡的。那么LVS的结构是怎样的呢?它分为两个模块:前端的负载均衡器(LoadBalance,简称LB)和后端的多个真实服务器(RealServer,简称RS)。LB负责流量转发,RS负责处理请求,然后返回请求。3、深入理解Keepalived的路由方案3.1NAT路由方案NAT的全称是NetworkAddressTranslation,网络地址转换。它有两个功能:使企业内部的私有IP可以访问外部网络,使外部用户可以访问位于公司内部的私有IP主机。对于Keepalived来说,这种模式就像是餐厅标准的点餐和服务模式:多个服务员将订单数据传递给路人,路人通知厨师做菜,菜做好后,厨师将订单传递给路人,传菜员负责把菜递给服务员。如下图所示,LVS负载调度器有两块配置了不同IP地址的网卡。网卡eth0设置为公网VIP连接外网,网卡eth1设置为私有VIP通过交换设备连接内网。示例如下:eth0网卡->公网VIP->外网eth1网卡->私有VIP->交换设备>内网网络示意图如下:①例如现在eth0网卡配置了一个publicVIP比如10.1.2.88,客户端发送的所有请求都到这个PublicVIP(目标地址)。②主LVSRouter负责接收请求,将请求的目的地址(PublicVIP)替换为NATVIP(192.168.56.88)。③NATVIP和后端服务器属于同一个局域网,可以互相访问。请求通过负载均衡调度选择真实服务器。④LVS修改数据包中的目的地址和目的端口为真实服务器的。⑤真实服务器处理完请求后,将响应数据返回给LVSRouter。⑥LVSRouter将响应数据的源IP地址、NATVIP和端口转换成PublicVIP和LVS端口,然后转发给外网客户端。对于client来说,只和PublicVIP打交道,不知道NATVIP,更不知道真实服务器的IP地址。此过程也称为IP伪装。服务员