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也允许企业独立地增加它们的存储容量。 

 

三种存储解决方案对比

集群基础知识_集群 lvs HA

 

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 HA_02

图一:LVS-NAT 模型

 玩笑1:NAT就像中国大妈CIP好不容易出国,在外国专卖店VIP专挑奢侈品买LV包,海关Director报高档税,结果回家一看,全都made in China.

集群基础知识_集群 lvs HA_03

图二:LVS-DR模型

玩笑2:中国大妈CIP跑到外国买达芬奇家具,老外忽悠大妈说原产地绝对是佛罗伦萨VIP,结果原产地是东莞DIP,在海关做个地址伪装,直接从东莞发货。

集群基础知识_集群 lvs HA_04

图三: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

根据运算结果,把连接交给

    不再考虑非活动连接个数,负载overhead = ( 当前活跃连接数 + 1 ) *256 / 权重,当初始负载值为零,选择权重值大的服务器做响应,但当前活跃连接数相同时,(0+1/3和(0+1/1 就不一致了。谁的负载小谁优先。但权重设置差别过大会引起所有连接指向权重大的本机越来越忙,权重小的反而越来越空。

     6.最少队列调度(Never Queue Scheduling NQ(NQ)

   无需队列。如果有台 realserver的连接数=0就直接分配过去,不需要在进行sed运算