当前位置:首页 > 科技  > 软件

探析负载均衡器的实现原理

来源: 责编: 时间:2024-06-18 17:06:04 85观看
导读前言负载均衡器(Load Balancer,简称 LB)是一种硬件或者软件设备,它可以将客户端访问流量根据转发策略分发到多个服务器或者设备上,以确保系统的负载均衡,通过负载均衡可以有效避免单点故障,提高系统的可靠性和稳定性。LB是

前言

负载均衡器(Load Balancer,简称 LB)是一种硬件或者软件设备,它可以将客户端访问流量根据转发策略分发到多个服务器或者设备上,以确保系统的负载均衡,通过负载均衡可以有效避免单点故障,提高系统的可靠性和稳定性。LB是所有流量的入口,LB的高可用架构以及可扩展性对于业务的重要性不言而喻。本文全面剖析LB的架构和底层实现原理,以点带面,详细介绍LB的构成组件和实现技术、LB的后端网络拓扑以及LB集群的高可用性。JdX28资讯网——每日最新资讯28at.com

LB的组成

图1 LB的构成组件图1 LB的构成组件JdX28资讯网——每日最新资讯28at.com

用户每创建一个LB集群,都至少生产两个负载均衡器节点(LB node),它的承载实体可以是虚拟机也可以是容器,容器具有轻量和高性能特性。LB的构成包含三部分,分别如下:JdX28资讯网——每日最新资讯28at.com

1.负载均衡器

负载均衡器主要接收client的传入流量,并按照负载均衡算法,将流量分发给LB node。JdX28资讯网——每日最新资讯28at.com

2.监听器

用户可以向负载均衡器添加一个或者多个监听器,监听器主要用来配置协议和端口,根据检查客户端的流量连接请求,按照定义的转发策略将请求的映射端口流量分发到后端真正承载业务的后端服务器和端口。JdX28资讯网——每日最新资讯28at.com

3.后端服务器

后端服务器就是业务的流量承载实体,可以是虚拟机、裸金属和容器。监听器会对后端服务器进行定期健康检查,如果后端服务器有问题,将会从监听器中摘掉异常服务器,如果后端服务器恢复正常,监听器会自动添加该服务器继续为业务提供服务器。负载均衡器按照用户设置的负载均衡算法(轮询/最少链接/源地址),将流量分发到后端服务器。JdX28资讯网——每日最新资讯28at.com

负载均衡器高可用集群

图2 LB集群图2 LB集群JdX28资讯网——每日最新资讯28at.com

负载均衡器作为用户的网络服务入口,一旦发生故障将影响业务的整体可用性,所以负载均衡器集群的目的就是提供高可用的负载均衡器服务。负载均衡器集群中包含多个单独工作的LB node,这些节点保持一致的负载均衡配置,并且具备相同的服务IP地址,提供统一的对外服务。 LB对外服务的ip地址称之虚拟ip(一般称vip),负载均衡器集群会自动将vip映射到某个LB nodeIP地址。如图2所示,每个LB集群的LB node包括Keepalive、LVS和Haproxy服务,其中LB集群会选择两个LB node 组成一个Keepalive集群,一个作为master,一个作为slave,其中master 节点为vip所在节点,是client访问业务的入口ip。Keepalive集群是一个高可用集群,它通过VRRP协议来防止单点故障。如果master节点有问题,slave节点将转为master节点,对外提供服务。lb-node0作为Keepalive集群的master节点,上面的LVS服务通过默认的加权轮训算法,将入口流量分发到LB集群的3个node节点,而作为Keepalive  slave的lb-node1上的LVS服务会将流量按照加权轮训算法分发到 lb-node1和lb-node2上。HAProxy作为监听器的载体,在其配置中为监听器添加后端服务器。JdX28资讯网——每日最新资讯28at.com

LB后端网络拓扑

图1 LB的构成组件图1 LB的构成组件JdX28资讯网——每日最新资讯28at.com

用户每创建一个LB集群,都至少生产两个负载均衡器节点(LB node),它的承载实体可以是虚拟机也可以是容器,容器具有轻量和高性能特性。LB的构成包含三部分,分别如下:JdX28资讯网——每日最新资讯28at.com

1.负载均衡器

负载均衡器主要接收client的传入流量,并按照负载均衡算法,将流量分发给LB node。JdX28资讯网——每日最新资讯28at.com

2.监听器

用户可以向负载均衡器添加一个或者多个监听器,监听器主要用来配置协议和端口,根据检查客户端的流量连接请求,按照定义的转发策略将请求的映射端口流量分发到后端真正承载业务的后端服务器和端口。JdX28资讯网——每日最新资讯28at.com

3.后端服务器

后端服务器就是业务的流量承载实体,可以是虚拟机、裸金属和容器。监听器会对后端服务器进行定期健康检查,如果后端服务器有问题,将会从监听器中摘掉异常服务器,如果后端服务器恢复正常,监听器会自动添加该服务器继续为业务提供服务器。负载均衡器按照用户设置的负载均衡算法(轮询/最少链接/源地址),将流量分发到后端服务器。JdX28资讯网——每日最新资讯28at.com

图3 LB后端网络拓扑图3 LB后端网络拓扑JdX28资讯网——每日最新资讯28at.com

每个LB node包括两个网卡,分别为eth0和eth1。其中eth0为私有网络地址,用于和后端服务通信,eth1为基础网络地址,用于接收client数据。Haproxy作为eth0和eth1数据通信的桥梁。根据图3所示,LB后端网络拓扑详细介绍了客户端流量如何通过负载均衡集群,转发流量到后端服务器,然后后端服务器将响应数据如何返回至client。JdX28资讯网——每日最新资讯28at.com

首先client 通过访问vip(1.2.3.252)到lb-node0,此时流量通过eth1网卡进入iptables规则,通过 PREROUTING 表的LUSTER_DIVERT 链上的规则,打上 fwmark。fwmark 的值是根据监听器的端口来分配,具体以 iptables 规则中的 fwmark 值为准,一般从 0x2710 (即10000) 开始分配,和keepalive中virtual_server_group中的值一致。JdX28资讯网——每日最新资讯28at.com

然后流量到达lvs后,lvs根据fwmark配置,按照lvs配置算法,选择一个LB node(1.2.3.9)接受流量,如图3所示lvs对应的配置。此时haproxy 已经开启端口监听,流量进入haproxy 的应用程序,按照RR算法,选择一个合适的后端服务器进行流量转发。JdX28资讯网——每日最新资讯28at.com

此时,通过查看LB node所在物理机hyper-1的arp信息和宿主机路由,流量到达br_vg_out网桥,按照bridge fdb流表配置,通过vxlan隧道,将请求数据发送至后端服务(1.2.3.6)所在的物理机hyper-3。hyper-3的内核对vxlan解包后,数据流入到sxxx网桥,然后根据bridge fdb信息,将数据交付给最终的后端服务器。此时需要注意是在hyper-1上后端服务1.2.3.6的mac地址(图中标红色)并不是其真正的mac地址,而是其所在物理服务器上网桥的一个网口pair的mac地址,它是封包流量的统一入口,最后会将流量转发到最终后端服务。 JdX28资讯网——每日最新资讯28at.com

在hyper-3上的后端服务处理完client的请求后,响应数据是如何返回至client的呢?从LB-node0过来的数据包,进入hyper-3的iptables规则后,会对其打上fwmark,响应数据通过查找hyper-3上的策略路由的fwmark值进行路由匹配,然后将数据发送至hyper-3的br_vg_out网桥,通过vxlan隧道发送至LB-node0,此时数据不再经过lvs服务(lvs采用DR工作模式),而是直接将响应数据发送至client。JdX28资讯网——每日最新资讯28at.com

LB集群健康检查


JdX28资讯网——每日最新资讯28at.com

图4 LB node健康检查JdX28资讯网——每日最新资讯28at.com


JdX28资讯网——每日最新资讯28at.com

1.LB node健康检查

每个计算节点上都有lxc-monitor守护进程,它监控着物理机上以LXC形式运行的LB node,当LB node 由于某些原因出现stop情况后,lxc-monitor会接收到lxc对应的停止消息,并将该消息发送至lxc-event-handler,lxc-event-handler发送release指令给compute_server, compute_server 服务将会重建该LB node。同理,当整个hyper意外宕机后,其pair-hyper探测到hyper网络中断后(hyper和pair-hyper 相互探活彼此),将会触发重建hyper上面所有的LB node,保障LB node正常工作。JdX28资讯网——每日最新资讯28at.com

图5 Listener健康检查JdX28资讯网——每日最新资讯28at.com

2.Listener健康检查

Keepalive 的master节点配置misc_check,会对LB node里面 haproxy 启动的监听器的监听端口进行健康检查,探测流量走VBC网络,即eth1网卡。通过使用nc -vz命令定期对ip和端口进行探测,如果不通,则将它从lvs 后端摘掉,这样业务流量就不会转发到有问题监听器上了。JdX28资讯网——每日最新资讯28at.com

3.Haproxy对后端服务检查

开启健康检测后,负载均衡器会根据对应配置定期检查后端服务的运行状态,当某个后端服务出现异常时,会自动隔离该后端服务,并将请求转发给其他健康的后端服务,实现高可用性。JdX28资讯网——每日最新资讯28at.com

  • 健康检查方式:
  • TCP:通过向后端服务器发送 TCP 包来检测后端服务。
  • HTTP:通过向后端服务器发送 HTTP 请求来检测后端服务,你可以指定需要检测的 URI。负载均衡器会通过 HTTP 返回值是否为200来判断服务是否正常。
  • ICMP:通过向后端服务器发送 ICMP Echo Request 请求(即 ping)来检查后端网络是否可达。
  • UDP:UDP 方式会 结合 ICMP Echo Request 和 UDP port probe 两种方式来检查。
  • 健康检查选项:
  • 检查间隔:连续两次健康检查之间的时间间隔,单位为秒,范围为 2-60s。
  • 超时时间:等待健康检查请求返回的超时时间,检查超时将会被判定为一次检查失败,单位为秒,范围为 5 - 300s。
  • 不健康阈值:多少次连续检查失败之后,可以将后端服务屏蔽,范围为 2-10次。
  • 健康阈值:多少次连续检查成功之后,可以将后端服务恢复,范围为 2-10次。

结束语

本文介绍了LB的组成原理、高可用架构、网络流量模型分析和健康检查机制。只有全面深入了解负载均衡器的工作原理,才能快速定位业务在LB碰到的各种问题。LB可以为用户提供强大的功能和灵活配置,便于用户扩展和管理应用程序的基础架构,并且提高了服务的可用性和稳定性,为系统的构建和性能延伸提供了强有力的支持。                                                          JdX28资讯网——每日最新资讯28at.com

本文链接:http://www.28at.com/showinfo-26-94590-0.html探析负载均衡器的实现原理

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。邮件:2376512515@qq.com

上一篇: Kafka如何保证消息的不丢失与不重复

下一篇: Rust 在许多方面都优于 Go,但为什么没有 Go 流行?

标签:
  • 热门焦点
  • Find N3入网:最高支持16+1TB

    Find N3入网:最高支持16+1TB

    OPPO将于近期登场的Find N3折叠屏目前已经正式入网,型号为PHN110。本次Find N3在外观方面相比前两代有很大的变化,不再是小号的横向折叠屏,而是跟别的厂商一样采用了较为常见的
  • K60 Pro官方停产 第三方瞬间涨价

    K60 Pro官方停产 第三方瞬间涨价

    虽然没有官方宣布,但Redmi的一些高管也已经透露了,Redmi K60 Pro已经停产且不会补货,这一切都是为了即将到来的K60 Ultra铺路,属于厂家的正常操作。但有意思的是该机在停产之后
  • Redmi Pad评测:红米充满野心的一次尝试

    Redmi Pad评测:红米充满野心的一次尝试

    从Note系列到K系列,从蓝牙耳机到笔记本电脑,红米不知不觉之间也已经形成了自己颇有竞争力的产品体系,在中端和次旗舰市场上甚至要比小米新机的表现来得更好,正所谓“大丈夫生居
  • 8月总票房已突破10亿!《封神》第一:口碑已经成了

    8月总票房已突破10亿!《封神》第一:口碑已经成了

    8月5日消息,据灯塔专业版数据,截至8月5日9时35分,8月总票房(含预售)已突破10亿。其中,《封神》以大比分的优势领先。根据官方消息,目前该片总票房已经超过14.
  • 十个可以手动编写的 JavaScript 数组 API

    十个可以手动编写的 JavaScript 数组 API

    JavaScript 中有很多API,使用得当,会很方便,省力不少。 你知道它的原理吗? 今天这篇文章,我们将对它们进行一次小总结。现在开始吧。1.forEach()forEach()用于遍历数组接收一参
  • 线程通讯的三种方法!通俗易懂

    线程通讯的三种方法!通俗易懂

    线程通信是指多个线程之间通过某种机制进行协调和交互,例如,线程等待和通知机制就是线程通讯的主要手段之一。 在 Java 中,线程等待和通知的实现手段有以下几种方式:Object 类下
  • 微信语音大揭秘:为什么禁止转发?

    微信语音大揭秘:为什么禁止转发?

    大家好,我是你们的小米。今天,我要和大家聊一个有趣的话题:为什么微信语音不可以转发?这是一个我们经常在日常使用中遇到的问题,也是一个让很多人好奇的问题。让我们一起来揭开这
  • 小红书1周涨粉49W+,我总结了小白可以用的N条涨粉笔记

    小红书1周涨粉49W+,我总结了小白可以用的N条涨粉笔记

    作者:黄河懂运营一条性教育视频,被54万人“珍藏”是什么体验?最近,情感博主@公主是用鲜花做的,火了!仅仅凭借一条视频,光小红书就有超过128万人,为她疯狂点赞!更疯狂的是,这
  • 消息称小米汽车开始筛选交付中心:需至少120个车位

    消息称小米汽车开始筛选交付中心:需至少120个车位

    IT之家 7 月 7 日消息,日前,有微博简介为“汽车行业从业者、长三角一体化拥护者”的微博用户 @长三角行健者 发文表示,据经销商集团反馈,小米汽车目前
Top