目录

lvs的调度算法

lvs的四种模式

四层均衡负载和七层的区别

 

1、lvs调度算法(最常用的四种)

  • 轮叫调度(rr)

调度器通过外部请求的顺序轮流分配到集群中的真实服务器上,对每台服务器都是均等的;但是这样调度器不会考虑服务器上实际的连接数和系统负载,导致服务器处理请求慢,系统负载增大。



  • 加权轮叫(wrr)

调度器通过一个算法根据真实服务器的不同处理能力来分配访问请求,这样可以保证服务器的处理能力。



  • 最少连接(lc)

调度器将访问请求自动的分配到已建立连接最少的服务器上,如果在集群中每台服务器的性能差不多的话,则这种算法可以较好的均衡负载。



  • 加权最小连接(wlc)

主要用于集群中服务器性能差异大的情况下,调度器可以优化负载性能,具有较高权值的服务器可以将承受较大的活动连接。



 

2、lvs的四种模式

LVS 是四层负载均衡,建立在 OSI 模型的第四层——传输层之上,LVS 支持 TCP/UDP 的负载均衡。
LVS 的转发主要通过修改 IP 地址(NAT 模式,分为源地址修改 SNAT 和目标地址修改 DNAT)、修改目标 MAC(DR 模式)来实现。

LVS 的工作模式主要有 4 种:

  1. DR(最常用)(也称直接路由模式)
  2. NAT
  3. TUNNEL(不用)
  4. Full-NAT(了解即可)

 

1、DR模式

lvs调度策略 lvs调度算法原理_服务器

 

请求由 LVS 接受,由真实提供服务的服务器(RealServer, RS)直接返回给用户,返回的时候不经过 LVS。
DR 模式下需要 LVS 和绑定同一个 VIP(RS 通过将 VIP 绑定在 loopback 实现)。
一个请求过来时,LVS 只需要将网络帧的 MAC 地址修改为某一台 RS 的 MAC,该包就会被转发到相应的 RS 处理,注意此时的源 IP 和目标 IP 都没变。
RS 收到 LVS 转发来的包,链路层发现 MAC 是自己的,到上面的网络层,发现 IP 也是自己的,于是这个包被合法地接受,RS 感知不到前面有 LVS 的存在。
而当 RS 返回响应时,只要直接向源 IP(即用户的 IP)返回即可,不再经过 LVS。
DR 模式是性能最好的一种模式。

2、NAT模式

 

lvs调度策略 lvs调度算法原理_lvs调度策略_02

NAT(Network Address Translation)是一种外网和内网地址映射的技术。
NAT 模式下,网络报的进出都要经过 LVS 的处理。LVS 需要作为 RS 的网关。
当包到达 LVS 时,LVS 做目标地址转换(DNAT),将目标 IP 改为 RS 的 IP。RS 接收到包以后,仿佛是客户端直接发给它的一样。
RS 处理完,返回响应时,源 IP 是 RS IP,目标 IP 是客户端的 IP。
这时 RS 的包通过网关(LVS)中转,LVS 会做源地址转换(SNAT),将包的源地址改为 VIP,这样,这个包对客户端看起来就仿佛是 LVS 直接返回给它的。客户端无法感知到后端 RS 的存在。

 

3、Full-NAT()

lvs调度策略 lvs调度算法原理_IP_03

 

在包从 LVS 转到 RS 的过程中,源地址从客户端 IP 被替换成了 LVS 的内网 IP。
内网 IP 之间可以通过多个交换机跨 VLAN 通信。
当 RS 处理完接受到的包,返回时,会将这个包返回给 LVS 的内网 IP,这一步也不受限于 VLAN。
LVS 收到包后,在 NAT 模式修改源地址的基础上,再把 RS 发来的包中的目标地址从 LVS 内网 IP 改为客户端的 IP。
Full-NAT 主要的思想是把网关和其下机器的通信,改为了普通的网络通信,从而解决了跨 VLAN 的问题。采用这种方式,LVS 和 RS 的部署在 VLAN 上将不再有任何限制,大大提高了运维部署的便利性。

 

4、四层负载均衡和七层的区别

    1、四层负载均衡

通过报文中的目标地址和端口,再加上负载均衡设备设置的调度算法,决定选择哪台内部服务器与请求客户端建立TCP连接,然后发送Client请求的数据。 

  2、七层负载均衡

是基于虚拟的URL或主机IP的负载均衡:在四层负载均衡的基础上(没有四层是绝对不可能有七层的),再考虑应用层的特征,比如同一个Web服务器的负载均衡,除了根据VIP加80端口辨别是否需要处理的流量,还可根据七层的URL、浏览器类别、语言来决定是否要进行负载均衡。

 

5、四层负载均衡和七层的优缺点

  1、四层负载均衡:

             (1)抗负载能力强,可以支持高并发数万

            (2)配置性比较低,不宜出人为配置错误

            (3)无流量,LVS只分发请求,而流量并不从它本身出去

            (4)应用范围比较广,因为LVS工作在4层,所以它几乎可以对所有应用做负载均衡,包括http、数据库等

软件本身不支持正则表达式处理,不能做动静分离

 

  2、七层负载均衡:

            (1) 使整个网络更“智能化”,能把对图片类的请求转发到图片服务器,对文字的请求转发到文字服务器
            (2) 可以有效防止 SYN Flood攻击,使网站更安全

   缺点:对设备要求高

 

 

6、四层、七层软件(已知常用)

四层:LVS   F5

七层:Nginx     Haproxy

 

总的来说,一般是lvs做4层负载;nginx做7层负载;haproxy比较灵活,4层和7层负载均衡都能做。