博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
LVS学习笔记之LVS简介以及DR原理介绍
阅读量:6678 次
发布时间:2019-06-25

本文共 1893 字,大约阅读时间需要 6 分钟。

  1. lvs官网英文简介:

The Linux Virtual Server is a highly scalable and highly available server built on a cluster of real servers, with the load balancer running on the Linux operating system. The architecture of the server cluster is fully transparent to end users, and the users interact as if it were a single high-performance virtual server. For more information, click here.

中文介绍:

LVS是Linux Virtual Server的简写,意即Linux虚拟服务器,是一个虚拟的服务器集群系统。本项目在1998年5月由章文嵩博士成立,是中国国内最早出现的自由软件项目之一。

2.宗旨:

使用集群技术和Linux操作系统实现一个高性能、高可用的服务器.

很好的可伸缩性(Scalability)

很好的可靠性(Reliability)

很好的可管理性(Manageability)。

3.特点:

可伸缩网络服务的几种结构,它们都需要一个前端的负载调度器(或者多个进行主从备份)。我们先分析实现虚拟网络服务的主要技术,指出IP负载均衡技术是在负载调度器的实现技术中效率最高的。在已有的IP负载均衡技术中,主要有通过网络地址转换(Network Address Translation)将一组服务器构成一个高性能的、高可用的虚拟服务器,我们称之为VS/NAT技术(Virtual Server via Network Address Translation)。在分析VS/NAT的缺点和网络服务的非对称性的基础上,我们提出了通过IP隧道实现虚拟服务器的方法VS/TUN (Virtual Server via IP Tunneling),和通过直接路由实现虚拟服务器的方法VS/DR(Virtual Server via Direct Routing),它们可以极大地提高系统的伸缩性。VS/NAT、VS/TUN和VS/DR技术是LVS集群中实现的三种IP负载均衡技术。

三种模式:

NAT模式(VS-NAT)

IP隧道模式(VS-TUN)

直接路由模式(VS-DR)

4.下边详细介绍一下DR模式,也就是通过直接路由实现虚拟服务器(VS/DR)

跟VS/TUN方法相同,VS/DR利用大多数Internet服务的非对称特点,负载调度器中只负责调度请求,而服务器直接将响应返回给客户,可以极大地提高整个集群系统的吞吐量。该方法与IBM的NetDispatcher产品中使用的方法类似,但IBM的NetDispatcher是非常昂贵的商品化产品,我们也不知道它内部所使用的机制,其中有些是IBM的专利。

VS/DR的体系结构如图所示:调度器和服务器组都必须在物理上有一个网卡通过不分段的局域网相连,即通过交换机或者高速的HUB相连,中间没有隔有路由器。VIP地址为调度器和服务器组共享,调度器配置的VIP地址是对外可见的,用于接收虚拟服务的请求报文;所有的服务器把VIP地址配置在各自的Non-ARP网络设备上,它对外面是不可见的,只是用于处理目标地址为VIP的网络请求。

VS/DR的工作流程如图所示:它的连接调度和管理与VS/NAT和VS/TUN中的一样,它的报文转发方法又有不同,将报文直接路由给目标服务器。在VS/DR中,调度器根据各个服务器的负载情况,动态地选择一台服务器,不修改也不封装IP报文,而是将数据帧的MAC地址改为选出服务器的MAC地址,再将修改后的数据帧在与服务器组的局域网上发送。因为数据帧的MAC地址是选出的服务器,所以服务器肯定可以收到这个数据帧,从中可以获得该IP报文。当服务器发现报文的目标地址VIP是在本地的网络设备上,服务器处理这个报文,然后根据路由表将响应报文直接返回给客户。

如图所示:VS/DR的工作流程

在VS/DR中,请求报文的目标地址为VIP,响应报文的源地址也为VIP,所以响应报文不需要作任何修改,可以直接返回给客户,客户认为得到正常的服务,而不会知道是哪一台服务器处理的。

VS/DR负载调度器也只处于从客户到服务器的半连接中,按照半连接的TCP有限状态机进行状态迁移。

转载地址:http://ebyao.baihongyu.com/

你可能感兴趣的文章
node学习
查看>>
sublime当中创建自定义代码段
查看>>
【前端学习】-margin
查看>>
GitChat · 架构 | 从订单中心开始,聊“多KEY”类业务数据库水平切分架构实践...
查看>>
前端每周清单第 28 期:JS 运行原理与优化,高性能 CSS 引擎,Coursera GraphQL 实践...
查看>>
lombok的使用
查看>>
Ubuntu+phpstorm+firefox+xdebug的配置
查看>>
python小记
查看>>
带着问题学 Kubernetes 抽象对象 Service
查看>>
原理解释 - 收藏集 - 掘金
查看>>
剖析Laravel队列系统--准备队列作业
查看>>
用vue-cli创建vue项目的一个坑
查看>>
书单记录,方便后面自己买书
查看>>
用 husky 和 lint-staged 构建超溜的代码检查工作流
查看>>
移动APP中那些关乎用户体验的测试项
查看>>
MailBee.NET Objects发送电子邮件(SMTP)教程二:SMTP认证
查看>>
前端面试题:从url到页面展现,这之中发生了什么?
查看>>
sublime打开TXT文件乱码的问题
查看>>
GraphQL 入门: 简介
查看>>
git github小白看过来——中午篇
查看>>