Keepalived LVS 介绍和使用
图片来自 章文嵩博士和他背后的负载均衡帝国
很逗的一段话:
现在你的公司已经各方面都已经走上正轨,马上就要敲钟上市了,在业内,世界范围内已经有了广泛的社会影响力,已经成为一个新兴行业的风向标之一,很多人都盯着你,你这个公司有任何的风吹草动,新闻从业人员肾上腺激素都会往外狂飙,你的任何一个系统挂了都会影响几亿的用户,产生千万的资产损失,那么问题来了,你的系统还敢随意的挂掉么? 挂掉哪怕1分钟都是给竞争对手的一场狂欢,让自己的公关团队夙夜难眠!
好,像这么牛逼的公司你觉得你开始更多的需要考虑的是什么?1个机房,全在H城?那怎么可以?!!且不说地球这么危险,地震、海啸频发,错峰用电、火灾时有发生,有时候周围的化工厂还会爆个炸啥的,有时候就是工地上的铲车看起来都那么可怕,尤其是 blueshi(r)t 人开的铲车尤其的可怕。
好吧,看来你需要在多个城市,多个国家,多个地球上建设很多个机房。有了多个机房万事就OK了么?不,事情其实要比你想象的复杂的多,你的公司的已有应用都在一开始就支持异地容灾能力了么,做架构的都知道无状态的应用可能好一点,但是那些有状态的应用在这一块绝对是重灾区。
LVS-DR
图片来自LVS-DR工作原理图文详解
DR 值 Direct Routing,直接路由,DR 模型中,Director 和 Realserver 处在同一网络中,对于 Director,VIP 用于接受客户端请求,DIP 用于和 Realserver 通信。对于 Realserver,每个 Realserver 都配有和 Director 相同的 VIP(此 VIP 隐藏,关闭对 ARP 请求的响应),仅用户响应客户端的请求,RIP 用于和 Director 通信。
当客户端请求集群服务时,请求报文发送至 Director 的 VIP(Realserver的 VIP 不会响应 ARP 请求),Director 将客户端报文的源和目标 MAC 地址进行重新封装,将报文转发至 Realserver,Realserver 接收转发的报文。此时报文的源 IP 和目标 IP 都没有被修改,因此 Realserver 接受到的请求报文的目标 IP 地址为本机配置的 VIP,它将使用自己的 VIP 直接响应客户端。
LVS-DR 模型中,客户端的响应报文不会经过 Director,因此 Director 的并发能力有很大提升。
VRRP全称 Virtual Router Redundancy Protocol,即 虚拟路由冗余协议。可以认为它是实现路由器高可用的容错协议,即将N台提供相同功能的路由器组成一个路由器组(Router Group),这个组里面有一个master和多个 backup,但在外界看来就像一台一样,构成虚拟路由器,拥有一个虚拟 IP(vip,也就是路由器所在局域网内其他机器的默认路由),占有这个 IP 的 master 实际负责 ARP 相应和转发 IP 数据包,组中的其它路由器作为备份的角色处于待命状态。master 会发组播消息,当 backup 在超时时间内收不到 vrrp 包时就认为 master 宕掉了,这时就需要根据 VRRP 的优先级来选举一个 backup 当 master,保证路由器的高可用。
在 VRRP 协议实现里,虚拟路由器使用 00-00-5E-00-01-XX 作为虚拟 MAC 地址,XX就是唯一的 VRID (Virtual Router IDentifier),这个地址同一时间只有一个物理路由器占用。在虚拟路由器里面的物理路由器组里面通过多播IP地址 224.0.0.18 来定时发送通告消息。每个 Router 都有一个 1-255 之间的优先级别,级别最高的(highest priority)将成为主控(master)路由器。通过降低master的优先权可以让处于backup状态的路由器抢占(pro-empt)主路由器的状态,两个backup优先级相同的IP地址较大者为master,接管虚拟 IP。
keepalived 可以认为是 VRRP 协议在 Linux 上的实现,主要有三个模块,分别是 core、check 和 vrrp。core 模块为 keepalived 的核心,负责主进程的启动、维护以及全局配置文件的加载和解析。check 负责健康检查,包括常见的各种检查方式。vrrp 模块是来实现 VRRP 协议的。
+-------------+
| uplink |
+-------------+
|
+
MASTER keep|alived BACKUP
172.29.88.224 172.29.88.222 172.29.88.225
+-------------+ +-------------+ +-------------+
| nginx01 |----| virtualIP |----| nginx02 |
+-------------+ +-------------+ +-------------+
|
+------------------+------------------+
| | |
+-------------+ +-------------+ +-------------+
| web01 | | web02 | | web03 |
+-------------+ +-------------+ +-------------+
参考:
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
上一篇: 技术开发阅读笔记
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论