集群服务负载均衡------LVS

个人的理解,以一种通俗易懂的方式讲述出来,如果有哪些地方说的不正确的话,希望大家留言指出来。笔者会非是常的感谢!

Cluster服务器集群,直接理解为一些单一的服务器的集合通过某种方式组合起来,为客户端提供服务。重要的是在外部看来它们仅仅是一个系统。

关于为什么要建立服务集群这个问题,这里可以用时下最火的淘宝交易平台为例,淘宝网8月份的商品成交总额是1.2亿人名币,会员数量达到220万,网页浏览量为5000万,这个还是2004年公布的保守数据,现在那就不好说了是吧,就说当是的这个网页浏览量说5000万的浏览量,如果是由单一的服务器提供服务,就是这个服务器的性能再好,面对如此高的访问量,在响应客户端的时候,你能想象吗?这么多的请求都要让它自己来处理,用不了多久,服务器就会累趴下吧!它一旦趴下(down机)你能想象吗?元方你怎么看?

综上总结服务器面临三个问题:

          1、 并发请求数量大,这就要求服务器容量要足够大

          2、 在线访问量大,要求服务器不能中断

          3、 总体的访问量庞大,禅理性能要足够的强

 

面对这些问题我们以往采取的方式是Scale up:(向上扩展),即是将当前使用的服务器,用比它性能更好的服务器替换掉(新机替换掉老机)。服务器单一管理起来非常方便,但是,要知道换上的新机比老机提升了的性能和在这个新机上的花销可不是成比增长的,并且还会造成对老机的浪费。所以就有了Scale out(向外扩展)即是以增加机器的方式来提升服务器的性能,这其实就是Cluster“集群”。

针对以上的三个问题,按服务集群的功能能将其分为三个类别:
1、负载均衡集群(LB,load Balance Cluster)
2、高可用集群(HA,High Available Cluster)
3、高性能集群(HP,High Performance Cluster)
负载均衡集群在Linux中的软件实现方式:LVS
高可用集群在Linux中的软件实现方式:heartbeat corosync
高性能集群在Linux中的软件实现方式:hadoop
首先我们来说说下先负载均衡集群,通过硬件实现的方式,在硬件技术上传到常用到的调度器有F5的BIG IP可处理的并发请求数量高达1000万,IBM的A10并发请求数量可达600万,Citrix,Netscaler可处理并发请求数量为500万,都可以满足我们的需求,但是都太贵了,而我们的软件实现方式很好的弥补了这个缺憾哈!而其中最具代表性之一的解决方案即是淘宝的章文嵩博士创立的LVS。
-----------------------------------LVS框架图-------------------------------------------

LVS(Linux Vitual Server)---虚拟服务器,在工作当中它是作为一个前段的Director(调度器)工作的,Director它本身不提供任何的服务,只是将接收到的请求转发给后端的Real Seerver处理,然后在响应给客户端。所以我们也称LVS为“4 layer switch/route"。LVS本身的两个基本的组件就是:ipvs和ipvsadm。而ipvs是一个工作在内核当中的,它其实就是相当于做成了netfilter框架的一个模块。就像netfilter当中有filter表、net表、mangle表,而你现在又加入了Ipvs表,主要是用于让定义好的规则生效,ipvsadm是工作在用户空间,用来定义LVS的转发规则。LVS是工作在INPUT链上的。
-------------------------------------转发过程图----------------------------------------

Director(调度器)即是负载均衡器,一个合格的Director要满足以下的要求。
1、考虑服务器负载能力通过某种调度方法,调度后端服务器。
2、考虑后端服务器是否正常工作,这也是需要一种机制来完成,我们称其为后端主机健康状态测。
3、考虑Director本身如果出故障,整个服务瘫痪的问题。这里不得不用到高可用集群。即在添加一个Director.
4、为多台的Real Server提供一个共享存储。说到共享存储就不得不说到DAS、NAS、SAN。
DAS:直接辅加存储,即直接连接到主机总线上的存储设备。优点在于存储容量扩展方便,实施起来很简单,但是这种方式太过于限制,它必须要和服务器在同一个机架上。
NAS:网络辅加存储,双方共享文件服务器,只要连接到NAS上就可以实现共享存储。并且Real Server同时写入的时候不会崩溃,因为它是文件系统级别的,但是DNS最多只能同时为十台服务器提供共享存储。
SAN:存储区域网络,
FC SAN光驱动
IP SAN(SSISC)
每个Real Sever都有RIP VIP 
每个Drector都有DIP VIP
LVS有三种转发模型:NAT模型 DR模型 TUN模型,其中DR模型应用最广。
NAT模型:网络地址转换模型,
NAT模型的特点:
1、Diretor和Real Server(RS)必须在同一个子网中。
2、RIP通常使用私有地址,仅限于本地通信
3、Director工作在Clients和RS中间,负责处理进出的全部报文
4、RS网关要指向DIP
5、可以实现端口转换(映射)
6、RS可以是任何操作系统
7、Director可能成为性能瓶颈,所以不适用于教大规模的负载均衡场景
DR模型:直接路由模型
DR模型的特点:
1、RS跟Director必须在同一物理网上(即中间不能隔路由设备)。
2、RIP可以使用公网地址
3、Director仅处理请求报文
4、RS的网关不能指向DIP
5、不能使用端口映射
6、大多数操作系统可以用于RS
7、一般DR模型的Director能处理比NAT模型多的多的请求
DR模型详解:
CIP向VIP发出请求,CIP经由路由设备,到达局域网,它的目的是想和Director的VIP通信,但是它不知道VIP的MAC,在局域网内部通讯看的是MAC地址,所以它要发广播,所有收到广播包的都会回应此广播,此时就会产生问题了,RS1、RS2也会回应因为他们也有同样的VIP啊,那交换机怎么知道,哪个是Director的MAC呢?所以我们这里必须要控制RS1和RS2不回应此广播包,这就不得不提到两个内核参数,arp_ignor和arp_annouce,在RS1和RS2上均对这两个参数给与定义,则RS1和RS2就不会回应由交换发出的这个找VIP的对应的MAC的广播包了。此时数据包就可以到达Director了,Director通过某种调度方法计算发现RS1符合这个要求,所以它要把这个请求包交给RS1来处理,但是它也不知道RS1的MAC啊,所以它也要发起广播消息,此时Director发起的广播是在其内部发起的,每个RS的这个私有的地址都是不一样的。所以当RS1收到这个广播的时候发现时找它的,它就会回应,则此时Director就得到了RS1的MAC,它将请求报文的目标MAC地址换成RS1的MAC地址,然后在将这个请求包返回给交换机,此时交换机就认为这个请求是发给RS1的,它就会将其发给RS1,RS1收到请求包,直接用自己的VIP给予回应,不再经由Director.所以这就需要在RS1中定义一条路由"route add -host VIP dev lo:0"明确告知RS1,只要是请求VIP的,我就用lo:0这个上面的VIP来给予回应。
注意:1、RS和DR都是单网卡的哦,每个RS的VIP是设置在lo:0上的,这个lo:0是虚拟的哈。DR的VIP是在eth0:0上面配置的。
2、由DR发出的广播包不被RS屏蔽掉的原因是因为它是广播的RIP这是他们的私有网络的地址,刚刚设置的参数arp_ignor和arp_annouce,只是针对VIP的哈

TUN模型:隧道模型
TUN模型的特点
1、RS跟Director不必在同一个物理网络中
2、RIP一定不能使用私有地址
3、多数情况下Director仅处理请求报文
4、正常情况下响应报文不能经过Director
5、不能使用端口映射
6、仅允许支持隧道协议的操作系统用于RS
___________________________________________________________________
LVS的十种调度方法,分为静态和动态两类。
静态四种;仅根据算法本身调度,不关心RS上当前的连接状态。
1、RR
根据规则依次论调,不考虑RS的性能。轮到谁就转发给谁。
2、WRR
加权轮询,加入了weight(权重),可以根据RS的性能为其设置权重值,权重越大功能越强,但是不能发硬当前的服务器的运行的情况。
3、DH
目标地址hash,适用于前段是一个drector后端是几个缓存服务器,当客户端第一次访问到的是RS1的时候,DH这种算法保证,在客户端刷新后还是访问的是RS1。
4、SH
源地址hash,用于保证响应的报文和请求的报文是同一个路径。
动态六种:要将RS得连接状态计入调度考量标准。
1、LC
least connection,当一个用户请求过来的时候,就计算下哪台RS的链接谁最小,那么这台RS就获得了下次响应客户端请求的机会,计算的方法Overhead=active*256+inactive,如果两者的结果是相同的则从LVS中的规则依次往下选择RS。这种算法也是不考虑服务器的性能的。
2、WLC
这个就是加了权重的LC,考虑了RS的性能,即是性能好的就给的权重值大一些,不好的给的权重值小一些。缺点就是如果Overhead相同,则会按规则表中的顺序,由上而下选择RS,Overhead=(active*256+inactive)/weight
3、SED
就是对WLC的情况的补充,Overhead=(active+1)*256/weight,加一,就是为了让其能够比较出大小。
4、NQ
never queue 基本和SED相同,避免了SED当中的性能差的服务器长时间被空闲的弊端,它是第一个请求给性能好的服务器,第二个请求一定是给的空闲服务器不论它的性能的好与坏。以后还是会把请求给性能好的服务器
5、LBLC
它就是动态DH和LC的组合,适用于cache群,对于从来没有来过的那些新的请求会分给当前连接数较少的那台服务器。
6、LBLCR
带有复制功能的LBLC,它的适用场景这里举例说明一下,比如说现在又RS1和RS2,第一次访问RS1的5个请求第二次又来了,理所应到Director将会将其交给RS1,而此时在RS2是非常闲的,所以此时最好的处理方法就是可以将后来的这5个请求分别交给RS1和RS2,所以此时就需要把客户端第一次请求的资源复制下来。(特殊情况)
活动链接active和非活动链接inactive小解:
这里以http为例,http本身是一种无状态的链接,当客户端请求访问的时候,有个等待响应过程,这个时段可以称其为活动链接active状态.当服务器端给与响应后,请求因为keepalive而并未断开,则此段时间的状态就是非活动链接状态。
无连接状态即是无追踪
cookie即是个标识用于追踪用户访问过哪个资源,追踪用户的身份,这种单一的cookie是不安全的
session结合cookie或者url完成用户跟踪,客户端的cookie只需要保留session id敏感信息保留在服务器端.
持久连接是靠director上的持久模板来完成的,模板上的条目用hash保存.
防火墙标记服务,将两种服务标记成一种服务,用mangle给某数据报文一个标记MARK,但是不具有永久性,所以需要使用持久连接
LVS中的持久连接类型:
PCC
来自同一个用户端的所有的集群服务请求通通转发给后端的某个特定的Real
Server
PPC
将某客户端的特定的服务请求通过某种算法,转发给后端的某个特定的Real Server
PFWM
将两种服务绑定,即这两种服务都是通过后端所指定的某个Real Sever响应即是将多个PPC和并起来,但是并未达到PCC标准
-p定义持久连接超时时间的,默认是5分钟
ipvsadm -A|E -t|u|f service-address [-s scheduler] [-p [timeout]] [-O] [-M netmask]
ipvsadm -Ln --persistent-conn这是用于查看长连接的超时时常的
【管理集群服务】
1、增加集群服务
ipvsadm -A|E -t|u|f service-address [-s scheduler]
-s sheduler 指定调度方法,如果不指定的话默认是WLC
-t|u|f 分别表示tcp|udp|firemark
2、删除集群服务
ipvsadm -D -t|u|f  service-address
【管理集群服务中的RS】 
1、增加集群服务的RS
ipvsadm -a|e -t|u|f service-address -r server-address [-g|i|m] 
[-w weight] 
a|e 其中a表示的是增加 e表示修改
[-g|i|m] -g表示DR模型(gatewaying) -i表示的TUN隧道模型(ipip) m表示的是nat模型(masquerading) ,如果默认不指定的话是DR模型.
2、删除集群服务当中的RS
ipvsadm -d -t|u|f service-address -r server-address
【查看服务信息(规则)】
ipvsadm -L|l
-n 不进行反解
-c 查看连接个数
--stats 查看统计总数
--rate 查看连接速率
ipbsadm -Z 清空计数器
【清空所有定义的规则】
ipvsadm -C
【保存集群服务的规则】
ipvsadm -R = ipvsadm-restore
ipvsadm -S = ipvsadm-save
service ipvsadm save
高可用集群(High Availabitity Cluster)
高可用集群的软件实现方式是:heartbeat corosycn
在SAN共享存储中用到了HA Cluster,HA的实现即是相当于做一个冗余
高可用集群通常会采用可用性来衡量基实际效果。计算机系统的可用性是通过平均无故障时间(MTTF)及平均维修时间(MTTR)来度量。

 

转载于:https://www.cnblogs.com/deamon/archive/2012/11/27/2791507.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/434098.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Cubieboard2 debian

环境准备 本文所使用的主机环境为kubuntu 12.10,然而一般情况下,下面涉及到的命令对基于Debian的(X)ubuntu系列都应该适用。 为不引起混淆,我们作如下约定: 工作目录为 $WORK_DIR,目标系统 rootfs 目录为 $WORK_DIR/$ROOTFS_DIR命…

linux和python的关系_Python、Linux与我的缘分

是在大二时期,那时候不懂什么技术,所以就选择了 Ubuntu 来学习、 使用, 它好操作、 界面绚丽、 简单易用, 对于我这种 Linux 新手来说知足了。 毕竟没玩过 Linux ,知识有限, 玩不转 Linux 的种种配置&#…

linux 磁盘uuid获取

ls -l /dev/disk/by-uuid/总用量 0lrwxrwxrwx 1 root root 10 2012-08-15 09:28 0af9bc87-c3c9-49eb-829e-caf572298cc7 -> http://www.cnblogs.com/sdb1lrwxrwxrwx 1 root root 10 2012-08-15 09:27 3e8b5c85-3f5b-4864-b45e-03ff0073eb5f -> http://www.cnblogs.com/sd…

tomcat jsp导入java_[导入]Tomcat JSP Web 开发中的乱码问题小姐

1. 静态页面的乱码问题文件的编码和浏览器要显示的编码不一致。1) 检查文件原始的编码, 可以用记事本打开, 然后选择另存为来看;2) 给当前页面加入一个指令来建议浏览器用指定的编码来显示文件字符内容.3) 如果系统是英文XP,没装东亚字符集支持, 也会显示乱码.2. JSP 页面的乱码…

编译Mysql 5.5时报do_abi_check错误

下载mysql-5.5.3-m3源码后&#xff0c;执行configure无错误&#xff0c;在make的时候却报: make[2]: *** [do_abi_check] 错误 1<br> make[2]: Leaving directory /tmp/mysql-5.5.3-m3<br> make[1]: *** [abi_check] 错误 2<br> make[1]: Leaving directory …

四大开源分布式存储_ipfs分布式存储行业面临着四大主要风险,你知道是哪些吗?...

为了响应国家号召、推动分布式存储技术落地、防御行业风险&#xff0c;中国分布式存储产业联盟启动&#xff0c;全国从事IPFS以及分布式存储从业者对行业风险及联盟成立的必要性达成了高度共识&#xff0c;目前有36家以上的IPFS分布式存储行业企业填写了联盟申请表。几位国内知…

mathematica打包java_从Mathematica到Java的图像

我试图从Mathematica中获取一张图片.我尝试评估一些使用包中的方法生成图形的Mathematica代码.如果我将代码粘贴到Mathematica Notebook,则会正确生成图形.所以我的问题&#xff1a;如何将这些图形转换为Java ???这是我的示例代码&#xff1a;ml MathLinkFactory.createKer…

pjsua帮助手册(中文)

原文地址 : http://www.pjsip.org/pjsua.htm 介绍 PJSUA是一个开源的命令行SIP用户代理&#xff08;软电话&#xff09;&#xff0c;用PJSIP协议&#xff0c;PJNATH&#xff0c;和PJMEDIA实现。 它虽然只有很简单的命令行界面&#xff0c;但是功能齐全。 SIP功能&#xff1a; 多…

c/c++笔试面试题(4)

c/c笔试面试题&#xff08;4&#xff09; 2007-11-08 16:46 749人阅读 评论(0) 收藏 举报Sony笔试题 1&#xff0e;完成下列程序 * *.*. *..*..*.. *...*...*...*... *....*....*....*....*.... *.....*.....*.....*.....*.....*..... *......*......*......*......*......*...…

js date转成 时间字符串_秋招快要开始了,前端笔试中的坑位-JS隐式转换问题

我们在写笔试题的时候&#xff0c;经常碰到涉及隐式转换的题目&#xff0c;例如"1" 2 obj 1 [] ![] [null] false 和 叫做严格运算符&#xff0c;对象类型指向地址相同或原始类型&#xff08; 数值、字符串、布尔值&#xff09;值相同&#xff1b;叫做相等运算…

Java中快速处理集合_简洁又快速地处理集合——Java8 Stream(上)

作者&#xff1a;Howie_Y&#xff0c;系原创投稿主页&#xff1a;www.jianshu.com/u/79638e5f0743Java 8 发布至今也已经好几年过去&#xff0c;如今 Java 也已经向 11 迈去&#xff0c;但是 Java 8 作出的改变可以说是革命性的&#xff0c;影响足够深远&#xff0c;学习 Java …

FTP服务器和客户端源代码编写问题(ftp server client source)

最近关注FTP程序源代码的朋友非常多&#xff0c;这里简单说明一下。 其实FTP也就是普通的Socket程序&#xff0c;只是需要按照FTP协议(RFC959, 1635?可能我记错了)去做&#xff0c;也就是每个消息有固定的结构的&#xff0c;比如头3个字节必须是200,201,300,400之类的数字表示…

eclipse编译java项目class文件_动态编译 Java 代码以及生成 Jar 文件

导读&#xff1a; 最近在看 Flink 源码的时候发现到一段实用的代码&#xff0c;该代码实现了 java 动态编译以及生成 jar 文件。将其进行改进后可以应用到我们的平台上&#xff0c;实现在平台页面上编写 java 代码语句&#xff0c;提交后由后台进行编译和打成 Jar 包再上传到指…

Android初级开发第七讲--特效和数据传递处理

博客出自&#xff1a;http://blog.csdn.net/liuxian13183&#xff0c;转载注明出处&#xff01; All Rights Reserved ! 大家好&#xff0c;相信大家对iphone上的特效早有耳闻&#xff0c;特效不仅给人以炫丽的感觉&#xff0c;也给人以性能优越的感觉&#xff1b;但万丈高楼平…

java查看日志命令_[Java教程]【Linux】linux查看日志文件内容命令tail、cat、tac、head、echo...

[Java教程]【Linux】linux查看日志文件内容命令tail、cat、tac、head、echo0 2017-11-14 12:00:29linux查看日志文件内容命令tail、cat、tac、head、echotail -f test.log你会看到屏幕不断有内容被打印出来. 这时候中断第一个进程Ctrl-C,---------------------------linux 如何…

pjsip简介1

如果你对SIP/VoIP技术感兴趣,哪希望你不要错过:),如果你对写出堪称优美的Code感兴趣,那么你也不可错过:)这期间我想分析一下一个实际的协议栈的设计到实现的相关技术,算是自己的一个学习经历记录.最初选择这个库做分析的原因很简单,文档齐全:),其它良好的特征则是慢慢发现的:) …

Dx11DemoBase 基类(三) 实例应用 【已实现】【附带源码】

现在我已经到哪了? 读书时&#xff0c;尤其是技术知识书籍&#xff0c; 我一般会担忧自己是否陷得太深&#xff0c; 细节关注得太多&#xff0c; 而忘了整体的过程&#xff1b; 一直以来对Direct3D 很畏惧&#xff0c; 因为太多函数和细节&#xff1b;现在我必须暂缓下&#x…

修改 decimal 默认值为0.00 sql_被经理邀请去“爬山”,只是因为我写错了一条SQL语句?...

作者&#xff1a;isysc1链接&#xff1a;https://juejin.im/post/5f06a2156fb9a07e5f5180df来源&#xff1a;掘金前戏SQL 写的妙&#xff0c;涨薪呱呱叫&#xff01;新来的实习生小杨写了一条 SQL 语句SELECT wx_id from user WHERE wx_id 2当小杨迫不及待准备下班回家的时候&…

java课工场面向对象题p题库_面向对象设计(Java)-题库课稿.doc

面向对象程序设计 java 题库抽题规范:此题库共75道题,抽8道作为期末考试题。其中,易8道,较易33道,较难18道,难16道.按题型,第一大题抽4道&#xff0c;每道10分&#xff1b;第二大题抽2道&#xff0c;每道10分&#xff1b;第三大题抽1道&#xff0c;每道20分&#xff1b;第四大题…

opensips简介

1、引入 随着通信IP化的发展&#xff0c;IP传输的高带宽、低成本等优势使得越来越多的企业、电信运营商加快建设基于IP的各种通信应用。在通信协议IP化发展中&#xff0c;SIP协 议毫无争议地成为各大电信运营商构建其未来网络的基础协议&#xff0c;越来越多的SIP软件产品也不…