LVS集群之十种调度算法及负载均衡-理论

一、LVS概念

LVS(Linux Virtual Server):linux 虚拟服务器

LVS是个负载均衡设备,它不提供任何服务,用户请求到这里的时候,它是将客户需求转发至后端真正提供服务的服务,所以说后端的服务称作real server。LVS分为两段,前一段称为ipvsadm(管理集群服务的命令行工具),后面一段叫做ipvs(内核模块)【提示:LVS和iptables不能同时使用】。

二、LVS类型

LB(Load Balancing):负载均衡集群

特性:为了增加能力能力

HA(High Availability):高可用集群

特性:提供服务的可用性(一年在线时间达到99.999%才行)

计算方法:在线时间/(在线时间/故障处理时间)

HP([HPC]High Performance):高性能集群

特性:提供服务的性能

三、LVS组成结构(负载均衡实现方案)

基于DNS域名轮流解析的方法

基于客户端调度访问的方法

基于应用层系统负载的调度方法

基于IP地址的调度方法

其中基于IP的负载调度算法中,IP负载均衡技术是执行效率最高的

四、LVS十种调度算法

1、静态调度:

①rr(Round Robin):轮询调度,轮叫调度

轮询调度算法的原理是每一次把来自用户的请求轮流分配给内部中的服务器,从1开始,直到N(内部服务器个数),然后重新开始循环。算法的优点是其简洁性,它无需记录当前所有连接的状态,所以它是一种无状态调度。【提示:这里是不考虑每台服务器的处理能力】

②wrr:weight,加权(以权重之间的比例实现在各主机之间进行调度)

由于每台服务器的配置、安装的业务应用等不同,其处理能力会不一样。所以,我们根据服务器的不同处理能力,给每个服务器分配不同的权值,使其能够接受相应权值数的服务请求。

③sh:source hashing,源地址散列。主要实现会话绑定,能够将此前建立的session信息保留了

源地址散列调度算法正好与目标地址散列调度算法相反,它根据请求的源IP地址,作为散列键(Hash Key)从静态分配的散列表找出对应的服务器,若该服务器是可用的并且没有超负荷,将请求发送到该服务器,否则返回空。它采用的散列函数与目标地址散列调度算法的相同。它的算法流程与目标地址散列调度算法的基本相似,除了将请求的目标IP地址换成请求的源IP地址,所以这里不一个一个叙述。

④Dh:Destination hashing:目标地址散列。把同一个IP地址的请求,发送给同一个server。

目标地址散列调度算法也是针对目标IP地址的负载均衡,它是一种静态映射算法,通过一个散列(Hash)函数将一个目标IP地址映射到一台服务器。目标地址散列调度算法先根据请求的目标IP地址,作为散列键(Hash Key)从静态分配的散列表找出对应的服务器,若该服务器是可用的且未超载,将请求发送到该服务器,否则返回空。

2、动态调度

①lc(Least-Connection):最少连接

最少连接调度算法是把新的连接请求分配到当前连接数最小的服务器,最小连接调度是一种动态调度短算法,它通过服务器当前所活跃的连接数来估计服务器的负载均衡,调度器需要记录各个服务器已建立连接的数目,当一个请求被调度到某台服务器,其连接数加1,当连接中止或超时,其连接数减一,在系统实现时,我们也引入当服务器的权值为0时,表示该服务器不可用而不被调度。

简单算法:active*256+inactive(谁的小,挑谁)

②wlc(Weighted Least-Connection Scheduling):加权最少连接。

加权最小连接调度算法是最小连接调度的超集,各个服务器用相应的权值表示其处理性能。服务器的缺省权值为1,系统管理员可以动态地设置服务器的权限,加权最小连接调度在调度新连接时尽可能使服务器的已建立连接数和其权值成比例。

简单算法:(active*256+inactive)/weight【(活动的连接数+1)/除以权重】(谁的小,挑谁)

③sed(Shortest Expected Delay):最短期望延迟

基于wlc算法

简单算法:(active+1)*256/weight 【(活动的连接数+1)*256/除以权重】

④nq(never queue):永不排队(改进的sed)

无需队列,如果有台realserver的连接数=0就直接分配过去,不需要在进行sed运算。

⑤LBLC(Locality-Based Least Connection):基于局部性的最少连接

基于局部性的最少连接算法是针对请求报文的目标IP地址的负载均衡调度,不签主要用于Cache集群系统,因为Cache集群中客户请求报文的布标IP地址是变化的,这里假设任何后端服务器都可以处理任何请求,算法的设计目标在服务器的负载基本平衡的情况下,将相同的目标IP地址的请求调度到同一个台服务器,来提高个太服务器的访问局部性和主存Cache命中率,从而调整整个集群系统的处理能力。

基于局部性的最少连接调度算法根据请求的目标IP地址找出该目标IP地址最近使用的RealServer,若该Real Server是可用的且没有超载,将请求发送到该服务器;若服务器不存在,或者该服务器超载且有服务器处于一半的工作负载,则用“最少链接”的原则选出一个可用的服务器,将请求发送到该服务器。

⑥LBLCR(Locality-Based Least Connections withReplication):带复制的基于局部性最少链接

带复制的基于局部性最少链接调度算法也是针对目标IP地址的负载均衡,该算法根据请求的目标IP地址找出该目标IP地址对应的服务器组,按“最小连接”原则从服务器组中选出一台服务器,若服务器没有超载,将请求发送到该服务器;若服务器超载,则按“最小连接”原则从这个集群中选出一台服务器,将该服务器加入到服务器组中,将请求发送到该服务器。同时,当该服务器组有一段时间没有被修改,将最忙的服务器从服务器组中删除,以降低复制的程度。

五、IPVS实现负载均衡的方法

NAT:地址转换(类似于DNAT)

1、集群点跟director必须工作在同一个IP的网络中

2、RIP通常是私有地址,仅用于各集群节点间的的通信

3、director位于client和real server之间,并负责处理进出的所有通道。

4、realserver必须将网关执行DIP

5、director支持端口映射

6、realserver可以使用任何类型的操作系统(os)

7、较大规模应用场景中,director易成为系统瓶颈

DR:直接路由(及用于作为源地址)

1、各集群节点跟director必须在同一个物理网络中;

2、RIP可以使用公网地址,实现便携的远程管理和监控;

3、director仅负责处理入站请求,形影报文则有realserver直接发往客户端

4、realserver不能将网关指向DIP,而是直接指向前端网关;

5、director不支持端口映射

6、大多数操作系统能够用在realserver

7、director能够处理更多的realserver

TUN:隧道

1、集群节点可以跨越Internet

2、RIP必须是公网地址

3、director仅负责处理入站请求,形影报文则有realserver直接发往客户端

4、realserver网关不能指向director

5、只有咫尺隧道功能的OS才能用于realserver

6、不支持端口映射

六、ipvsadm常用命令

ipvsadm:

1、管理集群服务

添加:-A -t|u|f service-address [-sscheduler]

-t:tcp协议的集群服务

-u:udp协议的集群

-f:FWM:防火墙标记

修改:-E

删除:-D

-D -t|u|f service-address

例如:# ipvsadm -A -t 172.16.100.1:80 -s rr

2、管理集群服务中的RS

添加:-a -t|u|f service-address -rserver-address [-g|i|m] [-w weight]

-t|u|f service-address:事先定义好的某集群服务

-r server-address:某RS的地址,在NAT模型中,可以使用IP:PORT事先端口映射

[-g|i|m]:LVS类型

-g:DR

-I:TUN

-m:NAT

[-w weight]:定义服务器权重

3、修改:-e

4、删除:-d -t|u|f service-address -r server-address

例如:#ipvsadm -a -t 172.16.100.1:80 -r192.168.10.8 -m

例如:#ipvsadm-a -t 172.16.100.1:80 -r 192.168.10.9 -m

5、查看

-L|l[options]

-n:数字格式显示主机地址和端口号

--stats:统计信息

--rate:速率

--timeout:显示tcp、tcpfin和udp会话的超时时间值

--daemon

--sort:跟协议、地址、端口进行排序,默认为升序

-c:显示当前ipvs连接状况

6、删除所有集群服务:

-C:清空ipvs规则

7、保存规则

-S:(用输出重定向进行保存)

格式:#ipvsadm -s >/path/to/somefile

8、载入此前的规则:

-R

格式:#ipvsadm -R </path/to/somefile

原文:http://lzysg172.blog.51cto.com/6624306/1199412

时间: 2024-11-07 21:49:07

LVS集群之十种调度算法及负载均衡-理论的相关文章

LVS集群之十种调度算法及负载均衡(配置篇)

架构图: 1.安装keepalived keepalived起初是为LVS设计的,专门用来监控集群系统中各个服务节点的状态,后来又加入了VRRP的功能,VRRP是Virtual Router Redundancy Protocol(虚拟路由器冗余协议)的缩写,VRRP出现的目的就是为了解决静态路由出现的单点故障问题,它能够保证网络的不间断.稳定的运行.所以,keepalived一方面具有服务器健康检测功能,另一方面也具有HA cluster功能. [email protected]:~$ apt

LVS集群十种调度算法及负载均衡理论

一.LVS概念 LVS(Linux Virtual Server):Linux 虚拟server: LVS是个负载均衡设备.它不提供不论什么服务.用户请求到这里的时候.它是将客户需求转发至后端真正提供服务的服务.所以说后端的服务称作real server: LVS分为两段,前一段称为ipvsadm(管理集群服务的命令行工具),后面一段叫做ipvs(内核模块): [提示]LVS和iptables不能同一时候使用: 二.LVS类型 LB(Load Balancing):负载均衡集群 特性:为了添加能

Xtradb+Haproxy高可用数据库集群(二)haproxy负载均衡篇

Xtradb集群部署完成后,3台机器都能同时读写,此时需要在前端搭建haproxy来进行负载均衡. 官网haproxy配置参考地址: https://www.percona.com/doc/percona-xtradb-cluster/5.6/howtos/virt_sandbox.html Haproxy服务器配置 拿一台机器用作haproxy,此处是192.168.6.219. 安装haproxy yum install haproxy -y 配置文件: [[email protected]

rocketmq的消费者集群消费消息,实现负载均衡

package com.bfxy.rocketmq.model; import java.util.List; import org.apache.rocketmq.client.consumer.DefaultMQPushConsumer;import org.apache.rocketmq.client.consumer.listener.ConsumeConcurrentlyContext;import org.apache.rocketmq.client.consumer.listene

LVS集群的基本原理、LVS/NAT模式的配置、LVS/DR模式的配置、编写自动脚本检查LVS上realserver健康性

Linux 虚拟服务器(LVS)由章文嵩在国防科技大学就读博士期间创建利用LVS可以实现高可用的.可伸缩的Web.Mail.Cache和Media等网络服务,已经被集成到linux内核里了. 1.什么是集群? 使用一组服务器提供相同的服务2.使用集群的目的? 增强可靠性   降低成本   提高可扩展性   提高性能3.集群分类? HPC 高性能计算集群    (气象   航天   航空)    LB    负载均衡集群 (平均地分摊处理)    * LVS    hproxy HA    高可用

lvs集群简介

LVS集群:开源免费,具有高可用性,高稳定性,高可靠性 高可用性:lvs的负载均衡集群具有很高的处理能力,real server组中的某台node节点出问题了,不会影响整个集群的正常工作:而且具有超高负荷的服务能力,可支持上百万个并发连接数 缺点:在LB上容易出现单点故障,若只有一台LB机,虽然LB机的负载不是很高,但是一旦出现问题整个集群将无法再正常工作:解决这个问题的方法是:对LB机做一个热备机(双机热备),正常情况下LB机工作,当LB机出现问题的时候由热备机接管,继续工作(备用LB机通过h

LVS集群的负载调度

章文嵩 ([email protected]) 转自LVS官方资料 2002 年 5 月 本文主要讲述了LVS集群的IP负载均衡软件IPVS在内核中实现的各种连接调度算法.针对请求的服务时间变化很大,给出一个动态反馈负载均衡算法,它结合内核中的加权连接调度算法,根据动态反馈回来的负载信息来调整服务器的权值,来进一步避免服务器间的负载不平衡. 1. 前言 在上一篇文章中,我们主要讲述了LVS集群中实现的三种IP负载均衡技术,它们主要解决系统的可伸缩性和透明性问题,如何通过负载调度器将请求高 效地分

LVS集群中的IP负载均衡技术

章文嵩 ([email protected]) 转自LVS官方参考资料 2002 年 4 月 本文在分析服务器集群实现虚拟网络服务的相关技术上,详细描述了LVS集群中实现的三种IP负载均衡技术(VS/NAT.VS/TUN和VS/DR)的工作原理,以及它们的优缺点. 1.前言在 前面文章中,讲述了可伸缩网络服务的几种结构,它们都需要一个前端的负载调度器(或者多个进行主从备份).我们先分析实现虚拟网络服务的主要技术,指出 IP负载均衡技术是在负载调度器的实现技术中效率最高的.在已有的IP负载均衡技术

Lvs 集群简介

随着现金站点的访问量越来越大,提高服务器应对大量的并发,向上扩展即提高设备配置,会有瓶颈,而且性价比太低,所以有了横向的扩展,即将用户的请求分摊至多台服务器,以此来解决大量用户的并发访问. 高可用集群(High Availability)用于保障服务的可用性,在全局提高负载均衡服务,集群的思路是将大业务切割分为多个小业务:分布式的应用.分布式的静态资源.分布式数据和存储.以及分布式计算等:集群主要有LB.HA.HP,接下来主要介绍的LB集群.LB集群是通过调度器(director)来实现其功能;