服务器 频道

新方法:提高Web集群服务器可用性

改进的方案

    新的改进方案中,在每个后端节点中驻留一个检测进程,在负载均衡器LB 中仅有一个状态接收进程,负责接收由检测进程发送的对应后端节点的状态信息,并用状态信息来修改负载均衡器的调度参数,如图2(b)。 检测进程采用动态调整的时间间隔来发送后端节点的状态信息,时间间隔的调整根据后端节点的负载,通过检测后端节点的请求连接数,来确定下一次发送状态信息的时间间隔。新的方法中引入了故障猜测状态,这时对应后端节点达到最大连接数,这种情景下若再转发请求给该后端节点,后端节点可能会丢弃请求。

    具体方法如下:在负载均衡器中为每个后端节点状态信息表项增加一个计数器,每隔一定时间(如经验值200ms),计数器加1。当接收到某个后端节点的状态信息,如果状态信息是不正常的,如httpd进程处于非活动状态,这时会修改调度参数,停止对该后端节点转发请求,否则计数器清零。这样对应后端节点的负载就反映在每个计数器的值上。

    计数器共设置两个阈值:第1个阈值对应的是后端节点已达到最大连接数(设置为10) ;第2个阈值对应的是确认服务器真正发生故障(设置为50)。当计数器到达第1个阈值,认为该后端节点进入故障猜测状态,负载均衡器停止向该后端节点发送新的请求。当计数器达到第2 阈值,认为该后端节点进入故障状态。当负载均衡器确认后端节点处于故障状态,启动故障恢复动作。根据故障的情景,如果后端节点没有停机,可以采用远程启动Web 服务;如果后端节点已停机,可以采用智能硬件远程启动后端节点,如使用wake-online 或IPMI,然后启动Web 服务。

    连接数可以反映正在处理和等待的请求数目,在一定程度上可以指示后端节点的实时负载。检测程序,主要检测状态信息,如CPU、 内存磁盘的利用率、后端节点的连接数(real_conn)和apache服务器的守护进程httpd的状态。

    后端节点的最大连接数max_conn可以测试出,first_threshold是预设的第1个阈值对应的时间间隔(2s)。我们采用下面的方法简单的计算检测状态的下一时间间隔:

next_interval = real_conn / max_conn * first_threshold   (2)

    检测进程发送后端节点状态信息的过程如下:

(1)  检测程序检测后端节点的状态信息连接数和httpd 状态;

(2)  向负载均衡器的接收进程发送状态信息;

(3)  使用式(2)计算下一次发送状态信息的间隔next_interval;

(3) 检测程序等待next_interval 返回(1)执行。

    这样做的目的是为了当后端节点负载过重时,通过延长检测间隔,减少因检测和发送状态信息带给后端节点和负载均衡器资源的额外开销;同时,延长发送状态信息的时间间隔,可以变相地告知负载均衡器,后端节点负载过重,从而减少向后端节点转发请求。

0
相关文章