【ArchSummit】如何通过AIOps推动可量化的业务价值增长和效率提升?>>> 了解详情
写点什么

LVS 简介

  • 2019-11-14
  • 本文字数:992 字

    阅读完需:约 3 分钟

LVS简介

lvs 负载均衡在高并发的 web 开发中得到了广泛的应用,相信各位同事也或多或少的接触过。但是大家对 lvs 的工作原理了解多少呢?本文作者经过对 lvs 在 hulk 云平台上的应用探索,对 lvs 架构进行了初步的介绍,对用户的请求是如何散列到 lvs 服务器上的问题做了详解。下来就跟随作者一起认识下 lvs 负载均衡吧。

1 什么是负载均衡

LVS 负载均衡是将用户访问请求根据一定的转发策略分发到后端多台服务器(支持物理机/虚机/容器等)的流量分发控制服务。它采用 LVS(Linux Virtual Server) + keepalived 的方式实现,设置虚拟服务地址(VIP),通过健康检查自动摘除不可用的服务器,从而提升应用的整体服务能力,增强应用的可用性。

2 负载均衡带来了什么好处

1.保护后端 RS,不直接暴露给用户。


2.对后端 RS 进行健康检查。


3.按策略分发流量至后端 RS。

3 Hulk LVS 集群架构详解

使用 BGP+ECMP 的模式构建集群,用 ECMP 将数据包散列到集群中各个节点上,通过 BGP 协议保证单台机器故障后将这台机器的路由动态的剔除出去,由此做到了动态 failover。

用户请求是如何散列到 LVS 服务器上


LVS 服务器通过 BGP 将 VIP 发布到网络中,LVS 专用交换机学习到 VIP,形成 BGP 多路等价路由(ecmp),根据哈希因子计算得到 hash lb key,进行 ECMP 下一跳链路数(Member-count)求余计算,再与 ECMP 基值进行加法运算得出转发下一跳 index,即确定了下一跳转发路由到达 LVS 服务器。

4 系统层面的高可用

LVS 服务器采用双万兆网卡,图中 ETH1、ETH3 为万兆外网口上联 TOR 交换,所以当上联 TOR 交换机故障后流量可动态切到 ETH3 网卡,来保障业务的高可用。


5 HULK LVS 转发面板介绍

1.用户通过(CIP+CPORT)访问(VIP+VPORT)请求到达 LVS 服务器。


2.LVS 服务器维护一张 session 表,将(CIP+CPORT 转换为 BIP+BPORT)(VIP+VPORT 转换为 RIP+RPORT)转发至后端 RS。


3.后端 RS 收到请求包后发现 RIP,PORT 目标为本机,则构建响应报文,转发给 BIP+BPORT。


4.LVS 服务器收到 RS 回包后,通过之前维护的 SESSION 表将(RIP+RPORT 转换为 VIP+VPORT)(BIP+BPORT 转为为 CIP+CPORT)返回给用户。



注:通过 BIP 替换转发的方式获取不到客户端真实 IP 地址,因此需要给内核打 TOA 及 TTM 模块将真实 IP 从 TCP option 中取出放到内核 sock 中。


本文转载自公众号 360 云计算(ID:hulktalk)。


原文链接:


https://mp.weixin.qq.com/s/K7g5qVBr7FghbzVwFA2NUg


2019-11-14 16:472222

评论

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

开发人员的编程心理学

码语者

编程 心理学 开发

如何用建木CI创建SSL证书并部署到nginx

Jianmu

持续集成 SSL证书 自动化运维

vivo数据库与存储平台的建设和探索

vivo互联网技术

数据库 存储技术 平台架构

大厂面试:一个四年多经验程序员的BAT面经(字节、阿里、腾讯)

鄙人薛某

字节跳动 java面试 大厂面试 社招 面经分享

kafka原理深度剖析系列|基本原理与架构

云智慧AIOps社区

Java kafka 架构 消息队列 消息中间件

我为InfoQ编辑器提意见

坚果

1月月更

Java自定义DNS解析器三种实践

FunTester

Java 性能测试 DNS FunTester 自定义DNS

再获认可 | 优麒麟荣获“最佳技术社区运营”奖

优麒麟

Linux InfoQ 2022 优麒麟

最好用的 7 款 Vue admin 后台管理系统测评

蒋川

Vue Vue 3 vue admin

微信业务架构图&学生管理系统架构设计

张逃逃

「架构实战营」

Flutter 中使用Chip 小部件【Flutter专题66】

坚果

flutter 1月月更

带薪撸猫是一种什么样的体验?

万事ONES

kafka 原理深度剖析系列|调优策略

云智慧AIOps社区

Java kafka 架构 消息队列 消息中间件

914. 卡牌分组——欧几里得算法

CRMEB

2022最受Flutter 开发者喜爱的库

坚果

flutter 1月月更

极简实现 TiDB 冷热数据分层存储 | He3 团队访谈

PingCAP

使用CodeMirror打造数据科学家使用的IDE(一)

Baihai IDP

人工智能 ide 数据科学 CodeMirror

模块六作业

whoami

「架构实战营」

深入理解 Go 语言的 map 实现原理

宇宙之一粟

Go map Go 语言 1月月更

基于Javaweb,SSM火车订票系统

叫练

基于Javaweb,Mysql生物信息数据管理系统

叫练

模块一第1课随堂测验

苍狼

模块一

kafka 原理深度剖析系列|分区分配策略

云智慧AIOps社区

Java kafka 架构 中间件 消息队列

顶级好用的 5 款 Vue table 表格组件测评与推荐

蒋川

Vue vue table

HUAWEI DevEco Studio使用技巧【鸿蒙开发 06】

坚果

1月月更

微信业务架构 & 学生管理系统架构设计

王大胖

10倍!BoostKit鲲鹏全局缓存3大创新技术助力Ceph性能提升

华为云开发者联盟

Ceph 鲲鹏 BoostKit鲲鹏全局缓存技术 BoostKit 全局缓存

【笔记】学《郭东白的架构课》:01|模块导学:是什么在影响架构活动的成败?

术子米德

架构师成长笔记

模块一第2课随堂练习

苍狼

模块一

龙蜥社区理事长展望操作系统 2022:加速驶向快车道,云、XPU和开源成“催化剂”

OpenAnolis小助手

Linux 开源 操作系统 国产化 龙蜥

2022 年前端工程师进阶必知必会

开源之巅

Serverless

LVS简介_文化 & 方法_杨旭_InfoQ精选文章