所谓SQL注入,就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令,比如先前的很多影视网站泄露VIP会员密码大多就是通过WEB表单递交查询字符暴出的,这类表单特别容易受到SQL注入式攻击。 原理 SQL注入攻击指的是通过构建特殊的输入作为参数传入Web应用程序,而这些输入大都是SQL语法里的一些组合,通过执行SQL语句进而执行攻击者所要的操作,其主要原因是程序没有细致地过滤用户输入的数据,致使非法数据侵入系统。 根据相关技术原理,SQL注入可以分为平台层注入和代码层注入。前者由不安全的数据库配置或数据库平台的漏洞所致;后者主要是由于程序员对输入未进行细致地过滤,从而执行了非法的数据查询。基于此,SQL注入的产生原因通常表现在以下几方面:①不当的类型处理;②不安全的数据库配置;③不合理的查询集处理;④不当的错误处理;⑤转义字符处理不合适;⑥多个提交处理不当。 防护归纳一下,主要有以下几点: 1.永远不要信任用户的输入。对用户的输入进行校验,可以通过正则表达式,或限制长度;对单引号和 双"-"进行转换等。 2.永远不要使用动态拼装sql,可以使用参数化的sql或者直接使用存储过程进行数据查询存取。 3.永远不要使用管理员权限的数据库连接,为每个应用使用单独的权限有限的数据库连接。 4.不要把机密信息直接存放,加密或者hash掉密码和敏感的信息。 5.应用的异常信息应该给出尽可能少的提示,最好使用自定义的错误信息对原始错误信息进行包装。 SQL注入技术 强制产生错误 对数据库类型、版本等信息进行识别是此类型攻击的动机所在。它的目的是收集数据库的类型、结构等信息为其他类型的攻击做准备,可谓是攻击的一个预备步骤。利用应用程序服务器返回的默认错误信息而取得漏洞信息。采用非主流通道技术 除HTTP响应外,能通过通道获取数据,然而,通道大都依赖与数据库支持的功能而存在,所以这项技术不完全适用于所有的数据库平台。SQL注入的非主流通道主要有E-mail、DNS以及数据库连接,基本思想为:先对SQL查询打包,然后借助非主流通道将信息反馈至攻击者。 使用特殊的字符 不同的SQL数据库有许多不同是特殊字符和变量,通过某些配置不安全或过滤不细致的应用系统能够取得某些有用的信息,从而对进一步攻击提供方向。 使用条件语句 此方式具体可分为基于内容、基于时间、基于错误三种形式。一般在经过常规访问后加上条件语句,根据信息反馈来判定被攻击的目标。 利用存储过程 通过某些标准存储过程,数据库厂商对数据库的功能进行扩展的同时,系统也可与进行交互。部分存储过程可以让用户自行定义。通过其他类型的攻击收集到数据库的类型、结构等信息后,便能够建构执行存储过程的命令。这种攻击类型往往能达到远程命令执行、特权扩张、拒绝服务的目的。 避开输入过滤技术 虽然对于通常的编码都可利用某些过滤技术进行SQL注入防范,但是鉴于此种情况下也有许多方法避开过滤,一般可达到此目的的技术手段包括SQL注释和动态查询的使用,利用截断,URL编码与空字节的使用,大小写变种的使用以及嵌套剥离后的表达式等等。借助于此些手段,输入构思后的查询可以避开输入过滤,从而攻击者能获得想要的查询结果。 推断技术 能够明确数据库模式、提取数据以及识别可注入参数。此种方式的攻击通过网站对用户输入的反馈信息,对可注入参数、数据库模式推断,这种攻击构造的查询执行后获得的答案只有真、假两种。基于推断的注入方式主要分为时间测定注入与盲注入两种。前者是在注入语句里加入语句诸如“waitfor 100”,按照此查询结果出现的时间对注入能否成功和数据值范围的推导进行判定;后者主要是“and l=l”、“and l=2”两种经典注入方法。这些方式均是对一些间接关联且能取得回应的问题进行提问,进而通过响应信息推断出想要信息,然后进行攻击。 SQL注入防范 要防御SQL注入,用户的输入就绝对不能直接被嵌入到SQL语句中。恰恰相反,用户的输入必须进行过滤,或者使用参数化的语句。参数化的语句使用参数而不是将用户输入嵌入到语句中。在多数情况中,SQL语句就得以修正。然后,用户输入就被限于一个参数。输入验证 检查用户输入的合法性,确信输入的内容只包含合法的数据。数据检查应当在客户端和服务器端都执行之所以要执行服务器端验证,是为了弥补客户端验证机制脆弱的安全性。 在客户端,攻击者完全有可能获得网页的源代码,修改验证合法性的脚本(或者直接删除脚本),然后将非法内容通过修改后的表单提交给服务器。因此,要保证验证操作确实已经执行,唯一的办法就是在服务器端也执行验证。你可以使用许多内建的验证对象,例如Regular Expression Validator,它们能够自动生成验证用的客户端脚本,当然你也可以插入服务器端的方法调用。如果找不到现成的验证对象,你可以通过Custom Validator自己创建一个。 错误消息处理 防范SQL注入,还要避免出现一些详细的错误消息,因为黑客们可以利用这些消息。要使用一种标准的输入确认机制来验证所有的输入数据的长度、类型、语句、企业规则等。 加密处理 将用户登录名称、密码等数据加密保存。加密用户输入的数据,然后再将它与数据库中保存的数据比较,这相当于对用户输入的数据进行了“消毒”处理,用户输入的数据不再对数据库有任何特殊的意义,从而也就防止了攻击者注入SQL命令。 存储过程来执行所有的查询 SQL参数的传递方式将防止攻击者利用单引号和连字符实施攻击。此外,它还使得数据库权限可以限制到只允许特定的存储过程执行,所有的用户输入必须遵从被调用的存储过程的安全上下文,这样就很难再发生注入式攻击了。 使用专业的漏洞扫描工具 攻击者们目前正在自动搜索攻击目标并实施攻击,其技术甚至可以轻易地被应用于其它的Web架构中的漏洞。企业应当投资于一些专业的漏洞扫描工具,如大名鼎鼎的Acunetix的Web漏洞扫描程序等。一个完善的漏洞扫描程序不同于网络扫描程序,它专门查找网站上的SQL注入式漏洞。最新的漏洞扫描程序可以查找最新发现的漏洞。 确保数据库安全 锁定你的数据库的安全,只给访问数据库的web应用功能所需的最低的权限,撤销不必要的公共许可,使用强大的加密技术来保护敏感数据并维护审查跟踪。如果web应用不需要访问某些表,那么确认它没有访问这些表的权限。如果web应用只需要只读的权限,那么就禁止它对此表的 drop 、insert、update、delete 的权限,并确保数据库打了最新补丁。 安全审评 在部署应用系统前,始终要做安全审评。建立一个正式的安全过程,并且每次做更新时,要对所有的编码做审评。开发队伍在正式上线前会做很详细的安全审评,然后在几周或几个月之后他们做一些很小的更新时,他们会跳过安全审评这关, “就是一个小小的更新,我们以后再做编码审评好了”。请始终坚持做安全审评。
View Details1.启动和停止MongoDB 执行mongod,启动MongoDB服务器。mongod有很多选项,在命令中执行 mongod --help 主要选项如下: --dbpath 指定数据目录,默认值是C:\data\db。每个mongod进程都需要独立的数据目录。如果要是有3个mongod 实例,那么必须有3个独立的数据目录。当mongod启动时,会在数据库目录中创建mongod.lock文件 这个文件用于防止其他的mongod纯净使用该数据目录。 --port 指定服务器监听的端口号,默认端口27017.要运行多个mongod进程,则要给每个指定不同的端口号。 --logpath 指定日志的输出路径。如果对文件夹有读写权限,系统会在文件不存在时创建它。它会将已有文件覆盖掉, 清除所有原来的日志记录。如果想要保留原来的日志,需使用--logappend选项。 --config 指定配置文件,加载命令行未指定的各种选项。 2.从配置文件启动 MongoDB支持从文件获取配置信息.当需要配置非常多或者要自动化MongoDB的启动时会用到. 指定配置文件可以用-f或--config选项. 如: mongod --config refactorConfig.txt refactorConfig.txt内容如下: #start MongoDB port = 10000 dbpath = "f:\mongo\db" logpath = "f:\mongo\log\MongoDB.txt" rest = true 配置文件和命令行的功能一样 mongod --dbpath "f:\mongo\db" --logpath "f:\mongo\log\MongoDB.txt" --rest --port 10000 配置文件的特点: a.以#开头的行是注释 b.指定选项的语法是这种"选项=值"的形式.选项是区分大小写的. c.命令行如--rest的开关选项,值要设为true 3.停止MongoDB 可以使用shutdown命令{"shutdown":1},这个命令要在admin数据库下使用.shell还提供了辅助函数: use admin db.shutdownServer() 4. 监控 使用管理接口,默认情况下,启动mongod会启动基本的http服务器,该服务的默认端口是28017.可以在浏览器中输入 localhost:28017.有些链接需要在mongod启动时,用--rest选项开启rest支持 才能进去.当开启rest支持后,可以 在mongod启动时使用--nohttpinterface来关闭管理接口. 5.serverStatus 要获取运行中的MongoDB服务器统计信息,最基本的工具是serverStatus命令 db.runCommand({"serverStatus":1}) serverStatus返回的键解释: "globalLock"的值表示全局写入锁占用了服务器多少时间(单位微秒) "mem"包含服务器内存映射了多少数据,服务器进程的虚拟内存和常驻内存的占用情况(单位MB) "indexCounters"表示B树在磁盘检索("misses")和内存检索("hits")的次数.如果这个比值开始上升,就要考虑加内存了. "backgroundFlushing"表示后台做了多少次fsync以及用了多少时间 "opcounters"文档包含了每种主要操作的次数 "asserts"统计了断言的次数 6.mongostat serverStatus虽然强大,但对服务器的监控来说不怎么容易.MongoDB提供了mongostat mongostat输出一些serverStatus提供的重要信息,它会每秒输出新的一行,比之前看到的静态数据实时性要好. 它输出多个列,分别是 inserts/s commands/s vsize 和 %locked,与serverStatus的数据相对应. 还可以使用第三方插件进行数据库的监控. […]
View Details多win7用户都会发现,C盘越用越大,C:/WINDOWS/winsxs文件夹已经10多个G,都是一些系统更新,想删又不能删,毕竟里面还是有一些重要的系统文件。难道只有重装系统了么?终于,在2013年10月上旬,Microsoft Update发布了KB2852386(微软官方文档: http://support.microsoft.com/kb/2852386/en),来解决winsxs这个庞大的文件夹。先来看一下lz的winsxs(位于系统盘windows目录下):由于一个月前刚重装了系统,还不是很大,不过也已经9个多G了。 首先是下载KB2852386补丁:(由于该更新程序标记为“重要”级别,而不是“严重”级别,用户需要手动下载离线安装包。)下载地址:http://www.microsoft.com/downloads/details.aspx?FamilyId=ef4d5b48-37e1-422a-ae7d-2c887ffb7c6d64位系统下载地址:http://www.microsoft.com/downloads/details.aspx?FamilyId=ab8a91f0-e1ab-41ee-8eea-21079c4c7844 重启您的计算机 启动磁盘清理程序向导。若要执行此操作,请使用下列方法之一:方法 1: 单击开始键入 cleanmgr 在开始搜索 框中,然后再单击确定。方法 2: 单击开始、所有程序、附件、系统工具,然后单击磁盘清理。 择 Windows 7 系统驱动器,然后单击确定。(通常为“C:\”)注意因为磁盘清理向导搜索要清理的驱动器上的文件,此操作可能需要几秒钟。 果未显示在磁盘清理选项卡上的 Windows 更新清除选项,请单击清除系统文件。如果 Windows 更新清除选项显示在磁盘清理选项卡上,转到步骤 5。注意仅当您使用管理员权限登录时,Windows 更新清除选项才可用。 择 Windows 7 系统驱动器,然后单击确定。在磁盘清理 选项卡,选择Windows 更新清除,然后单击确定。注意默认情况下, Windows 更新清除 选项已被选中。 出现一个对话框,请单击删除文件。清理过程可能在几分钟到几十分钟左右,请不要突然断电源,清理结束以后你会发现你的WINSXS文件夹明显小了很多。附:winsxs的用途Win7有一个WinSxS目录用于存放Windows Update安装后的备份文件。微软设计开发Win7时,每当有一次新的Service Pack服务包发布后,用户可以选择删除清理所有目录中不需要的过时的Windows Update的备份文件。但问题是,微软公司为2009年发行的Win7仅提供一次Service Pack服务升级包,即Win7 SP1。而SP1发布后,微软再也没有计划发布第二版的SP服务包。意味着,WinSxS目录中已被超过两年的Windows Update备份文件所影响,包括本周之前发布的安全更新在内。所以本月的周二补丁日,微软没有发布一次完整的Service Pack服务升级包,而是发布一枚更新程序,用于清除Win7 SP1之后WinSxS目录里存放的过时的Windows Update备份文件。 from:http://jingyan.baidu.com/article/456c463b9b20350a583144f4.html
View Details中式台球规则(草案) 第一章 通则 通则列明了诸如着装要求、申诉程序、赛程安排等未包含在比赛规则中,但又在实际比赛中需要约定的事宜。通则内容在每次比赛中都不同,例如单场局数、开球顺序等。比赛组委会有权根据通则精神在赛前确定并依此执行。相对而言,比赛规则需要在比赛过程中严格执行。 1. 比赛规则特例 比赛规则不允许被随意更改,除非得到中国台球协会许可,对规则临时变动的书面解释应在赛前运动员会议中公布。 2. 选手服装要求 每位选手的服装必须符合比赛要求并且整洁干净。如果选手不确定自己的服装是否符合要求,可以在赛前向赛事总监确认。赛事总监对服装要求有最终决定权。特殊情况时,赛事总监可以允许服装不符合要求的选手参加比赛,例如航班托运行李遗失、选手特殊身体状况等情况。选手可能会因为服装未达要求而被取消比赛资格。 如果在比赛前没有宣布关于服装的具体要求,则默认采用下列服装要求。 2.1 男子 男选手可以穿着任何颜色的有领子、袖子的衬衫或者POLO衫(有袖T恤衫),上衣必须束在裤子里。 裤子的颜色为深色,要注意的是不允许穿着任何牛仔裤或者牛仔面料的裤子。 鞋子必须是正规而且与全身装束匹配的款式,不允许穿着运动鞋或凉鞋。在赛事总监允许的情况下选手可以穿着皮质或者仿皮材质的运动鞋。 2.2 女子 女选手的上装可以是衬衫、休闲衬衫、POLO衫(有领T恤衫)或者其他款式优雅、庄重的女士上装。 对裤装颜色没有特殊要求,要注意的是不允许穿着任何牛仔裤或者牛仔面料的裤子,女选手可以穿着裙子参加比赛。 鞋子必须是正规而且与全身装束匹配的款式,不允许穿着运动鞋或凉鞋。在赛事总监允许的情况下选手可以穿着皮质或者仿皮材质的运动鞋。 3. 裁判守则 3.1 裁判应: (a) 是一场比赛的唯一裁决者,对比赛中所发生的一切作出判决; (b) 负责执行比赛规则并维持比赛顺利进行; (c) 裁判应当回答选手提出的有关客观事实以及与比赛规则相关的问题; (d) 在有违公平竞赛原则时,裁判有权推迟比赛进程,这种权力同样适用于出现争议时; (e) 如果规则没有涵盖比赛过程中出现的特殊情况,裁判可以在公平竞赛原则下对该状况作出判决; (f) 如果被要求,可以告知击球选手目标球的颜色或号码; (g) 在合理要求下清洁任何台面上的球; (h) 协助选手拿出或放回架杆等辅助设备。 3.2 裁判不应: (a) 回答任何与规则无关的问题; (b) 提示击球选手该次击球可能会出现的犯规; (c) 提供足以影响赛事的建议和意见; 3.3 如果裁判没能注意到某争议情况,他可以参考在场的记分员,其他赛事工作人员或看台中所处最佳位置观众的意见后作出裁决。 4. “区域裁判”形式的比赛 “区域裁判”形式的比赛是指一名裁判同时执裁几张球台上进行的比赛,而不是单一执裁一场比赛。这种情况下,选手仍然需要遵守比赛规则。具体建议如下: 非击球选手将承担裁判的职责。如果在击打前,击球选手认为对手将无法对他的击打作出适当判罚,该选手可以让裁判在一边观看这一击打过程。同样,非击球选手也可以在不肯定或不愿意执裁某情况时寻求裁判的帮助。任何一方都有权暂停比赛直到他对比赛的执裁结果表示满意。 当选手间出现争执情况,裁判将对他并没有亲眼所见的情况进行判罚,这时裁判需要在尽可能全面了解当时的情况后谨慎的作出判罚,这个过程可以包括询问其他目击者、回放比赛录相以及重新演示之前的击打过程等。当裁判被要求裁定是否有犯规情况出现,而同时没有明显的迹象表明确实是犯规,除非在一方声称自己没有犯规时对方提出抗议,否则均假定没有犯规行为的发生。 5. 球的摆放 目前普遍使用排球纸和三角架摆球。当球局开始,排球纸或三角架放在置球区,所有的球被放置在排球纸或三角架的框内然后被摆放在置球区。使用排球纸摆球与使用三角架摆球的优势是保证快速、紧贴的将球摆放好。比赛使用何种器械摆球由赛事组委会决定。摆球是裁判的职责,球员不能自行摆球,除非赛事组委会有明确要求。 6. 贴库球以及贴球的宣告 裁判应在目标球可能贴库或贴主球的情况下认真观察并作出宣告,选手可以在必要情况下提醒裁判对此类情况作出宣告。选手必须给予裁判充足的时间作出判定。 7. 重新摆放/复原球的位置 在任何情况下当一颗球需要重新被摆放或复原时,唯一有权单独执行该任务的是裁判。裁判可以以任何方式在合适的时间执行该规则,并且可以询问双方选手,任一选手所提出未有争议的建议可以被采纳。任一选手可对裁判的看法提出一次异议,但在这之后,裁判的最终判断将决定球的重新摆放或复原位置。 8. 防止外界干扰 裁判应避免比赛受到干扰,例如来自邻桌选手或观众的干扰,如有必要比赛可因此暂停或推迟。干扰可以是来自肢体或语言等方面。由于外界干扰导致选手出现犯规,该选手无需负责。 9.不可抗拒因素 比赛中可能会出现规则未列出且无法预料的情况。出现此情况时,裁判会在公平竞赛的原则下作出判决,必要时一局比赛可能会被移至另一张球台进行,球的位置无法移动时裁判宣布该局比赛为僵局。 10.教练 比赛中允许选手接受教练的指导。但选手连续击打时,这种情况不被准予,因为这将影响比赛的连贯性。裁判和赛事组委会有权对此设定附加限制。选手有权请求暂停以向教练获取帮助,但教练不得接近比赛台面。如果裁判认为一名教练干扰或影响了比赛,可责令该教练远离比赛球台。 11.对比赛器材的默认接受 在一次巡回赛或一次单独比赛开始后,球员无权置疑比赛组织者所提供器材的质量及权威性。相关抗议必须在比赛正式开始前提出。 12.选手对器材的使用 选手使用的器材必须符合中国台球协会对器材的规定。通常来说,选手们不可以在比赛中使用其他新式器材。以下提及的器材是合法的。如果一名选手对器材的某一特殊用途有疑问,应当在比赛前询问赛事组委会并得到明确答复。除了器材本身设计的使用方式外,选手不得改变其用途。 (a) 球杆:允许选手在比赛期间调换球杆,例如开球杆,跳杆及普通杆。选手可以使用内置的或外接的球杆延长器以增加球杆的长度。 (b) 巧粉:选手可以使用巧粉以防止杆头打滑,并且可以自带巧粉,但巧粉的颜色需与台尼颜色匹配。 (c) 架杆:选手可以同时使用超过两种以上架杆来支撑球杆。选手可以使用自己的架杆,但该架杆必须符合规定或得到当值裁判认可。 (d) 手套:选手可以使用帮助握杆或手架的手套。 (e) 滑石粉:在裁判认为合理用量的情况下允许选手使用滑石粉。 13.迟到 选手必须在规定的比赛时间到达球台并准备开始比赛。如果一名选手在规定时间未出现,则依照赛前约定的处罚办法处罚。如果两名选手均迟到,则根据各自情况分别给予相应处罚。对于反复迟到的选手,赛会可采用更严格的处罚办法。 […]
View DetailsWindows server 2012网络负载均衡NLB 今天把NLB给装了下,就截图分享给大家吧,其实界面貌似和2003都差不多,基本上没有什么改变,算是给大家熟悉界面了。 虽然工作组也可以搭建NLB,不过实际公司使用大多数都是域环境,对于工作组我就不多做介绍了,大家可以自行百度,本次因为是实验,所以我在虚拟机里面给每台机器只加了一块网卡,一般来说,都是需要两块以上的网卡的 我这里有三台机器,NLB1,NLB2和NLB3 首先打开NLB2和NLB3服务器管理器,添加网络负载均衡NLB 接下来在NLB1机器搭建域环境 这里我们的域名就设置为loveworld.com 环境搭起来后,我们就开始配置NLB,打开负载均很管理器,选择新建 添加一台机器作为一个节点 基本上按照默认设置就可以 设置一个集群ip,以后我们访问这个ip就可以了 这里我们设置为多播,关于多播和单播,建议大家百度下,大家也可先把实验做完,然后再百度深入理解 然后添加另外一台机器 这里的优先级设置为2 配置完成 为了方便验证,我们在NLB2和NLB3两台机器上安装了IIS,然后设置index.htm分别显示为NLB2、NLB3。 我们在NLB1上首先ping一下集群的ip 10.1.1.1,可以ping通,然后再NLB1上打开浏览器,输入http://10.1.1.1,如图: 在这里我们可以发现是打开的NLB2的WEB服务,我们将NLB2这台机器暂停掉 然后清空IE历史记录,重新在NLB1上输入http://10.1.1.1 在这里,我们看到,自动切换到了NLB3上面 在实际操作过程中,我们可以搭建两台web服务器,两台web服务器可以用DFS文件服务实现同步,其中一台挂掉了,另外一台就会自动切换过去,两台都没挂掉的情况下,还可以实现负载均衡,大大的提高了web服务的效率和安全性。 from:http://www.shangxueba.com/jingyan/1657358.html
View Details1、安装JDK1.6或更高版本 官网下载JDK,安装时注意,最好不要安装到带有空格的路径名下,例如:Programe Files,否则在配置Hadoop的配置文件时会找不到JDK(按相关说法,配置文件中的路径加引号即可解决,但我没测试成功)。 2、安装Cygwin Cygwin是Windows平台下模拟Unix环境的工具,需要在安装Cygwin的基础上安装Hadoop,下载地址:http://www.cygwin.com/ 根据操作系统的需要下载32位或64的安装文件。 1)、双击下载好的安装文件,点击下一步,选择install from internet 2)、选择安装路径 3)、选择local Package Directory 4)、选择您的Internet连接方式 5)、选择合适的安装源,点击下一步 6)、在Select Packages界面里,Category展开net,选择如下openssh和openssl两项 如果要在Eclipe上编译Hadoop,需要安装Category为Base下的sed 如果想在Cygwin上直接修改hadoop的配置文件,可以安装Editors下的vim 7)、点击“下一步”,等待安装完成。 3、配置环境变量 在“我的电脑”上点击右键,选择菜单中的“属性",点击属性对话框上的高级页签,点击”环境变量"按钮,在系统变量列表里双击“Path”变量,在变量值后输入安装的Cygwin的bin目录,例如:D:\hadoop\cygwin64\bin 4、安装sshd服务 双击桌面上的Cygwin图标,启动Cygwin,执行ssh-host-config -y命令 执行后,会提示输入密码,否则会退出该配置,此时输入密码和确认密码,回车。最后出现Host configuration finished.Have fun!表示安装成功。 输入net start sshd,启动服务。或者在系统的服务里找到并启动Cygwin sshd服务。 可能会遇到无法安装和启动sshd服务的问题,可参考此连接http://www.cnblogs.com/kinglau/p/3261886.html。 另外如果是Win8操作系统,启动Cygwin时,需要以管理员身份运行(右键图标,选择以管理员身份运行),否则会因为权限问题,提示“发生系统错误5”。 5、配置SSH免密码登录 执行ssh-keygen命令生成密钥文件 如下图所示,输入:ssh-keygen -t dsa -P " -f ~/.ssh/id_dsa,注意-t -P -f参数区分大小写。 ssh-keygen是生成密钥命令 -t 表示指定生成的密钥类型(dsa,rsa) -P表示提供的密语 -f指定生成的密钥文件。 注意:~代表当前用户的文件夹,/home/用户名 执行此命令后,在你的Cygwin\home\用户名 路径下面会生成.ssh文件夹,可以通过命令ls -a /home/用户名 查看,ssh -version命令查看版本。 执行完ssh-keygen命令后,再执行下面命令,就可以生成authorized_keys文件了。 cd ~/.ssh/ cp id_dsa.pub authorized_keys 如下图所示: 然后执行exit命令,退出Cygwin窗口 6、再次在桌面上双击Cygwin图标,打开Cygwin窗口,执行ssh localhost命令,第一次执行该命令会有提示,输入yes后,回车即可。如下图所示 7、安装Hadoop hadoop官网下载http://hadoop.apache.org/releases.html。 把hadoop压缩包解压到/home/用户名 目录下,文件夹名称更改为hadoop,可以不修改,但后边在执行命令时稍显麻烦。 (1)单机模式配置方式 单机模式不需要配置,这种方式下,Hadoop被认为是一个单独的Java进程,这种方式经常用来调试。 (2)伪分布模式 可以把伪分布模式看作是只有一个节点的集群,在这个集群中,这个节点既是Master,也是Slave,既是NameNode,也是DataNode,既是JobTracker,也是TaskTracker。 这种模式下修改几个配置文件即可。 配置hadoop-env.sh,记事本打开改文件,设置JAVA_HOME的值为你的JDK安装路径,例如: JAVA_HOME="D:\hadoop\Java\jdk1.7.0_25" 配置core-site.xml
1 2 3 4 5 6 7 8 9 10 11 12 13 |
<?xml version="1.0"?> <?xml-stylesheet type="text/xsl" href="configuration.xsl"?> <!-- Put site-specific property overrides in this file. --> <configuration> <property> <name>fs.default.name</name> <value>hdfs://localhost:9000</value> </property> <property> <name>mapred.child.tmp</name> <value>/home/u/hadoop/tmp</value> </property> </configuration> |
配置hdfs-site.xml
1 2 3 4 5 6 7 8 9 |
<?xml version="1.0"?> <?xml-stylesheet type="text/xsl" href="configuration.xsl"?> <!-- Put site-specific property overrides in this file. --> <configuration> <property> <name>dfs.replication</name> <value>1</value> </property> </configuration> |
配置mapred-site.xml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
<?xml version="1.0"?> <?xml-stylesheet type="text/xsl" href="configuration.xsl"?> <!-- Put site-specific property overrides in this file. --> <configuration> <property> <name>mapred.job.tracker</name> <value>localhost:9001</value> </property> <property> <name>mapred.child.tmp</name> <value>/home/u/hadoop/tmp</value> </property> </configuration> |
8、启动Hadoop 打开Cgywin窗口,执行cd […]
View Details1、Linux集群主要分成三大类( 高可用集群, 负载均衡集群,科学计算集群)(下面只介绍负载均衡集群) 负载均衡集群(Load Balance Cluster) 负载均衡系统:集群中所有的节点都处于活动状态,它们分摊系统的工作负载。一般Web服务器集群、数据库集群和应用服务器集群都属于这种类型。 负载均衡集群一般用于相应网络请求的网页服务器,数据库服务器。这种集群可以在接到请求时,检查接受请求较少,不繁忙的服务器,并把请求转到这些服务器上。从检查其他服务器状态这一点上看,负载均衡和容错集群很接近,不同之处是数量上更多。 2、负载均衡系统: 负载均衡又有DNS负载均衡(比较常用)、IP负载均衡、反向代理负载均衡等,也就是在集群中有服务器A、B、C,它们都是互不影响,互不相干的,任何一台的机器宕了,都不会影响其他机器的运行,当用户来一个请求,有负载均衡器的算法决定由哪台机器来处理,假如你的算法是采用round算法,有用户a、b、c,那么分别由服务器A、B、C来处理; 3、分布式是指将不同的业务分布在不同的地方。 而集群指的是将几台服务器集中在一起,实现同一业务。 分布式中的每一个节点,都可以做集群。 而集群并不一定就是分布式的。 举例:就比如新浪网,访问的人多了,他可以做一个群集,前面放一个响应服务器,后面几台服务器完成同一业务,如果有业务访问的时候,响应服务器看哪台服务器的负载不是很重,就将给哪一台去完成。 而分布式,从窄意上理解,也跟集群差不多, 但是它的组织比较松散,不像集群,有一个组织性,一台服务器垮了,其它的服务器可以顶上来。 分布式的每一个节点,都完成不同的业务,一个节点垮了,哪这个业务就不可访问了。 from:http://itsoul.iteye.com/blog/777212
View Details服务器集群就是指将很多服务器集中起来一起进行同一种服务,在客户端看来就像是只有一个服务器。集群可以利用多个计算机进行并行计算从而获得很高的计算速度,也可以用多个计算机做备份,从而使得任何一个机器坏了整个系统还是能正常运行。 服务器集群简介 一旦在服务器上安装并运行了群集服务,该服务器即可加入群集。群集化操作可以减少单点故障数量,并且实现了群集化资源的高可用性。下述各节简要介绍了群集创建和群集操作中的节点行为。[1] 注意:有关安装群集服务器的信息,请参阅 Windows server 2003产品家族的帮助和部署指南。 关于Windows Server 2003的企业版和Datacenter版都可以支持最大达8个节点的集群配置;其典型的特征是可为数据库、消息系统、文件与打印服务这些关键业务应用,提供高可用性和可扩展性,在集群中的多个服务器(节点)保持不间断的联系。即是说如果在集群中的某一节点因出错或维护不可用时,另一节点会立刻提供服务,以实现容错。正在访问服务的用户可以继续访问,而不会察觉到服务已经由另一台服务器(节点)提供。[2] 创建群集 在服务器群集产品中含有用来在服务器上安装群集软件和创建新群集的群集安装实用工具。创建新群集时,首先在选择作为群集的第一个成员的计算机上运行该实用工具。第一步是确定群集名称并创建群集数据库和初始的群集成员列表来定义新群集。 Windows server 2003 群集新增了一个群集管理设置向导以及使用 cluster.exe命令行界面创建( 包括从远程创建 )群集的功能。 创建群集的第二步是,添加可供所有群集成员使用的共用数据存储设备。这样,创建的新群集将带有一个节点、自己的本地数据存储设备以及群集共用资源 —— 通常是磁盘或数据存储和连接介质资源。 创建群集的最后一步是,在另外将要成为群集成员的每一台计算机上运行安装实用工具。每当将新节点添加到群集中时,新节点都会自动从群集的原始成员获得现有群集数据库的副本。当节点加入或形成群集时,群集服务会更新该节点私有的配置数据库副本。 形成群集 如果服务器运行了群集服务并且无法找到群集中的其它节点,它自己可以形成一个群集。要形成群集,节点必须能够获得对仲裁资源的独占权。 当最初形成群集时,群集中的第一个节点将包括群集配置数据库。每当有新节点加入群集时,新节点都会在本地获得并保持群集配置数据库的副本。仲裁资源用恢复日志(其中含有同节点无关的群集配置和状态数据)的形式存储配置数据库的最新版本。 在群集运行中,群集服务使用仲裁恢复日志执行以下操作 : 保证只有一组活动、可相互通讯的节点才能形成群集 仅当某个节点可以获得对仲裁资源的控制权时 , 才允许它形成群集 仅当某个节点可以同控制仲裁资源的节点通讯时 , 才允许它加入或留在现有群集中 集群服务的状态 从群集中的其它节点和群集服务管理接口的角度看,当形成群集时,群集中的每个节点可能处于三种不同状态中的一种。事件处理器会记录这些状态,而事件日志管理器会将这些状态复制到群集的其它节点。群集服务状态包括: 脱机。此时的节点不是完全有效的群集成员。该节点及其群集服务器可能在运行,也可能未运行。 联机。此时的节点是完全有效的群集成员。它遵从群集数据库的更新、对仲裁算法施加自己的影响、维护心跳通讯,并可以拥有和运行资源组。 暂停。它只能支持它当前已拥有的那些资源组。之所以提供暂停状态,是为了允许执行某些维护。大多数服务器群集组件会将联机和暂停视为等价的状态。 优势 一、集群系统可解决所有的服务器硬件故障,当某一台服务器出现任何故障,如:硬盘、内存、CPU、主板、I/O板以及电源故障,运行在这台服务器上的应用就会切换到其它的服务器上。 二、集群系统可解决软件系统问题,我们知道,在计算机系统中,用户所使用的是应用程序和数据,而应用系统运行在操作系统之上,操作系统又运行在服务器上。这样,只要应用系统、操作系统、服务器三者中的任何一个出现故障,系统实际上就停止了向客户端提供服务,比如我们常见的软件死机,就是这种情况之一,尽管服务器硬件完好,但服务器仍旧不能向客户端提供服务。而集群的最大优势在于对故障服务器的监控是基于应用的,也就是说,只要服务器的应用停止运行,其它的相关服务器就会接管这个应用,而不必理会应用停止运行的原因是什么。 三、集群系统可以解决人为失误造成的应用系统停止工作的情况,例如,当管理员对某台服务器操作不当导致该服务器停机,因此运行在这台服务器上的应用系统也就停止了运行。由于集群是对应用进行监控,因此其它的相关服务器就会接管这个应用。 缺点 我们知道集群中的应用只在一台服务器上运行,如果这个应用出现故障,其它的某台服务器会重新启动这个应用,接管位于共享磁盘柜上的数据区,进而使应用重新正常运转。我们知道整个应用的接管过程大体需要三个步骤:侦测并确认故障、后备服务器重新启动该应用、接管共享的数据区。因此在切换的过程中需要花费一定的时间,原则上根据应用的大小不同切换的时间也会不同,越大的应用切换的时间越长。 加入群集 寻找 如果一个服务器要加入现有群集 , 则它必须运行群集服务并且必须成功找到群集中的其它节点。在找到其它节点后,加入的服务器必须接受群集成员资格验证,并获得群集配置数据库的副本。 条件 加入现有群集的过程开始于 Windows Server 2003 或 Windows 2000 Service Control Manager 在节点上启动群集服务之时。在启动过程中,群集服务会配置并装入该节点的本地数据设备。它并不会试图将共用的群集数据设备作为节点联机,因为现有群集可能正在使用这些设备。 过程 为了查找其它节点 , 会启动一个发现过程。当节点发现任何群集成员时,它将执行身份验证序列。第一个群集成员会对新加入者进行身份验证,并且在新服务器得到成功验证后返回成功状态。如果验证不成功(未能识别待加入节点的群集成员身份,或者它使用了无效的帐户密码),则加入群集的请求会被拒绝。 验证 进行成功验证后,首先联机的群集节点会检查加入节点上的配置数据库副本。如果该副本已过时,对加入服务器进行验证的群集节点会为加入的服务器发送该数据库的更新副本。刚加入群集的节点在收到复制的数据库后,可以用它查找共享资源并根据需要将它们联机。 脱离群集 当节点关闭或群集服务被停止时,节点可能脱离群集。但当节点不执行群集操作(比如不向群集配置数据库提交更新)时,节点也可能被迫脱离(被逐出)群集。 如果节点根据预先的计划脱离群集,它会向其它所有节点成员发送 ClusterExit 消息,通知它们它将脱离群集。该节点不等待任何响应就会立即进行关闭资源和所有群集连接的操作。由于其余节点收到了退出消息,因此它们不会执行在节点意外失效或网络通讯停止时发生的重新分组过程以重新确立群集成员身份。 方法 有两种常用的服务器集群方法,一种是将备份服务器连接在主服务器上,当主服务器发生故障时,备份服务器才投入运行,把主服务器上所有任务接管过来。另一种方法是将多台服务器连接,这些服务器一起分担同样的应用和数据库计算任务,改善关键大型应用的响应时间。同时,每台服务器还承担一些容错任务,一旦某台服务器出现故障时,系统可以在系统软件的支持下,将这台服务器与系统隔离,并通过各服务器的负载转嫁机制完成新的负载分配。PC服务器中较为常见的是两台服务器的集群,UNIX系统可支持8台服务器的集群系统,康柏的专用系统OpenVMS可支持多达96台服务器的集群系统。 集群的特点 在集群系统中,所有的计算机拥有一个共同的名称,集群内任一系统上运行的服务可被所有的网络客户所使用。集群必须可以协调管理各分离组件的错误和失败,并可透明的向集群中加入组件。用户的公共数据被放置到了共享的磁盘柜中,应用程序被安装到了所有的服务器上,也就是说,在集群上运行的应用需要在所有的服务器上安装一遍。当集群系统在正常运转时,应用只在一台服务器上运行,并且只有这台服务器才能操纵该应用在共享磁盘柜上的数据区,其它的服务器监控这台服务器,只要这台服务器上的应用停止运行(无论是硬件损坏、操作系统死机、应用软件故障,还是人为误操作造成的应用停止运行),其它的服务器就会接管这台服务器所运行的应用,并将共享磁盘柜上的相应数据区接管过来。其接管过程如下图所示(以应用A为例): 1.应用A正常工作时; 2.应用A停止工作后,其它的备用服务器将该应用接管过来。 具体接管过程分三部执行: a.系统接管 b.加载应用 c.客户端连接 集群技术的分类 高可用集群 高可用集群的英文全称是High […]
View Details集群(cluster)技术是一种较新的技术,通过集群技术,可以在付出较低成本的情况下获得在性能、可靠性、灵活性方面的相对较高的收益,其任务调度则是集群系统中的核心技术。 集群是一组相互独立的、通过高速网络互联的计算机,它们构成了一个组,并以单一系统的模式加以管理。一个客户与集群相互作用时,集群像是一个独立的服务器。集群配置是用于提高可用性和可缩放性。 目的 1 提高性能 一些计算密集型应用,如:天气预报、核试验模拟等,需要计算机要有很强的运算处理能力,现有的技术,即使普通的大型机其计算也很难胜任。这时,一般都使用计算机集群技术,集中几十台甚至上百台计算机的运算能力来满足要求。提高处理性能一直是集群技术研究的一个重要目标之一。 2 降低成本 通常一套较好的集群配置,其软硬件开销要超过100000美元。但与价值上百万美元的专用超级计算机相比已属相当便宜。在达到同样性能的条件下,采用计算机集群比采用同等运算能力的大型计算机具有更高的性价比。 3 提高可扩展性 用户若想扩展系统能力,不得不购买更高性能的服务器,才能获得额外所需的CPU 和存储器。如果采用集群技术,则只需要将新的服务器加入集群中即可,对于客户来看,服务无论从连续性还是性能上都几乎没有变化,好像系统在不知不觉中完成了升级。 4 增强可靠性 集群技术使系统在故障发生时仍可以继续工作,将系统停运时间减到最小。集群系统在提高系统的可靠性的同时,也大大减小了故障损失。 分类 1 科学集群 科学集群是并行计算的基础。通常,科学集群涉及为集群开发的并行应用程序,以解决复杂的科学问题。科学集群对外就好像一个超级计算机,这种超级计算机内部由十至上万个独立处理器组成,并且在公共消息传递层上进行通信以运行并行应用程序。 2 负载均衡集群 负载均衡集群为企业需求提供了更实用的系统。负载均衡集群使负载可以在计算机集群中尽可能平均地分摊处理。负载通常包括应用程序处理负载和网络流量负载。这样的系统非常适合向使用同一组应用程序的大量用户提供服务。每个节点都可以承担一定的处理负载,并且可以实现处理负载在节点之间的动态分配,以实现负载均衡。对于网络流量负载,当网络服务程序接受了高入网流量,以致无法迅速处理,这时,网络流量就会发送给在其它节点上运行的网络服务程序。同时,还可以根据每个节点上不同的可用资源或网络的特殊环境来进行优化。与科学计算集群一样,负载均衡集群也在多节点之间分发计算处理负载。它们之间的最大区别在于缺少跨节点运行的单并行程序。大多数情况下,负载均衡集群中的每个节点都是运行单独软件的独立系统。 但是,不管是在节点之间进行直接通信,还是通过中央负载均衡服务器来控制每个节点的负载,在节点之间都有一种公共关系。通常,使用特定的算法来分发该负载。 3 高可用性集群 当集群中的一个系统发生故障时,集群软件迅速做出反应,将该系统的任务分配到集群中其它正在工作的系统上执行。考虑到计算机硬件和软件的易错性,高可用性集群的主要目的是为了使集群的整体服务尽可能可用。如果高可用性集群中的主节点发生了故障,那么这段时间内将由次节点代替它。次节点通常是主节点的镜像。当它代替主节点时,它可以完全接管其身份,因此使系统环境对于用户是一致的。 高可用性集群使服务器系统的运行速度和响应速度尽可能快。它们经常利用在多台机器上运行的冗余节点和服务,用来相互跟踪。如果某个节点失败,它的替补者将在几秒钟或更短时间内接管它的职责。因此,对于用户而言,集群永远不会停机。 在实际的使用中,集群的这三种类型相互交融,如高可用性集群也可以在其节点之间均衡用户负载。同样,也可以从要编写应用程序的集群中找到一个并行集群,它可以在节点之间执行负载均衡。从这个意义上讲,这种集群类别的划分是一个相对的概念,不是绝对的。 系统结构 根据典型的集群体系结构,集群中涉及到的关键技术可以归属于四个层次: (1)网络层:网络互联结构、通信协议、信号技术等。 (2)节点机及操作系统层高性能客户机、分层或基于微内核的操作系统等。 (3)集群系统管理层:资源管理、资源调度、负载平衡、并行IPO、安全等。 (4)应用层:并行程序开发环境、串行应用、并行应用等。 集群技术是以上四个层次的有机结合,所有的相关技术虽然解决的问题不同,但都有其不可或缺的重要性。 集群系统管理层是集群系统所特有的功能与技术的体现。在未来按需(On Demand)计算的时代,每个集群都应成为业务网格中的一个节点,所以自治性(自我保护、自我配置、自我优化、自我治疗)也将成为集群的一个重要特征。自治性的实现,各种应用的开发与运行,大部分直接依赖于集群的系统管理层。此外,系统管理层的完善程度,决定着集群系统的易用性、稳定性、可扩展性等诸多关键参数。正是集群管理系统将多台机器组织起来,使之可以被称为“集群”。 调度方法 1 进程迁移 进程迁移就是将一个进程从当前位置移动到指定的处理器上。它的基本思想是在进程执行过程中移动它,使得它在另一个计算机上继续存取它的所有资源并继续运行,而且不必知道运行进程或任何与其它相互作用的进程的知识就可以启动进程迁移操作,这意味着迁移是透明的。进程迁移是支持负载平衡和高容错性的一种非常有效的手段。对一系列的负载平衡策略的研究表明:进程迁移是实现负载平衡的基础,进程迁移在很多方面具有适用性。 (1)动态负载平衡。将进程迁移到负载轻或空闲的节点上,充分利用可用资源,通过减少节点间负载的差异来全面提高性能。 (2)容错性和高可用性。某节点出现故障时,通过将进程迁移到其它节点继续恢复运行,这将极大的提高系统的可靠性和可用性。在某些关键性应用中,这一点尤为重要。 (3)并行文件IO。将进程迁移到文件服务器上进行IO,而不是通过传统的从文件服务器通过网络将数据传输给进程。对于那些需向文件服务器请求大量数据的进程,则将有效地减少通讯量,极大地提高效率。 (4)充分利用特殊资源。进程可以通过迁移来利用某节点上独特的硬件或软件能力。 (5)内存导引机制。当一个节点耗尽它的主存时,内存导引机制将允许进程迁移到其它拥有空闲内存的节点,而不是让该节点频繁地进行分页或和外存进行交换。这种方式适合于负载较为均衡,但内存使用存在差异或内存物理配置存在差异的系统。 2 进程迁移的实现角度 进程迁移的实现复杂性及对OS 的依赖性阻碍了进程迁移的广泛使用,尤其是对透明的进程迁移的实现。根据应用的级别,进程迁移可以作为OS 的一部分、用户空间、系统环境的一部分或者成为应用程序的一部分。 (1)用户级迁移:用户级实现较为简单,软件开发和维护也较为容易,因此,现有的很多系统都是采用用户级实现,如Condor和Utopia。但由于在用户级无法获得Kernel的所有状态,因此,对于某类进程,无法进行迁移。另外,由于Kernel空间和User空间之间存在着壁垒,打破这个边界获得Kernel提供的服务需要巨大的开销。因此,用户级实现的效率远远低于内核级实现。 (2)应用级迁移:应用级迁移的实现较为简单,可移植性好,但是需要了解应用程序语义并可能需对应用程序进行修改或重新编译,透明性较差,这方面的系统有Freedman、Skordos等。 (3)内核级迁移:基于内核的实现可以充分利用OS提供的功能,全面的获取进程和OS状态,因此实现效率较高,能够为用户提供很好的透明性。但是由于需要对OS进行修改,实现较为复杂。这方面的典型系统有MOSIX和Sprite系统。 进程迁移的主要工作就在于提取进程状态,然后在目的节点根据进程状态再生该进程。在现实中,一个进程拥有很多状态,并且随着操作系统的演化,进程状态也越来越多样。一般来说,一个进程的状态可以分为以下几类:①进程执行状态。表示当前运行进程的处理器状态,和机器高度相关。包括内核在上下文切换时保存和恢复的信息,如通用和浮点寄存器值、栈指针、条件码等。②进程控制。操作系统系统用来控制进程的所有信,一般包括进程优先级、进程标识,父进程标识等。一旦系统编排了进程控制信息,进程迁移系统必须冻结该进程的运行。③进程Memory状态和进程地址空间。包括进程的所有虚存信息,进程数据和进程的堆栈信息等,是进程状态的最主要的一部分。④进程的消息状态。包括进程缓冲的消息和连接(Link)的控制信息。进程迁移中通讯连接的保持以及迁移后连接的恢复是进程迁移中一项较有挑战意义的问题。⑤文件状态。进程的文件状态包括文件描述符和文件缓冲符。保持文件的Cache一致性和进程间文件同步访问也是进程迁移机制需要着重考虑的。 区别 模拟集群与数字集群不同的地方,说简单点就是:模拟集群在单信道比数字对讲机用户容量要小,语音没有数字对讲机清楚,只能实现简单的数据功能。 数字集群分TDMA和FDMA两种,TDMA是提供给专业用户使用的,是时分的制式。FDMA是提供给民用的,是频分的制式。 FDMA和模拟对讲机相比,除了可以把信道间隔做得更窄(模拟的是25KHz,数字的是12.5KHz两时隙或6.25KHz四时隙),单信道用户量更大外,对用户来说并没有太大的更新体验。 TDMA制式的对讲机和模拟对讲机相比,除了单信道用户容量更大外,还可以现实同频中转。模拟系统中,要实现中转,必须要有收、发频率一对。而在TDMA时分数字系统中,可利用数字技术,通过时隙的转换来实现中转。例如:当中转台收到A时隙的数据时,同时转发出去的数据就是在B时隙上实现的。 现在在中国还没有自己的数字对讲机标准。现在MOTOROLA的数字对讲机是TDMA制式的,ICOM和建伍的数字对讲机是FDMA制式的。[1] 发展趋势 虽然集群系统的构建目前可以说是模块化的,从硬件角度来看可以分为节点机系统、通讯系统、存储系统等,软件角度则主要有操作系统、集群操作系统(COS)、并行环境、编译环境和用户应用软件等,目前高性能计算机的通讯、存储等硬件系统是伴随摩尔定律快速发展的,跟踪、测试、比较最新硬件设备构成的高性能计算机的可能方案也成了高性能计算机厂商的重要科研活动,而所有这些关键部件研发、系统方案科研以及厂商的自主部件研发的高度概括就是“整合计算”。整合硬件计算资源的同时,伴随着整合软件资源,其中集群操作系统COS是软件系统中连接节点机操作系统和用户并行应用的重要“黏合剂”,也是高性能计算机厂商的技术杀手锏。 高性能集群系统目前在国内的应用领域主要集中在气象云图分析和石油勘探的领域。这样的应用对于高性能集群系统来说进入门槛比较低,所以目前这些领域都采用了国内厂商构建的集群系统。虽然对比要处理大量并发的小问题的用于商业计算的高可用性集群来说,高性能集群实现起来要简单一些。但实际上,高性能集群的构建中仍有许多技术上的难点,尤其是高性能集群系统往往是针对一个很独特的科学计算的应用,而对这种应用的实现用高性能集群系统来计算,就必须要先建立数学模型,而这样的建模过程需要大量的对于这种应用模式的理解。总结起来,可管理性、集群的监控、并行程序的实现、并行化的效率以及网络实现是构建高性能集群的几个难点。这其中,并行化程序的实现就是指特定应用领域的特定应用程序在集群系统上的实现。虽然有诸多的技术实现上的难点,但集群系统本身的优势仍然给了厂商们克服难点、攻克高性能集群的力量。首先撇开一些具体的优势不说,从互联网中心服务器的变化来看,可以清晰地观察到集群结构是中心服务器的发展趋势。20世纪90年代以前,中心服务器一般都用大型机(Mainframe),大型机上可以完成一切的应用和服务,用户从终端通过网络完成应用。这种应用模式带来许多的好处:应用集中、比较好部署、系统监控、管理方便等。但大型机的缺点也是非常明显的,主要是设备昂贵,很难实现高可用解决方案;非高可用系统在出现故障时,全部应用都受到影响;操作系统、设备和部件比较专用,用户本身维护困难;可扩展性不强等。这些缺点中的任何一个都是用户难以接受的。随着PC及其操作系统的普及和Intel CPU的性能和稳定性的不断提高,人们逐渐用PC服务器构成的分布式系统(Distributed System)去代替大型机。分布式系统解决了大型机上面提到的多个缺点,却丢弃了大型机应用的优点,服务器多且杂,不好监控、管理,不好部署。因此综合大型机和分布式系统优势的服务器必将成为趋势,集群系统就是这样应运而生的服务器。 from:http://baike.baidu.com/link?url=qJDmsahlNUjNdI2beflLkyCiepcUuDLRNeJ_Sjvyx1sbi0307IIB9J4AxiVKR0b2tJx6Y77TGD4biidfgF8ez_
View Details定义 建立在现有网络结构之上,它提供了一种廉价有效透明的方法扩展网络设备和服务器的带宽、增加吞吐量、加强网络数据处理能力、提高网络的灵活性和可用性。 负载均衡,英文名称为Load Balance,其意思就是分摊到多个操作单元上进行执行,例如Web服务器、FTP服务器、企业关键应用服务器和其它关键任务服务器等,从而共同完成工作任务。 分类 软/硬件 软件负载均衡解决方案是指在一台或多台服务器相应的操作系统上安装一个或多个附加软件来实现负载均衡,如DNS Load Balance,CheckPoint Firewall-1 ConnectControl等,它的优点是基于特定环境,配置简单,使用灵活,成本低廉,可以满足一般的负载均衡需求。 软件解决方案缺点也较多,因为每台服务器上安装额外的软件运行会消耗系统不定量的资源,越是功能强大的模块,消耗得越多,所以当连接请求特别大的时候,软件本身会成为服务器工作成败的一个关键;软件可扩展性并不是很好,受到操作系统的限制;由于操作系统本身的Bug,往往会引起安全问题。 硬件负载均衡解决方案是直接在服务器和外部网络间安装负载均衡设备,这种设备通常称之为负载均衡器,由于专门的设备完成专门的任务,独立于操作系统,整体性能得到大量提高,加上多样化的负载均衡策略,智能化的流量管理,可达到最佳的负载均衡需求。 负载均衡器有多种多样的形式,除了作为独立意义上的负载均衡器外,有些负载均衡器集成在交换设备中,置于服务器与Internet链接之间,有些则以两块网络适配器将这一功能集成到PC中,一块连接到Internet上,一块连接到后端服务器群的内部网络上。 一般而言,硬件负载均衡在功能、性能上优于软件方式,不过成本昂贵。 本地/全局 负载均衡从其应用的地理结构上分为本地负载均衡(Local Load Balance)和全局负载均衡(Global Load Balance,也叫地域负载均衡),本地负载均衡是指对本地的服务器群做负载均衡,全局负载均衡是指对分别放置在不同的地理位置、有不同网络结构的服务器群间作负载均衡。 本地负载均衡能有效地解决数据流量过大、网络负荷过重的问题,并且不需花费昂贵开支购置性能卓越的服务器,充分利用现有设备,避免服务器单点故障造成数据流量的损失。其有灵活多样的均衡策略把数据流量合理地分配给服务器群内的服务器共同负担。即使是再给现有服务器扩充升级,也只是简单地增加一个新的服务器到服务群中,而不需改变现有网络结构、停止现有的服务。 全局负载均衡主要用于在一个多区域拥有自己服务器的站点,为了使全球用户只以一个IP地址或域名就能访问到离自己最近的服务器,从而获得最快的访问速度,也可用于子公司分散站点分布广的大公司通过Intranet(企业内部互联网)来达到资源统一合理分配的目的。 全局负载均衡有以下的特点: 实现地理位置无关性,能够远距离为用户提供完全的透明服务。 除了能避免服务器、数据中心等的单点失效,也能避免由于ISP专线故障引起的单点失效。 解决网络拥塞问题,提高服务器响应速度,服务就近提供,达到更好的访问质量。 部署方式 负载均衡有三种部署方式:路由模式、桥接模式、服务直接返回模式。 路由模式部署灵活,约60%的用户采用这种方式部署;桥接模式不改变现有的网络架构;服务直接返回(DSR)比较适合吞吐量大特别是内容分发的网络应用。约30%的用户采用这种模式。 路由模式(推荐) 路由模式的部署方式如上图。服务器的网关必须设置成负载均衡机的LAN口地址,且与WAN口分署不同的逻辑网络。因此所有返回的流量也都经过负载均衡。这种方式对网络的改动小,能均衡任何下行流量。 桥接模式 桥接模式配置简单,不改变现有网络。负载均衡的WAN口和LAN口分别连接上行设备和下行服务器。LAN口不需要配置IP(WAN口与LAN口是桥连接),所有的服务器与负载均衡均在同一逻辑网络中。参见下图: 由于这种安装方式容错性差,网络架构缺乏弹性,对广播风暴及其他生成树协议循环相关联的错误敏感,因此一般不推荐这种安装架构。 服务直接返回模式 如上图,这种安装方式负载均衡的LAN口不使用,WAN口与服务器在同一个网络中,互联网的客户端访问负载均衡的虚IP(VIP),虚IP对应负载均衡机的WAN口,负 服务直接返回模式 载均衡根据策略将流量分发到服务器上,服务器直接响应客户端的请求。因此对于客户端而言,响应他的IP不是负载均衡机的虚IP(VIP),而是服务器自身的IP地址。也就是说返回的流量是不经过负载均衡的。因此这种方式适用大流量高带宽要求的服务。
View Details