【ArchSummit架构师峰会】探讨数据与人工智能相互驱动的关系>>> 了解详情
写点什么

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:472230

评论

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

Antd多文件上传后台接收为null问题

CRMEB

阿里巴巴基于应用和变更的交付模式|阿里巴巴DevOps实践指南

阿里云云效

云计算 阿里巴巴 阿里云 持续交付 研发

JavaScript 基础(三):数组和对象

devpoint

JavaScript 数组 对象 3月月更

Spring Cloud Ribbon 中的 7 种负载均衡策略

王磊

SpringCloud

web前端培训:react的多环境灵活配置

@零度

前端开发 React

java培训:22道springboot高频面试题

@零度

JAVA开发 springboot

为什么要学习togaf的不完全分析

spark

企业架构 架构师 TOGAF 软件架构师

Go语言使用gorm对MySQL进行性能测试

FunTester

Go MySQL 性能测试 gorm FunTester

书单 | 云端架构怎么设计才好?这几本书告诉你!

博文视点Broadview

汽车之家基于 Flink 的实时计算平台 3.0 建设实践

Apache Flink

大数据 flink 开源 编程 实时计算

如何解决海量数据更新场景下的Mysql死锁问题

领创集团Advance Intelligence Group

MySQL

两行代码助你搞定SAST(静态应用程序安全测试)

极狐GitLab

gitlab security

Java面向对象知识点拆分(二)

逆锋起笔

java面试 javase 3月月更 Java面试题

《重学Java设计模式》作者开始录视频了!

小傅哥

设计模式 小傅哥 视频学习

Flink CDC 项目 GitHub star 破 2000,新增 Maintainer 成员

Apache Flink

大数据 flink 开源 编程 实时计算

2021年第4季度记账理财应用监测,头部集聚加强,领跑者转型发展

易观分析

理财 记账

开源,从一个轮子说起|趣说开源

腾源会

开源 腾源会

创建索引源码学习

liang1993

elasticsearch

【高并发】不得不说的线程池与ThreadPoolExecutor类浅析

冰河

并发编程 多线程 高并发 线程池 异步编程

面向流批一体的 Flink Runtime 新进展

Apache Flink

大数据 flink 开源 编程 实时计算

大数据培训:Spark性能调优与参数配置

@零度

大数据 spark

WMS仓储管理系统解决方案

源字节1号

开源 前端开发 后端开发 WMS仓库管理

低代码和无代码的注意事项

禅道项目管理

低代码 开发 无代码

银行卡信息精准识别-智能快速绑卡

DS小龙哥

3月月更

程序员大学四年有对象和没对象的区别,对你工作有什么影响

刘祥

电影图书电视剧

xujiangniao

从0到1万字贴心讲解单体架构到分布式架构的演变(第一篇)

刘祥

后端 分布式,

反射解析与使用

Puciu

Docker原理——启动时的icc标志的原理

kof11321

Docker docker网络

2022-03微软漏洞通告

火绒安全

漏洞 漏洞修复 远程代码执行

阿里巴巴监管控一体化运维|阿里巴巴DevOps实践指南

阿里云云效

云计算 阿里云 运维 云原生 研发

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