码迷,mamicode.com
首页 > 其他好文 > 详细

集群及LVS原理

时间:2015-05-24 06:37:30      阅读:315      评论:0      收藏:0      [点我收藏+]

标签:linux   集群   lvs   

集群(cluster):单台服务器无法满足生产,其中包括容量,可用,性能等,就要组合多台服务器来协同处理,对外部环境来说,集群作为一个整体

一、集群的常见类型:

 1、LB:Load Balancing 负载均衡集群

   LB利用一个集群中的多台服务器完成工作,作用就是将用户的请求,选择分配给当时负载最小,且能提供最好的服务的服务器来处理。

   LB主要应用于访问请求很大的web和在线网游场景

  2、HA:High Availability 高可用集群

  HA是利用集群中系统冗余,时刻以特定的方式对正在工作的服务器进行检测,当某台服务器发生故障时,备用服务器会替代它工作,最大限度保证服务的可用性。

  HA主要应用关键型业务场景,例如银行,电信等

  3、HP:High Performance 高性能集群

   HP利用一个集群中多台服务器共同完成一件任务,大大提高运行速度和可靠性,弥补了单机性能的不足。

   HP主要应用于大数据计算场景,例如天气预报,搜索引擎等。

   说明:生产环境中,集群是混合使用的。如金融类网站,面对海量的访问,首先要由负载均衡平衡大访问,而重要数据又要保证可用性,为了提高访问速度又要提高性能。

  二、负载均衡集群

  负载均衡集群分为硬件和软件,硬件的性能较好,但价格较高,有F5、Citix、IBM等众多商家的相关产品,一般并发处理数500W以上。软件有LVS、Haproxy、nginx、apache等

   软件负载均衡:LVS

   LVS是一个开源的软件,可以实现linux平台下简单负载均衡。LVS是linux virtual server的缩写,意思为linux虚拟服务

    LVS采用三层结构:负载调度器,服务器池,共享存储。

    负载调度器(Director)工作在TCP/IP协议的四层,转发协议由内核模块完成,转发规则由管理员定义,所以,LVS是两段式的架构设计,在内核空间中工作的是ipvs,而在用户空间中工作的,用来让管理员定义集群服务规则的是ipvsadm。这跟iptables的工作原理几乎一样,只是运行路线不同。

    iptables如下图:

   技术分享

    lvs如下图:

   技术分享

    lvs中各IP的说明,如图:

   技术分享

    CIP:外网IP,客户端的请求IP

    VIP:Director(负载调度器)用来向客户端提供服务的IP

    DIP:Director用来和RIP通信的IP

    RIP:集群节点(提供服务的服务器)的IP

    LVS的四种转发模型:

    1、LVS-NAT:网络地址转换 Network Address Translation

    其实上图就是一个LVS-NAT模型,Director要处理请求和响应报文,因此压力山大,在实际生产环境中,很少用此模型,数据包地址转换过程如下:

    S:CIP D:VIP-->Director-->S:CIP D:RIP-->Real server-->S:RIP D:CIP-->Director-->S:VIP D:CIP

    此模型有以下特点:

    (1)RS使用私有地址,RS的网关指向DIP

    (2)请求和响应都由Director转发,Director易成为瓶颈

    (3)支持端口映射

    (4)RS可使用任意OS

    (5)RS的RIP必须与Director的DIP在同一网络

    2、LVS-DR:直接路由 Direct routing

     此模型中Director仅处理客户端请求报文,而响应不经由Director。数据包地址转换过程如下:

    S:CIP D:VIP[路由器MAC Director MAC]-->Director-->S:CIP D:VIP[Drector MAC Real server MAC]-->Real server-->S:VIP D:CIP

     此模型有以下特点:

     (1)保证前端路由器将目标地址为VIP的请求通过ARP解析后送往Director

            解决方案:

              静态绑定:在前端路由将VIP对应的MAC静态配置为Director的MAC

              arptables:在各RS上,通过arptables规则拒绝其响应对VIP的ARP广播请求

              内核参数:在RS上修改内核参数,并结合地址配置方式实现拒绝响应对VIP的ARP广播请求

        (2)RS的RIP可以使用私有地址,也可用公网,通过公网对RS管理

        (3)请求报文必须经由Directo调度,响应不经由

        (4)各RIP必须与DIP在同一个物理网络

        (5)不支持端口映射

        (6)RS可使用多数OS

        (7)RS的网关一定不能指向Director

    3、LVS-TUN:IP隧道 IP tunneling

    不修改请求报文IP首部,而是通过IP隧道机制在原有的IP报文之外再封装IP首部,经由互联网把请求报文交给选定的RS

    架构特性

       (1)RIP,DIP,VIP都是公网地址

        (2)RS的网关不能指向DIP

        (3)请求报文由Director分发,由RS响应Client

        (4)不支持端口映射

        (5)RS的OS要支持隧道功能

  4、lvs-fulnat:通过修改源地址和目标地址实现,请求修改为DIP-RIP,响应修改为VIP-CIP

     架构特性

     (1)RIP,DIP可以使用私有地址

     (2)RIP和DIP可以不在同一个网络,RIP的网关不必指向DIP

     (3)支持端口映射

     (4)RS的OS可使用任意

     (5)请求和响应报文都经由Director

  三、LVS的调度方法

   调度方法,就是Director(调度器)在接收到用户请求后,根据算法把请求发给服务器池中的哪个服务器。其中调度方法又分为静态方法和动态方法。

   1、静态调度方法 fixed scheduling

   不关心当前连接的活动和非活动状态,不检查RS的连接状态,相应算法如下:

   (1)RR:Round Robin 轮调

   把请求依次分配给服务器池中的服务器,无需记录当前所有连接的状态,是一种无状态调度。其实最早的DNS的资源记录给1个域名,多个IP的负载均衡就是种算法。

   (2)WRR:Weighted Round Robin 加权轮调

   管理员可以根据后端服务器的处理性能,分配不同的权重比例,处理能力的大的分配大的权重。

   (3)SH:Source Hashing 源地址哈希

   源地址唯一性,用hash算法的表来记录CIP和RIP,根据请求的源IP地址进行判定,保证响应地址和进来的地址,从同一个防火墙通过

   (4)DH:Destination Hashing 目标地址哈希

   目标地址唯一性,此算法会产生一个hash算法的表来记录客户的这次请求所用的CIP和建立连接RIP,根据首次为其分配的RIP,在hash表缓存时间内,使其每次的新请求,都定向访问到这个RIP 

   2、动态调度方法 dynamic scheduling

   由于静态调度算法不考虑RS的当前状态,因此对于动态网站,动态调度算法才合适,因为其能够给予后台服务器当前的活动连接数进行请求分配,避免了一台服务器负载太多,而其它则闲置

   两种标准:

   活动状态的连接(active)

   非活动状态的连接(inactive)

   例如:ssh,telnet均是基于状态的连接,需要实时进行检查连接的状态,而http则是无状态的连接

   相应的算法:

   (1)LC:Least Connections 最少连接调度

   把请求分给当前负载最小的服务器,负载判断值为overhead,overhead=active*256+inactive,当active都为0时,则分发请求由上而下进行。

   (2)WLC:weight LC 加权重的最少连接

   考虑服务器池的每台服务器性能不统一,也就意味着,活动连接数大并不表示性能差,因此为其加上权重,判断值为:overhead=(active*256+inactive)/weight

   (3)SED:Shortest Expected Delay 最短的期望延迟

   不计算非活动连接,如果两个性能不同,但是计算后权重一样的服务器,则选择性能好的服务器来处理新请求,计算方法:overhead=(active+1)*256/weight

   (4)NQ:Never Queue 永不排队

   不计算非活动连接,不论权重,只要没有活动连接,就依次分配给RS一个请求,如果所有服务器都忙,则按overhead计算。

   (5)LBLC:Locality-Based Least Connection 基于本地的最少连接

   如果客户请求之前连接过并产生缓存未失效,则直接将请求发给之前连接过的RS,否则,以LC算法调度。

   (6)LBLCR:Locality-Based Least Connection with Replication 带复制的基于本地的最少连接

   假设两台RS,由于缓存的缘故,一个非常忙,一个非常闲,为了负载均衡将忙的RS的缓存发送给不忙的RS,然后使用LC调度算法重新负载均衡即可,此算法要求RS之间要配置缓存共享。

   SED和NQ不计算非活动连接,所以大多情况LC和WLC最常用。

   WLC和LBLC用的比较多,WLC用于正常的服务场景,LBLC用于带缓存的请求。

四、LVS的共享存储(shared storage)

    共享存储实际上也是物理磁盘等存储介质,命名只是应用环境的特殊性。

    共享存储为服务器池提供一个共享的存储区,使得服务器池有相同的内容,提供相同的服务。

    共享存储通常是数据库、网络文件系统或者分布式文件系统。服务器结点需要动态更新的数据一般存储在数据库系统中,还需保证并发访问时数据的一致性。静态的数据可以存储在网络文件系统(如NFS/CIFS)中,但网络文件系统的伸缩能力有限,一般来说,NFS/CIFS只支持3~6个繁忙的服务器结点。对于规模较大的集群系统,使用分布式文件系统,如AFS、GFS、coda和Intermezzo等。分布式文件系统的分布式锁管理器(Distributed Lock Manager)是保证数据一致性的有效手段。

  共享存储的简单分类:

    1、DAS:Direct Attached Storage

    直接连接到主机的存储设备,一般需要PCI总线的支持,速度比较快。直连式存储的数据量越大,备份和恢复越慢,对服务器硬件的依赖性越大。此类设备的一般接口为IDE,SCSI,USB,SATA

    2、NAS:Network Attached Storage  网络附加存储

    NAS是一种通过网络介质实现数据存储的机制。优点:适用于共享存储,有文件锁,易于部署,跨平台等。实现方式一般为NFS,SAMBA,WIN共享等,缺点是传输和响应速度慢。

    3、SAN:Storage Area Network 存储网络

    SAN一般是局域网磁盘阵列,具有磁盘阵列的所有特征:大容量,高效能,可靠。易于安装,维护,良好的扩展,响应快。缺点:由于其工作更底层,因此没有文件管理系统,两个请求同时对一个文件操作,会导致文件系统崩溃,因此需要软件级别的高可用集群实现分布式文件锁


本文出自 “蜗牛” 博客,请务必保留此出处http://linuxkingdom.blog.51cto.com/6334977/1654606

集群及LVS原理

标签:linux   集群   lvs   

原文地址:http://linuxkingdom.blog.51cto.com/6334977/1654606

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!