写点什么

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

评论

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

如何为开源项目撰写 RFC

Databend

大数据 开源 #开源 databend

Java即时编译(JIT)原理与调优

柠檬汁Code(binbin0325)

JVM JIT 即时编译

【Django | 开发】 为已有遗留系统数据库生成管理后台

计算机魔术师

8月月更

Python如何用类和对象来编程?

和牛

Python 8月月更

长安链源码分析启动(7)

长安链

【Python | 词云】聊天记录绘制超美词云(七夕快乐 ,曾同学)

计算机魔术师

8月月更

软件测试 | 测试开发 | 一文带你了解K8S容器编排(上)

测吧(北京)科技有限公司

k8s

快手能做好ToB吗?

ToB行业头条

tob 快手

创新技术领航者!华为云GaussDB获颁2022年云原生数据库领域权威奖项

科技云未来

华为云GaussDB(for Redis)全面对比Codis

科技云未来

在线图片隐写术解密解码传递数据

入门小站

工具

【小程序项目开发-- 京东商城】uni-app之商品列表页面 (下)

计算机魔术师

8月月更

在线XML转HTMLTable工具

入门小站

工具

Spring源码分析(三)Spring是如何把元素解析成BeanDefinition对象的

石臻臻的杂货铺

spring 源码 8月月更

【操作系统 | Linux】介绍与安装(虚拟机)

计算机魔术师

8月月更

【微信小程序开发】自定义tabBar案例(定制消息99+小红心)

计算机魔术师

8月月更

设计模式的艺术 第十六章责任链设计模式练习(提供一个假条审批模块:如果员工请假天数小于3天,主任审批该请假条;如果天数大于或等于3天,小于10天,经理审批;如果天数大于或等于10天,小于30天,总经理审批;如果超过30天,总经理不能审批,提示相应拒绝信息)

代廉洁

设计模式的艺术

Databend SQL Planner 全新设计

Databend

sql 大数据 开源 #开源 databend

字节跳动端智能工程链路 Pitaya 的架构设计

字节跳动终端技术

机器学习 客户端 端智能 Python. Pitaya

[CSS入门到进阶] 4行CSS实现footer置底!超常见的需求,快来收藏

HullQin

CSS JavaScript html 前端 8月月更

【云原生| Docker】 部署 Django & mysql 项目

计算机魔术师

8月月更

基于KubeEdge的边缘节点分组管理设计与实现

华为云开发者联盟

云计算 云原生 后端

Spring源码解析(四)Spring是怎么处理BeanDefinition的?

石臻臻的杂货铺

spring 源码 8月月更

长篇图解etcd核心应用场景及编码实战

字母哥哥

Java etcd #Kubernetes#

软件测试 | 测试开发 | 常见接口协议解析

测吧(北京)科技有限公司

TCP/IP

前端小白躺平摆烂可以吗

Liam

前端 前端开发 前端面试 Mock 前端入门

软件测试 | 测试开发 | 接口测试 Mock 实战(二) | 结合 jq 完成批量化的手工 Mock

测吧(北京)科技有限公司

Mock

如何正确理解Java对象创建过程,我们主要需要注意些什么问题?

PivotalCloud

【Django | 开发】 (国际化项目&支持多语言)

计算机魔术师

8月月更

揭秘华为云GaussDB(for Redis)六大秒级能力盘点

科技云未来

演讲实录|吴亚昆:云时代智能运维与可观测性探索

观测云

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