LVS原理与使用(1)
负载均衡,无论是否真正了解过,但我相信所有跟编程打交道的读者都有听说。同时,它(负载均衡)也是被认为一个大型网站的标识性技术之一(但负载均衡的作用肯定不止这点用途)。虽然网上也有不少关于LVS配置实用的教程或帖子,但总的来说几乎都是以快餐式文化为主,内容参差不齐,不少教程本身也存在不少错误,对读者不仅没有帮助,反而造成了视线干扰。因此,本系列,我们将使用较大的篇幅(60%左右)来讲对LVS的前提知识的进行补充以及其原理进行讲解,然后用较少的篇幅(30%左右)来讲解具体操作,最用用剩余的篇幅(10%左右)来讲解需要注意的地方。希望借此让各位读者能够从真正意义上了解LVS。
好的,作为本系列的开篇,本章内容中,我们将讲述:
(1)、LVS的简介
(2)、LVS的优势
一、LVS简介
负载均衡是什么我就懒得解析了,目前市面上的负载均衡设备主要分为两个方面,其一就是基于硬件的负载均衡设备,譬如Cisco(思科)的交换机、华为的硬件机器、F5、梭子鱼等。这些设备通常以整套产品(软+硬+服务)的方式进行出售,用户按照自身需求购买,一般均能达到良好的预期结果,此外这些设备的设备商也提供了一站式服务,让您的后期的维护省下不少的烦恼。不过由于这些设备一般售价较高,后期的维护也可能需要支付一笔不菲的费用,这也使得不少的中小企业因无法承担这笔开支而选择放弃。
而另外一种则是软件型的负载均衡,这一类的负载均衡都是基于操作系统内核或者是以运行于操作系统中的软件服务的形式提供负载均衡服务。比较经典的是LVS、NLB以及某些提供轮询或代理功能的软件等。这种方式最大的好处就是能够以相对低廉的价格获得同样的服务,但这种方式通常没有任何的机构提供任何的支持服务(给维护费除外),也难以获得任何所谓的一站式服务,对使用者本身的技术掌握能力要求也较高。
我们再用一句话来概括LVS:LVS,全称是“Linux Virtual Server”,它是我国(中国)国内最早出现的自由软件项目之一,在1998年5月由章文嵩先生立项成立,通过基于内容的分发的形式让多台真实服务器同时处理来自外部的多个请求,从而提升整体服务的吞吐性能,其核心为ipvsadm,目前LVS的使用已经遍布互联网的每个角落,几乎所有有使用Linux作为服务器的大型企业都有使用。
二、LVS的优势
LVS的初次配置使用并算不上特别的容易,而后期的维护就更加考验经验,与之同时,也有不少用户在使用一些其他软件来提供负载均衡功能,比较经典的例子就是PHPer们号称的最强webserver服务器Nigix,用它来做代理(咳咳,Linux中没有比Jexus更强的WebServer)。这些后者的方式相对来说操作更加简单,因此有很多的负载均衡均是使用一台装有Nginx之类的服务器来充当。不过即便如此,LVS仍然均有它们所的无法比拟的好处。
为了说清楚它的优势,我们需要先回顾一下OSI七层网络模型的知识。
上图为大家所熟知的OSI七层模型,数据从应用程序发出经由应用层、表示层、会话层(目前上面三层可以合并为一层)……经过层层封装到达链路层,然后再化为0101二进制,再以比特流的形式在物理线路上进行传输。数据流到达目的计算机后,也按照相反的步骤从下往上的层层解包,最后到达应用层并把数据传递给应用程序。
普通的负载均衡软件,主要都是工作在三层到顶层之间,从理论上来讲越是工作在上层的服务就意味着数据包的传输需要进行越多的打包和拆包工作,性能的消耗也越是厉害(当然,单个数据包的消耗极小,几乎可以忽略,这里指海量数据包),代理软件一般工作在三层/四层之中,WebServer工作在五到七层之中,而LVS则可以工作在二层之中(数据链路层),我想剩余的不用我多说,读者们也应该马上意识到它的将会有多高效。
此外,由于OSI网络具有透明性(上层对下层说:数据给你,剩下的我不管了【不管你怎么传输,也不管是否可达】),所有上层协议都是建立在透明的下层的基础上,我们只要把下层搞定了,上层协议也自然“被”兼容,因此LVS可以无需担心任何Http协议、Telnet协议、Https协议等高层协议的问题,具有极强的兼容能力。
最后,一般的高层网络负载均衡设备主要使用NAT技术来实现负载均衡,所有的数据请求与应答的流量都需要经过负载均衡服务器,这不仅相当容易给负载均衡服务器造成巨大的压力、造成性能上的瓶颈,而且由于数据经过NAT的转换,数据包中源IP将发生改变,这也很容易造成“后方”服务器上的安全监控设备产生误判,造成误杀。而LVS不仅可以使用NAT的方式进行负载均衡,使用非NAT的方式,利用三角网络的形式进行负载均衡,应答的数据不再经由负载均衡服务器(一般情况,应答才是流量的大头),并且LVS此时不改变数据包的源IP,仅仅通过改变MAC的方式,以广播的方式直接向“后方”服务器发送数据,避免了监控的误杀。
好的,关于LVS的介绍,我们就暂且告一段落,下一篇,我们将开始进入到LVS的学习使用当中,我们下篇见。
原文地址:http://jhonge.net/Home/Single2/1972
LVS原理与使用(1)的更多相关文章
- LVS原理详解(3种工作方式8种调度算法)--老男孩
一.LVS原理详解(4种工作方式8种调度算法) 集群简介 集群就是一组独立的计算机,协同工作,对外提供服务.对客户端来说像是一台服务器提供服务. LVS在企业架构中的位置: 以上的架构只是众多企业里面 ...
- LVS原理详解(3种工作模式及8种调度算法)
2017年1月12日, 星期四 LVS原理详解(3种工作模式及8种调度算法) LVS原理详解及部署之二:LVS原理详解(3种工作方式8种调度算法) 作者:woshiliwentong 发布日期: ...
- lvs原理及各种调度算法详解
LVS原理详解 LVS原理详解 LVS简介 LVS结构与工作原理 一.LVS的结构 二.LVS内核模型 三.LVS的包转发模型 1.NAT模型: 2.DR模型: 3.TUN模型: 四.LVS的调度算法 ...
- LVS原理详解
一.集群简介 什么是集群 计算机集群简称集群是一种计算机系统,它通过一组松散集成的计算机软件和/或硬件连接起来高度紧密地协作完成计算工作.在某种意义上,他们可以被看作是一台计算机.集群系统中的单个计算 ...
- Lvs原理
官方文档: http://www.linuxvirtualserver.org/zh/lvs1.html http://www.linuxvirtualserver.org/zh/lvs2.html ...
- 架构设计:负载均衡层设计方案(4)——LVS原理
之前我们花了两篇文章的篇幅,详细讲解了Nginx的原理.安装和特性组件.请参看<负载均衡层设计方案(2)——Nginx安装>(http://blog.csdn.net/yinwenjie/ ...
- LVS原理详解及部署之二:LVS原理详解(3种工作方式8种调度算法)
一.集群简介 什么是集群 计算机集群简称集群是一种计算机系统,它通过一组松散集成的计算机软件和/或硬件连接起来高度紧密地协作完成计算工作.在某种意义上,他们可以被看作是一 台计算机.集群系统中的单个计 ...
- LVS原理讲解
一.lvs介绍 LVS的英文全名为"Linux Virtual Server",即Linux虚拟服务器,是一个虚拟的四层交换器集群系统,根据目标地址和目标端口实现用户请求转发,本身 ...
- LVS原理详解(3种工作方式8种调度算法)
一.集群简介 什么是集群 计算机集群简称集群是一种计算机系统,它通过一组松散集成的计算机软件和/或硬件连接起来高度紧密地协作完成计算工作.在某种意义上,他们可以被看作是一台计算机.集群系统中的单个计算 ...
随机推荐
- 提高 ASP.NET Web 应用性能
转载:http://www.codeceo.com/article/24-ways-improve-aspnet-web.html 在这篇文章中,将介绍一些提高 ASP.NET Web 应用性能的方法 ...
- WPF下的Richtextbox中实现表格合并,添加删除行列等功能
.Net中已有现在的方法实现这些功能,不过可能是由于未完善,未把方法公开出来.只能用反射的方法去调用它. 详细信息可以查看.Net Framework 的源代码 http://referencesou ...
- CentOS 7 安装后没有ifconfig命令
/bin,/sbin,/usr/bin,/usr/sbin下面都没有ifconfig命令. 执行命令 yum install net-tools 即可.
- Dev GridView行拖拽
http://blog.csdn.net/keyrainie/article/details/8513802 http://www.cnblogs.com/qq4004229/archive/2012 ...
- angular使用select时要注意的坑
一.错误使用产生的坑--留白 公司前段时间要搞一个后台系统,为了快选了angular,在使用select标签的时候碰到一个小问题,首先我们先来看坑图,如图1所示. 如图所示,出现了留白,也就是当我们使 ...
- WooCommerce插件设置教程之设置主页
http://demo.themes4wp.com/documentation/homepage-setup/#videoimage-tutorial
- Python 学习第十六天 html 前端内容总结
一,css知识总结 1, css属性 css的属性包括以下内容 position:规定元素的定位类型 background:属性在一个声明中设置所有的背景属性 可以设置的如下属性: (1)back ...
- 详细讲述MySQL中的子查询操作 (来自脚本之家)
继续做以下的前期准备工作: 新建一个测试数据库TestDB: ? 1 create database TestDB; 创建测试表table1和table2: ? 1 2 3 4 5 6 7 8 9 1 ...
- react native 键盘遮挡按钮点击事件
在做项目的时候,我遇到一个很奇怪的问题,我先描述一下问题,在InputText输入内完成以后,点击按钮进行下一步的操作的时候,第一次点击的时候,按钮没有响应,第二次点击的时候才会响应.这样对用户体验有 ...
- POJ 2774 Long Long Message ——后缀数组
[题目分析] 用height数组RMQ的性质去求最长的公共子串. 要求sa[i]和sa[i-1]必须在两个串中,然后取height的MAX. 利用中间的字符来连接两个字符串的思想很巧妙,记得最后还需要 ...