已经迁到自己的博客,有兴趣的读者请移步到(http://jhonge.net),谢谢各位支持。

    负载均衡,无论是否真正了解过,但我相信所有跟编程打交道的读者都有听说。同时,它(负载均衡)也是被认为一个大型网站的标识性技术之一(但负载均衡的作用肯定不止这点用途)。虽然网上也有不少关于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

posted @ 2015-05-21 07:52 小蝶惊鸿 阅读(1440) 评论(5) 推荐(11) 编辑
摘要: 在上篇的《使用C#给Linux写Shell脚本》结尾中,我们留下了一个关于C#如何调用BashShell的问题。在文章发布之后,我留意到有读者留言推荐使用“Pash”(一款类PowerShell的东西),在我下载并安装了该项目之后,尝试之下发现这仍然不是我们想要的。似乎C#还真的没有提供这种(输出... 阅读全文
posted @ 2015-05-04 08:45 小蝶惊鸿 阅读(4155) 评论(8) 推荐(12) 编辑
摘要: 在这个逼格决定人格,鄙视链盛行的年头,尤其是咱们IT界,请问您今天鄙视与被鄙视的次数分别是多少?如果手中没有一点压箱的本事,那就只有看的份了。今天我们也要提升下自己的格调,学习些脑洞大开的东西,学完之后跑去群子了威吓其他群友,不就是个玩嘛,走着~~! 说起Linux中的脚本,毋庸置疑,用得最多的肯... 阅读全文
posted @ 2015-03-10 17:09 小蝶惊鸿 阅读(11866) 评论(33) 推荐(31) 编辑
摘要: 就在最近一段时间,“Visual Studio 2015 CTP 5”(以下简称CTP5)发布了,CTP5的发布不仅标志着新一代的VisualStudio正式发布又向前迈出了一步,还标志着距离ASP.NET5(vNext)的正式发布不远。跟随者CTP5,KRE也从Kre beta-1.0升级到了K... 阅读全文
posted @ 2015-02-01 22:47 小蝶惊鸿 阅读(3428) 评论(17) 推荐(15) 编辑
摘要: 这里话就不多说了,使用方法如下: wgethttp://jhonge.net/down4load/1413998270361/jwsmono_net.sh chmod a+xjwsmono_net.sh ./jwsmono_net.sh 需要看全篇文章的读者请移步到:http://... 阅读全文
posted @ 2014-10-22 17:24 小蝶惊鸿 阅读(302) 评论(0) 推荐(0) 编辑
摘要: 不得不说,jws.mono真的给我们带来了很大的便利,它免除了我们编译Linux.NET所带来的烦恼,节省了我们的时间。但是金无足赤人无完人,虽然jws.mono已经大致能够提供与我们自行编译相同的效果,不过它仍然有一点不足,那就是我们无法使用与图形处理相关的工作(System.Drawing)。... 阅读全文
posted @ 2014-10-12 20:38 小蝶惊鸿 阅读(958) 评论(1) 推荐(1) 编辑
摘要: 很多时候,我们需要做一些图像生成工作(譬如验证码之类的),这时候,我们一般都需要用到系统的字体库。但事情却总非尽善人意,我们所使用的Linux操作系统无法像Windows操作系统那样足够“旗舰”,字体这种东西,分分钟都是缺失的(譬如我们选择Minimum方式安装或者没有选择Chinese Sup... 阅读全文
posted @ 2014-10-09 21:41 小蝶惊鸿 阅读(4651) 评论(1) 推荐(2) 编辑
摘要: 就在最近两天,最新版本的jws.mono上线了,这个版本除了提供与之前版本拥有的功能外,还额外提供了一个“自动化”的安装脚本,通过执行该脚本,jws.mono将自动快速的安装到指定的目录,同时,通过改变脚本执行参数,我们还可以实现对旧版本jws.mono的升级。此外,由这个版本开始,jws.mo... 阅读全文
posted @ 2014-10-09 11:26 小蝶惊鸿 阅读(1124) 评论(2) 推荐(3) 编辑
摘要: 当前部署Linux.NET环境的方式可谓是五花八门,既有传统的源码编译的方式、又有各式各样的一键安装脚本、还有绿色包安装方式,而随着Mono官方的新站上线,更增加了采用RPM包的部署方式。那对于一名Linux.NET的初学者来说,我们又该如何选择?下面,本文将对这几种的安装方式进行优缺点的比较,从... 阅读全文
posted @ 2014-10-02 23:02 小蝶惊鸿 阅读(1560) 评论(0) 推荐(3) 编辑
摘要: 早前的一两天《Linux.NET学习手记(8)》发布了,这一篇主要是讲述OWIN框架与OwinHost之间如何根据OWIN协议进行通信构成一套完整的系统。文中我们还直接学习如何直接操作OWIN字典,从OwinHost中拿数据进行直接使用。不过文章发布之后,有朋友提示我,文章出了点细节上的问题,我细细... 阅读全文
posted @ 2014-07-20 17:49 小蝶惊鸿 阅读(1421) 评论(6) 推荐(4) 编辑
点击右上角即可分享
微信分享提示