写点什么

LB 服务:硬件如何被软件取代(上)

  • 2020-04-01
  • 本文字数:1579 字

    阅读完需:约 5 分钟

LB服务:硬件如何被软件取代(上)

大业务上云,难免要用到 LB。可是,您是否了解 LB 的来龙去脉?本文浅谈一下 LB,从硬件走到软件,他们经历了什么转变。


几年前,刚接触网络的时候,就听过一个称呼:四层交换。



四层交换,顾名思义,就是基于传输层的 TCP/UDP 协议进行数据交换的,利用端口信息区分报文,可进行数据包过滤、服务质量(QoS)、负载均衡、主机备用连接、统计和报告等。而我们使用最频繁的,便是负载均衡(LB)。


盒子时代,业界最出名的三家四层交换厂商:F5、citrix、radware。至今还称霸着负载均衡的市场。



四层交换在负载均衡另有,主要提供三大类负载均衡服务:


  • LSLB:Local Server Load Balance

  • GSLB:Global Service Load Balance

  • LLB:Link Load Balance


LSLB(本地负载均衡):给本地集群部署的多台服务器提供流量负载分担能力。应用的 V-IP 在四层交换上,四层交换根据配置的负载均衡算法和会话保持算法分发给后端服务区。



这里提到两个概念,负载均衡算法会话保持算法


负载均衡算法:即流量到了 LB 以后,应该分给谁,常见的算法有轮询、最小用户数、最小流量、哈希等。


会话保持算法:首包通过负载均衡算法确定发给具体那一台后端以后,要生成 session,以指导后续报文转发。而生成的 session 可以根据配置只记录某些信息,比如只记录源地址而不纪录端口,这样相同的源的不同请求(源 port 不一样)也会发给相同的后端。


GSLB(全局负载均衡):应用在多站点部署,GSLB 可根据访问者的位置,提供就近接入能力。其实 GSLB 更多地是一种 DNS 重定向能力。



如图,访问者在广州,要去访问:www.huawei.com,请求本地 DNS 解析时,DNS 通过递归查询发现域名是托管在 GSLB 的,于是向 GSLB 发出申请,GSLB 通过测试自己到 DNS 的延迟,识别出来广州站点离用户最近,于是将广州的 IP 地址返回给用户,用户请求被重定向给广州站点。


LLB(链路负载均衡):当访问一个应用,有多条线路可以同时到达时,LLB 会提供线路优选,根据访问者或者线路的负载情况选择最有线路。常用于优选电信和联通都存在线路接入的场景。



这几种负载均衡场景,都是 IT 行业里最普遍的场景。而 F5、Radware、Citrix 也是 IT 界大名鼎鼎的公司。并且随着技术的演进,四层交换设备已经不仅仅只能提供四层的 LB,七层的能力已经逐步完善。


可是为何到了云时代以后,他们的名声虽然依旧响亮,但是始终感觉不如从前了呢?而上面的几种功能,在云时代又是如何提供的呢?


再强大的盒子,能支撑的流量也不过百 G 级别。而在互联网迅速崛起的年代,100G 流量根本不算什么,王者荣耀据说流量总和已经达到了 800G(小道消息,待考证)。而类似于 google 的 8.8.8.8,对流量和可靠性的需求,根本不是一个盒子可以承担得起的。


于是近几年,负载均衡软件蓬勃发展,结合动态路由协议实现 anycast 等能力后,拓展性和可靠性达到了一个质的飞跃。


LSLB 逐步被 HA proxy、LVS、Nginx 等软件代替,各大互联网公司也纷纷基于开源软件进一步开发加固,做出了自己的 LB 集群。比如腾讯的 TGW,还有阿里的 LVS 集群等。


而 GSLB,其实也只是承担了一个 DNS 重定向的能力,也逐步被智能 DNS 解析服务所取代,比如 AWS 敢于承诺 100%可用性的 Router53、腾讯的 dnspod 等。


LLB 呢?被运营商提供的 BGP 线路所取代。传统的 LLB 还需要每一个运营商 1 个 IP,而 BGP 直接允许相同的 IP 在不同的运营商网络里广播,根据 BGP 协议自己实现就近接入。


当然,云还是比较包容的。盒子可能不太适合大规模服务化,但是给某一些企业使用还是很不错的选择,AWS 跟 F5 合作,可以将 F5 软件化,部署到 VM 中,在云的模式下还可以继续提供服务。


华为云服务中,也同样提供了各种负载均衡方案,以支持业务 LSLB 和 GSLB 的需求。具体华为云如何提供?使用华为云 ELB 服务有哪些注意事项?


本文转载自 华为云产品与解决方案 公众号。


原文链接:https://mp.weixin.qq.com/s/t93Gp5ZuJSSqp7zfGbOqow


2020-04-01 21:141869

评论

发布
暂无评论
发现更多内容

Hive的UDF

怀瑾握瑜的嘉与嘉

hive 7月月更

rxjs Observable filter Operator 的实现原理介绍

汪子熙

typescript 响应式编程 angular RXJS 7月月更

Vuex(二)

小恺

7月月更

「Docker 那些事儿」还不会安装Docker?建议看这篇就够了

Albert Edison

7月月更

x86汇编语言-从实模式到保护模式 笔记

贾献华

7月月更

疫情当头,作为Leader如何进行团队的管理?| 社区征文

码界西柚

团队管理 远程办公 7月日更 初夏征文

Spring Boot应用在kubernetes的sidecar设计与实战

程序员欣宸

Java Kubernetes Sidecar 7月月更

今晚要修稿子準備發佈。但是,仍卡在這裡,也許你需要的是一個段子。

叶小鍵

深入理解 SQL 中的 Grouping Sets 语句

元闰子

sql spark spark SQL

linux硬盘挂载教程

乌龟哥哥

7月月更

最全SQL与NoSQL优缺点对比

雨果

sql NoSQL 数据库

『快速入门electron』之实现窗口拖拽

是乃德也是Ned

Electron electron实战 7月月更

ORACLE进阶(一) 通过EXPDP IMPDP命令实现导dmp

No Silver Bullet

oracle DMP 7月月更

cgroup简介

总想做点什么

Cgroups

项目协作的进度如何推进| 社区征文

卢卡多多

初夏征文

Flutter 退出当前操作二次确认怎么做才更优雅?

岛上码农

flutter ios 安卓 移动端开发 7月月更

聊聊Flink框架中的状态管理机制

百思不得小赵

大数据 flink 状态 7月月更

Python|函数和模块

AXYZdong

7月月更

Jenkins抛弃Java 8拥抱Java 11

FunTester

TOGAF认证自学宝典V2.0

涛哥 数字产品和业务架构

企业架构 TOGAF

疫情常态化大背景下,关于远程办公的思考|社区征文

如浴春风

初夏征文

架构实战营 - 第 6 期 毕业总结

乐邦

「架构实战营」

疫情当头,作为Leader如何进行代码版本和需求开发管控?| 社区征文

码界西柚

团队管理 远程办公 7月日更 远程开发 初夏征文

为什么说数据服务化是下一代数据中台的方向?

雨果

数据中台 数字化转型 DaaS数据即服务

你开发数据API最快多长时间?我1分钟就足够了

雨果

API API开发

封装一个koa分布式锁中间件来解决幂等或重复请求的问题

程序知音

编程 程序员 后端

CSRF

急需上岸的小谢

7月月更

NFT新的契机,多媒体NFT聚合平台OKALEIDO即将上线

小哈区块

OpenHarmony应用开发之ETS开发方式中的Image组件

坚果

HarmonyOS Open Harmony OpenHarmony 3.1 Release 7月月更 harmony

LB服务:硬件如何被软件取代(上)_文化 & 方法_华为云产品与解决方案_InfoQ精选文章