Linux服务器集群系统 第4季

欢迎进入Linux社区论坛,与200万技术人员互动交流 >>进入

  前言

服务器执行,使得由多台独立计算机组成的集群系统成为一台虚拟服务器;客户端应用程序与集群系统交互时,就像与一台高性能的服务器交互一样。

  本文将主要讲述在负载调度器上的负载调度策略和算法,如何将请求流调度到各台服务器,使得各台服务器尽可能地保持负载均衡。文章主要由两个部分组成。第一部分描述IP负载均衡软件IPVS在内核中所实现的各种连接调度算法;第二部分给出一个动态反馈负载均衡算法(Dynamic-feedback load balancing),它结合内核中的加权连接调度算法,根据动态反馈回来的负载信息来调整服务器的权值,来进一步避免服务器间的负载不平衡。

  在下面描述中,我们称客户的socket和服务器的socket之间的数据通讯为连接,无论它们是使用TCP还是UDP协议。对于UDP数据报文的调度,IPVS调度器也会为之建立调度记录并设置超时值(如5分钟);在设定的时间内,来自同一地址(IP地址和端口)的UDP数据包会被调度到同一台服务器。

  内核中的连接调度算法

  IPVS在内核中的负载均衡调度是以连接为粒度的。在HTTP协议(非持久)中,每个对象从WEB服务器上获取都需要建立一个TCP连接,同一用户的不同请求会被调度到不同的服务器上,所以这种细粒度的调度在一定程度上可以避免单个用户访问的突发性引起服务器间的负载不平衡。

  在内核中的连接调度算法上,IPVS已实现了以下八种调度算法:

  轮叫调度(Round-Robin Scheduling)

  加权轮叫调度(Weighted Round-Robin Scheduling)

  最小连接调度(Least-Connection Scheduling)

  加权最小连接调度(Weighted Least-Connection Scheduling)

  基于局部性的最少链接(Locality-Based Least Connections Scheduling)

  带复制的基于局部性最少链接(Locality-Based Least Connections with Replication Scheduling)

  目标地址散列调度(Destination Hashing Scheduling)

  源地址散列调度(Source Hashing Scheduling)

  下面,我们先介绍这八种连接调度算法的工作原理和算法流程,会在以后的文章中描述怎么用它们。

  2.1. 轮叫调度

  轮叫调度(Round Robin Scheduling)算法就是以轮叫的方式依次将请求调度不同的服务器,即每次调度执行i = (i + 1) mod n,并选出第i台服务器。算法的优点是其简洁性,它无需记录当前所有连接的状态,所以它是一种无状态调度。

[1][2][3][4][5]

如果可以,我真想和你一直旅行。或许是某个未开发的荒凉小岛,

Linux服务器集群系统 第4季

相关文章:

你感兴趣的文章:

标签云: