LVS

来源:互联网 发布:算法导论 22.3 10 编辑:程序博客网 时间:2024/06/04 19:09

集群的种类

 1.负载均衡(Load Balance)集群  LB

 2.高可用(High Availability)集群 HA

 3.高性能计算


一、BL实现手段

   硬件 F5负载均衡器

   软件  LVS(4层,传输层)   Nginx(7层,应用层)


  LVS(4层)模式: (LVS负载均衡的三种包转发方式)

      1. VS NET

      2. VS DR

      3.VS TUN


 lVS(Linux Virtual Server) Linux虚拟服务器

          http://wwww.linuxvirtualserver.org

          http://zh.linuxvirtualserver.org


     LVS集群采用三层结构


        第一层 

                负责调度器/分发器(load balancer)

   它是整个集群对外的前端机,负责将客户的请求发送到一组服务器上执行,而客户端认为服务是来自一个IP地址服务器上的。

       第二层

             服务器池(server pool)


是一组真正执行客户请求的服务器,执行的服务器有WEB、Mail 、 FTP和DNS等

      第三层

           共享存储(shared storage)


它为服务池提供一个共享的存储区,这样很容易使服务器池拥有相同的内容,提供相同的服务。


 LVS负载均衡的三种包转发方式,不同的转发模式决定了不同的cluster的网络结构

NAT(网络地址映射)

通过网络地址转换将一组服务器构成一个高性能的、高可用的、虚拟服务器。

NAT方式可支持任何操作系统,以及私有网络,并且只需要一个Internet IP地址,但是整个系统的性能受到限制。因为执行NAT每次需要重写包(如:公网IP数据转向内网特定IP服务器上,需要ip的解包和装包过程),有一定的延时;另外,大部分应用有80%的数据是从服务器流向客户机,也就是用户的请求非常短,而服务器的回应非常大,对负载均衡器形成很大压力,成为了新的瓶颈。

优点: 支持任何操作系统及私有网络,并且只需要一个Internet IP地址.

缺点:LVS本身很容易成为瓶颈,因为所有请求必须经过它,同时所有服务器返回的数据也必须结果它。

                IP Tunneling(IP隧道)

director(分发器)分配不同的请求到不同的real server,real server处理请求后直接回应给用户客户机,这样director负载均衡器仅处理客户机与服务器的一半连接。IP Tunneling技术极大的提高了director的调度处理能力,同时也极大地提高了系统能容纳的最大节点数,可以超过100个节点。real server可以在任何LAN或WAN上运行,这意味着运行地理上的分布,这在灾难恢复中有重要意义。服务器必须拥有正式的IP地址用于客户机直接通信,并且所有服务器器必须支持IP隧道协议。

                        不足:返回的数据需要进行IP封装,必须拥有正式的IP地址。

Direct Routing(直接路由)

  与IP Tunneling类似,负载均衡器仅处理一半的连接,避免了性能瓶颈,同样增加了系统的可伸缩性。Direct Routing与IP Tunneling相比,没有IP封装的开销,但是由于采用物理层(修改MAC地址)技术,所有服务器必须在一个物理网段。


不足:必须在一个局域网内(即同一个网段内),而且必须是公网地址(成本高)。


LVS NAT 模式工作原理:

客户端访问调度器时,调度器通过网络地址转换,调度器重写请求报文的目标地址,根据预设的调度算法将请求分派给后端的真实服务器;真实服务器的响应报文通过调度器时,报文的源地址被重写,再返回给客户,完成整个负载调度过程。


步骤1: 客户端发送请求


步骤2: 分发器重写目标地址   DIP:目标地址  hub小型交互机



步骤3:服务器返回客户端,调度器重写服务器源地址



    

LVS DR 模式原理:  MAC地址转换



LVS的调度模式:     //通过ipvsadm 设置


-s rr 轮询法    

round robin  在服务器池中无穷的循环中遍历

-s wrr 带权重的循环法

wighted round robin

-s lc 最少连接法

least connection

-s wlc 带权重的最少连接法

weighted least connection

-s lblc 基于本地的最少连接法

locality based least connection 基于局部的最小连接,当real server是缓存服务器时用的比较多。

-s dh 目标散列法

destination hashing

-s sh 源散列法

source hashing

同一个ip客户端总是分发给一个real server,可以让客户端总是访问自己的会话信息,这种机制叫会话保持。

基于IP地址标识客户端的缺点: 很多内网用户会伪装成公网IP来访问服务器,不能人为的控制负载均衡。

比较高级的方法是:

基于客户端提供我们的sessionid来实现会话保持。haproxy(负载均衡软件)可以实现基于会话信息来判断保持会话。

如何保持会话一致:

1.所有会话数据同步

2.所有会话信息保持到数据中(memcached). 

-s sed 最短预期延迟法

shortest expected delay

-s nq  永不排列法

never queue

0 0