1.共享存储,
在web1和web2之间有一个NFS服务器,正常web1挂载读写,当web1宕机时,web2挂载读写。但NFS是文件服务器,让2台web服务器读写的效率很低。文件级别共享。这种存储架构叫NAS。
DAS(Direct Attached Storage—直接连接存储)是指将存储设备通过SCSI接口或光纤通道直接连接到一台计算机上。
NAS存储是(Network Attached Storage)的简称,中文称为网络附加存储。NAS存储作用类似于一个专用的文件服务器。NAS技术是一种将分布、独立的数据整合为大型、集中化管理的数据中心,以便于对不同主机和应用服务器进行访问的技术。
SAN是Storage Area Network的缩写,即“存储区域网络”。SAN专注于企业级存储的特有问题。当前企业存储方案所遇到的两个问题是:数据与应用系统紧密结合所产生的结构性限制,以及目前小型计算机系统接口(SCSI)标准的限制。SAN中,存储设备通过专用交换机到一群计算机上。在该网络中提供了多主机连接,允许任何服务器连接到任何存储阵列,让多主机访问存储器和主机间互相访问一样方便,这样不管数据置放在那里,服务器都可直接存取所需的数据。同时,随着存储容量的爆炸性增长,SAN也允许企业独立地增加它们的存储容量。
三种存储解决方案对比
2.LVS:Linux Virtual Server Linux 虚拟服务器,架构的前端是一台director/load balancer负载均衡器负责转发, 后端是好几台服务器realserver提供服务,director根据Linux内核的补丁代码ipvs调度后端realserver任务。
LVS类似iptables/netfilter两段式管理,管理工具ipvsadm实际执行的内核补丁代码ipvs,ipvadm管理后台每个realserver的ip地址和提供的服务,director空间分为用户空间和内核空间,用户请求经过网卡进入到内核空间的TCP/IP栈,要经过路由器进行路由,集群服务的定义在ipvs的代码里,ipvs代码识别用户请求是集群服务的话,即使地址指向director自己,也不会转发到自己的用户空间,而是向外转发到对应的realserver ip地址。ipvs只是框架,本身不会转发任何请求,依赖ipvsadm定义的集群服务才能转发。不是ipvs服务的数据包直接丢弃。
3.LVS的用途
1.For higher throughout 更高的吞吐率,大并发
2.For redundancy 冗余,提供部分高可用,但不完全是高可用
3.For adaptability 更灵活适应性,简单地增加或缩减服务器数量就能适应规模的扩张和缩减。
4.就是一个四层交换机/四层路由器。根据用户请求的ip address+port进行转发。port是在OSI模型的第四层传输层。转发的基础/标准是用户定义的转发调度方法。
4.LVS专用的地址
1.Virtual IP(VIP) address: 直接向用户提供服务的,调度器的外网卡地址,
2.Real IP (RIP) address:后端服务器网卡真实IP地址
3.Director's IP (DIP) address: 调度器连接realserveer的内网卡地址
4.Client computer's IP (CIP) address:客户端地址
5. 3种LVS架构对比
类型 属性 |
LVS-NAT(最简单) 网络地址转换 |
LVS-DR(最常用) 直接路由 |
LVS-TUN IP隧道 |
realserver和director是否可在同一网络中 |
在同一子网中 |
在同一物理网络中 (基于MAC地址转发) |
可在不同的物理网络中,也可以在不同的地域 |
RIP是私有地址还是公网地址 |
一般来说是私有地址 |
公网地址 |
一定不是私有地址 |
director是否同时处理入站和出站数据 |
同时处理入站和出站数据 |
只处理入站请求 |
只处理入站请求 |
realserver的网关是否指向DIP |
realserver的网关指向DIP |
realserver的网关不能指向DIP |
realserver的网关不能指向DIP |
是否支持端口映射 |
支持端口映射 |
不支持端口映射 |
不支持端口映射 |
realserver是否可以是任意操作系统 |
可以是任意的OS |
可以是大多数的操作系统(OS支持一个网卡配置多个IP,隔离realserver广播) |
仅可是那些支持IP隧道协议的OS |
其他方面 |
director很容易成为系统瓶颈 |
性能优于LVS-NAT |
6. 3种LVS 架构图
图一:LVS-NAT 模型
玩笑1:NAT就像中国大妈CIP好不容易出国,在外国专卖店VIP专挑奢侈品买LV包,海关Director报高档税,结果回家一看,全都made in China.
图二:LVS-DR模型
玩笑2:中国大妈CIP跑到外国买达芬奇家具,老外忽悠大妈说原产地绝对是佛罗伦萨VIP,结果原产地是东莞DIP,在海关做个地址伪装,直接从东莞发货。
图三:LVS-TUN 模型
玩笑3:中国大妈总代CIP跑到新西兰团购VIP全国的奶粉,用IPTUNNEL集装箱滚装船往回运,出了海关Director再用快递ROUTER分发到全国各地。
7.Director的调度算法 LVS Scheduling Methods
Fixed Scheduling固定调度:Director在选取下一个realserver时,不会考虑那个realserver本身有多少个连接个数和连接状态,仅仅按调度算法判定和分配。
1.轮叫调度(Round Robin)(简称rr)
调度器通过“轮叫”调度算法将外部请求按顺序轮流分配到集群中的真实服务器上,它均等地对待每一台服务器,而不管服务器上实际的连接数和系统负载。
2.加权轮叫(Weighted Round Robin)(简称wrr)
调度器通过“加权轮叫”调度算法根据真实服务器的不同处理能力来调度访问请求。这样可以保证处理能力强的服务器能处理更多的访问流量。调度器可以自动问询真实服务器的负载情况,并动态地调整其权值。
计算负载overhead’ =(活跃个数 * 256+非活跃个数) / 权重,谁的负载小谁优先。
3.目标地址散列(Destination Hashing)(DH)
“目标地址散列”调度算法根据请求的目标IP地址,作为散列键(Hash Key)从静态分配的散列表找出对应的服务器,若该服务器是可用的且未超载,将请求发送到该服务器,否则返回空。对同一个服务器IP的访问原路返回,有助于提高Squid代理的缓存命中率。
4.源地址散列(Source Hashing)(SH)
“源地址散列”调度算法根据请求的源IP地址,作为散列键(Hash Key)从静态分配的散列表找出对应的服务器,若该服务器是可用的且未超载,将请求发送到该服务器,否则返回空。在一个网络中有多个网络出口(防火墙或路由器),来自于同一个客户端IP的访问原路返回,有助于监控/防火墙获得状态值。
Dynamic Scheduling动态调度:相反。Director在选取下一个realserver时,考虑那个realserver本身有多少个活跃连接个数和连接状态Established,甚至多少个非活跃的连接(发起过连接但现在非Established),以此作为标准按调度算法判定和分配,越空闲越优先。
1.最少链接(Least Connections)(LC)
调度器通过“最少连接”调度算法动态地将网络请求调度到已建立的链接数最少的服务器上。如果集群系统的真实服务器具有相近的系统性能,采用“最小连接”调度算法可以较好地均衡负载。
每当新连接进入,Director查看每个realserver的活跃连接数和非活跃连接数,
计算负载overhead= 活跃个数 * 256+非活跃个数。
2.加权最少链接(Weighted Least Connections)(WLC)
在集群系统中的服务器性能差异较大的情况下,调度器采用“加权最少链接”调度算法优化负载均衡性能,具有较高权值的服务器将承受较大比例的活动连接负载。调度器可以自动问询真实服务器的负载情况,并动态地调整其权值。
3.基于局部性的最少链接(Locality-Based Least Connections)(LBLC)
“基于局部性的最少链接”调度算法是针对目标IP地址的负载均衡,目前主要用于Cache集群系统。该算法根据请求的目标IP地址找出该目标IP地址最近使用的服务器,若该服务器是可用的且没有超载,将请求发送到该服务器;若服务器不存在,或者该服务器超载且有服务器处于一半的工作负载,则用“最少链接”的原则选出一个可用的服务器,将请求发送到该服务器。
4.带复制的基于局部性最少链接(Locality-Based Least Connections with Replication)(LBLCR)
“带复制的基于局部性最少链接”调度算法也是针对目标IP地址的负载均衡,目前主要用于Cache集群系统。它与LBLC算法的不同之处是LBLCR要维护从一个目标 IP地址到一组服务器的映射,而LBLC算法维护从一个目标IP地址到一台服务器的映射。该算法根据请求的目标IP地址找出该目标IP地址对应的服务器组,按“最小连接”原则从服务器组中选出一台服务器,若服务器没有超载,将请求发送到该服务器;若服务器超载,则按“最小连接”原则从这个集群中选出一台服务器,将该服务器加入到服务器组中,将请求发送到该服务器。同时,当该服务器组有一段时间没有被修改,将最忙的服务器从服务器组中删除,以降低复制的程度。
按“最小连接”原则选中的缓存服务器没有用户请求的内容就去查找临近的兄弟、父子服务器去复制来内容,依靠ICP (Internet Cache Protocol) Internet缓存协议。
5. 最短的期望的延迟(Shortest Expected Delay Scheduling SED)(SED)
基于wlc算法。这个必须举例来说了
ABC三台机器分别权重123 ,连接数也分别是123。那么如果使用WLC算法的话一个新请求进入时它可能会分给ABC中的任意一个。使用sed算法后会进行这样一个运算
A(1+1)/1
B(1+2)/2
C(1+3)/3
根据运算结果,把连接交给C 。
不再考虑非活动连接个数,负载overhead = ( 当前活跃连接数 + 1 ) *256 / 权重,当初始负载值为零,选择权重值大的服务器做响应,但当前活跃连接数相同时,(0+1)/3和(0+1)/1 就不一致了。谁的负载小谁优先。但权重设置差别过大会引起所有连接指向权重大的本机越来越忙,权重小的反而越来越空。
6.最少队列调度(Never Queue Scheduling NQ)(NQ)
无需队列。如果有台 realserver的连接数=0就直接分配过去,不需要在进行sed运算