LVS 负载均衡调度器

Linux Cluster:Linux集群

扩展方式:

Scale up: 垂直扩展,即使用性能更好的主机来取代当前主机

Scale out: 横向扩展,即增加服务器,获得容量的提升以到达性能的优化

director[ 调度器 ], dispatcher[ 分发器 ], load balancer[ 负载均衡器 ]

Linux Cluster类型:

负载均衡集群:LB [ Load Balancing ]

高可用集群:HA [ High Availability ]

可用性 =  一个系统的平均无故障时间/(平均无故障时间+平均修复时间)

95%,
99%, 99.9%, 99.99%, 99.999%

高性能集群:HP [ High Performance ]

构建高可扩展的系统,应该遵循的一个基本原则:在系统内部尽量避免串行化和交互;

设置集群思路:

1)分层:接入层 --> 应用层 --> 服务层 --> 数据层

2)分割:化整为零,切割大业务为多个小业务

3)分布式:

分布式应用

分布式静态资源

分布式数据和存储

分布式计算

“可扩展性”、“高可用性”、“性能”:

性能:响应时间;

容量:在一定时间内能完成的工作量;容量必须是可有效利用;

最大吞吐量:基准性能测试时得出的数据指标;系统容量的极限;

容量:在保证可接受性能的情况下能够达到的吞吐量;

可扩展性:表明了需要增加资源以完成更多的工作任务时能够获得的划算地等同提升;

Linux的集群类型:LB、HA、HP

LB集群调度器的实现:

工作在协议层来划分:

tcp:根据请求报文中的目标地址和端口进行调度;

应用层:根据请求的内容进行调度,而且此种调度为“代理”方式;

软件:

tcp:
lvs (Linux Virtual Server), haproxy, nginx

http:
haproxy, nginx, apache(proxy module, balancer module), ats(apache traffic
server), squid, varnish

mysql:
mysql-proxy

硬件:

F5:Big-IP

Citrix:
NetScaler

A10:
A10

Array:

RedWare

lvs: Linux Virtual Server,是由章文嵩设计开发的

根据目标地址和端口作出转发与否的决策,根据调度方法作出转发至哪一个后端的决策;

组成部分:ipvs, ipvsadm

netfilter:

PREROUTING、INPUT、FORWARD、OUTPUT、POSTROUTING

ipvs工作于netfilter的INPUT链接;

ipvsadm用于在ipvs上定义集群服务:同时也得定义此集群服务对应于有哪个后端主机可用;

根据所指定的调度方法(算法)作出调度决策;

支持的协议:TCP, UDP, SCTP, AH, ESP, AH_ESP

lvs中的常用术语约定:

Host:

Director:调度器

Real Server: RS,后端提供服务的主机

IP:

Client:
CIP

Director
Virtual IP: VIP

Directory
IP: DIP

Real
IP: RIP

lvs的类型:

lvs-nat:类似于DNAT,但支持多目标转发;

它通过修改请求报文的目标地址为根据调度算法所挑选出的某RS的RIP来进行转发;

架构特性:

(1) RS应该使用私有地址,即RIP应该为私有地址;各RS的网关必须指向DIP;

(2) 请求和响应报文都经由Director转发;高负载场景中,Director易于成为系统瓶颈;

(3) 支持端口映射;

(4) RS可以使用任意类型的OS;

(5) RS的RIP必须与Director的DIP在同一网络;

lvs-dr:直接路由

Director在实现转发时不修改请求的IP首部,而是通过直接封装MAC首部完成转发;目标MAC是Director根据调度方法挑选出某RS的MAC地址;拓扑结构有别有NAT类型;

架构特性:

(1) 保证前端路由器将目标地址为VIP的请求报文通过ARP地址解析后送往Director

解决方案:

静态绑定:在前端路由直接将VIP对应的目标MAC静态配置为Director的MAC地址;

arptables:在各RS上,通过arptables规则拒绝其响应对VIP的ARP广播请求;

内核参数:在RS上修改内核参数,并结合地址的配置方式实现拒绝响应对VIP的ARP广播请求;

(2) RS的RIP可以使用私有地址;但也可以使用公网地址,此时可通过互联网上的主机直接对此RS发起管理操作;

(3) 请求报文必须经由Director调度,但响应报文必须不能经由Director;

(4) 各RIP必须与DIP在同一个物理网络中;

(5) 不支持端口映射;

(6) RS可以使用大多数的OS;

(7) RS的网关一定不能指向Director;

lvs-tun: 不修改请求报文IP首部,而是通过IP隧道机制在原有的IP报文之外再封装IP首部,经由互联网把请求报文交给选定的RS;

CIP;VIP
DIP;RIP

架构特性:

(1) RIP, DIP, VIP都是公网地址;

(2) RS的网关不能,也不可能指向DIP;

(3) 请求报文由Director分发,但响应报文直接由RS响应给Client;

(4) 不支持端口映射;

(5) RS的OS必须得支持IP隧道;

lvs-fullnat:通过请求报文的源地址为DIP,目标为RIP来实现转发;对于响应报文而言,修改源地址为VIP,目标地址为CIP来实现转发;

架构特性:

(1) RIP,DIP可以使用私有地址;

(2) RIP和DIP可以不在同一个网络中,且RIP的网关未必需要指向DIP;

(3) 支持端口映射;

(4) RS的OS可以使用任意类型;

(5) 请求报文经由Director,响应报文经由Director;

lvs scheduler[ 调度方法 ]:

静态方法:仅根据算法本身实现调度;

RR: round-robin, 轮询;轮叫、轮调、轮流;

轮叫调度就是以轮叫的方式依次将请求调度不同的服务器,即每次调度执行i = (i + 1) mod
n,并选出第i台服务器。算法的优点是其简洁性,它无需记录当前所有连接的状态,所以它是一种无状态调度。轮叫调度算法假设所有服务器处理性能均相同,不管服务器的当前连接数和响应速度。该算法相对简单,不适用于服务器组中处理性能不一的情况,而且当请求服务时间变化比较大时,轮叫调度算法容易导致服务器间的负载不平衡。

WRR:weighted
round-robin, 加权轮询;

该算法可以解决服务器间性能不一的情况,它用相应的权值表示服务器的处理性能,服务器的缺省权值为1。假设服务器A的权值为1,B的权值为2,则表示服务器B的处理性能是A的两倍。加权轮叫调度算法是按权值的高低和轮叫方式分配请求到各服务器。权值高的服务器先收到的连接,权值高的服务器比权值低的服务器处理更多的连接,相同权值的服务器处理相同数目的连接数。

SH:Source ip
Hashing,源地址哈希;把来自同一个地址请求,统统定向至此前选定的RS;

源地址散列调度算法正好与目标地址散列调度算法相反,它根据请求的源IP地址,作为散列键(Hash
Key)从静态分配的散列表找出对应的服务器,若该服务器是可用的且未超载,将请求发送到该服务器,否则返回空。它采用的散列函数与目标地址散列调度算法的相同。

DH:Destination ip
Hashing, 目标地址哈希;把访问同一个目标地址的请求,统统定向至此前选定的某RS;

目标地址散列调度算法先根据请求的目标IP地址,作为散列键(Hash
Key)从静态分配的散列表找出对应的服务器,若该服务器是可用的且未超载,将请求发送到该服务器,否则返回空,主要应用于缓存服务器。

动态方法:根据算法及后端RS当前的负载状况实现调度;

LC:
least connection

最少链接,简称LC。该调度是把新的连接请求分配到当前连接数最小的服务器。最小连接调度是一种动态调度算法,它通过服务器当前所活跃的连接数来估计服务器的负载情况。调度器需要记录各个服务器已建立连接的数目,当一个请求被调度到某台服务器,其连接数加1;当连接中止或超时,其连接数减1。

Overhead=Active*256+Inactive

WLC:
weighted least connection

加权最少链接,简称WLC。加权最小连接调度是最小连接调度的超集,各个服务器用相应的权值表示其处理性能。服务器的缺省权值为1,系统管理员可以动态地设置服务器的权值。加权最小连接调度在调度新连接时尽可能使服务器的已建立连接数和其权值成比例。计算当前realserver
的负载情况计算方法:

Overhead=(Active*256+Inactive)/weight

SED:Shorted
Expection Delay

最短的期望的延迟,简称SED。分配一个接踵而来的请求以最短的期望的延迟方式到服务器。

计算当前realserver 的负载情况计算方法:

Overhead=(Active+1)*256/weight

NQ:Never Queue

最小队列调度,简称NQ。分配一个接踵而来的请求到一台空闲的服务器,此服务器不一定是最快的那台,如果所有服务器都是繁忙的,它采取最短的期望延迟分配请求。

LBLC:Local-Based
Least Connection,动态方式的DH算法;

基于局部性的最少链接,简称LBLC。"基于局部性的最少链接"
调度算法是针对目标IP 地址的负载均衡,目前主要用于Cache 集群系统。该算法根据请求的目标IP 地址找出该目标IP
地址最近使用的服务器,若该服务器是可用的

且没有超载,将请求发送到该服务器;若服务器不存在,或者该服务器超载且有服务器处于一半的工作负载,则用"最少链接"的原则选出一个可用的服务器,将请求发送到该服务器。

LBLCR:Replicated
LBLC

带复制的基于局部性最少链接,简称LBLCR。"带复制的基于局部性最少链接"调度算法也是针对目标IP
地址的负载均衡,目前主要用于Cache 集群系统。它与LBLC 算法的不同之处是它要维护从一个目标IP 地址到一组服务器的映射,而LBLC
算法维护从一个目标IP 地址到一台服务器的映射。该算法根据请求的目标IP 地址找出该目标IP
地址对应的服务器组,按"最小连接"原则从服务器组中选出一台服务器,若服务器没有超载,将请求发送到该服务器,若服务器超载;则按"最小连接"原则从这个集群中选出一台服务器,将该服务器加入到服务器组中,将请求发送到该服务器。同时,当该服务器组有一段时间没有被修改,将最忙的服务器从服务器组中删除,降低复制的程度。

Session 保持

Session
Sticky

Session
Replication Cluster

Session
Server

ipvsadm命令的用法:

需要先安装:yum install ipvsadm

管理集群服务:创建、修改、删除

管理集群服务的RS:添加、修改、移除

查看:

统计数据

速率

管理集群服务:

创建或修改:

ipvsadm
-A|E -t|u|f service-address [-s scheduler]

-A:添加

-E:修改

-t: 承载的应用层协议为基于TCP协议提供服务的协议;其service-address的格式为“VIP:PORT”,如“172.16.100.6:80”;

例:把172.16.37.10的80端口设置为集群

# ipvsadm -A -t 172.16.37.10:80 -s wlc

-u: 承载的应用层协议为基于UDP协议提供服务的协议;其service-address的格式为“VIP:PORT”,如“172.16.100.6:53”;

-f:承载的应用层协议为基于TCP或UDP协议提供服务的协议,但此类报文会经由iptables/netfilter打标记,即为防火墙标记;其service-address的格式为“FWM”,例如“10”;

-s scheduler: 指明调度方法;默认为wlc;

删除:

ipvsadm
-D -t|u|f service-address

例:删除172.16.37.10的80端口的集群服务

ipvsadm -D -t 172.16.37.10:80

管理集群服务上的RS:

添加或修改:

ipvsadm
-a|e -t|u|f service-address -r server-address [-g|i|m] [-w weight]

-r server-address: 指明RS,server-address格式一般为“IP[:PORT]”;注意,只支持端口映射的lvs类型中才应该显式定义此处端口

例如:-r 192.168.10.7:80

[-g|i|m]: 指明lvs类型,默认为dr类型

-g: gateway, 意为dr类型;

-i: ipip, 意为tun类型;

-m: masquerade, 意为nat类型;

[-w weight]:当前RS的权重;

注意:仅对于支持加权调度的scheduler,权重才有意义;

例:  添加172.16.37.10:80的一个RS为192.168.10.7,为net模式,权重为2

#
ipvsadm -a -t 172.16.37.10:80 -r 192.168.10.7 -m -w 2

删除:

ipvsadm
-d -t|u|f service-address -r server-address

例:删除172.16.37.10:80的RS 192.168.10.8

# ipvsadm -d -t 172.16.37.10:80 -r 192.168.10.8

清空所有集群服务的定义:

ipvsadm
-C

保存及恢复集群服务及RS的定义:

保存ipvsadm规则

ipvsadm
-S > /etc/sysconfig/ipvsadm

ipvsadm-save
> /etc/sysconfig/ipvsadm

service
ipvsadm save

恢复ipvsadm规则

ipvsadm
-R < /etc/sysconfig/ipvsadm

ipvsadm-restore
< /etc/sysconfig/ipvsadm

service
ipvsadm restart

查看规则:

ipvsadm
-L|l [options]

-c: 列出当前所有connection;

--stats: 列出统计数据

--rate: 列出速率

-n, --numeric: 数字格式显示IP及端口;

--exact: 精确值;

例:ipvsadm -L -n

Conns 表示当前连接数

InPkts表示入站请求报文有多少个

OutPkts表示出站响应报文有多少个

InBytes表示入站请求报文大小

OutBytes表示出站请求报文大小

清空计数器:

ipvsadm
-Z [-t|u|f service-address]

案例:lvs-nat类型的web服务器集群

在调度器上建立ipvsadm规则:

把172.16.37.10的80端口设置为集群,以加权轮回模式

# ipvsadm -A -t 172.16.37.10:80 -s wrr

把添加172.16.37.10:80的一个RS为192.168.10.7,为net模式,权重为1

# ipvsadm -a -t 172.16.37.10:80 -r 192.168.10.7 -m -w 1

把添加172.16.37.10:80的一个RS为192.168.10.8,为net模式,权重为2

# ipvsadm -a -t 172.16.37.10:80 -r 192.168.10.8 -m -w 2

打开路由间转发

1) echo "1" >
/proc/sys/net/ipv4/ip_forward

2)编辑配置文件/etc/systl.conf

在RS1上设置

设置ip 192.168.10.7 默认路由指向 192.168.10.1

启动httpd

在RS2上设置

设置ip 192.168.10.8 默认路由指向 192.168.10.1

启动httpd

测试:ab -n 1000 -c 100 http://172.16.37.10/index.html

通过ipvsadm -Ln --stats查看状态会发现比例是1:2

时间: 2024-12-29 23:58:05

LVS 负载均衡调度器的相关文章

LVS负载均衡群集之构建NAT模式,可跟做!!!

有关于LVS负载均衡群集的相关概念可以参考博文:LVS负载均衡群集详解 一.案例概述 LVS负载均衡模式-NAT模式:NAT用法本来是因为网络IP地址不足而把内部保留IP地址通过映射转换成公网地址的一种上网方式(源地址NAT).如果把NAT的过程稍微变化,就可以 成为负载均衡的一种方式.原理其实就是把从客户端发来的IP包的IP头目的地址在DIR上换成其中一台Web节点服务器的IP地址并发至此Web节点服务器,而Web节点服务器则在处理完成后把数据经过DIR主机发回给客户端,DIR在这个时候再把数

LVS负载均衡(LVS简介、三种工作模式、、调度原理以及十种调度算法)

LVS简介 LVS(Linux Virtual Server)即Linux虚拟服务器,是由章文嵩博士主导的开源负载均衡项目,目前LVS已经被集成到Linux内核模块中.该项目在Linux内核中实现了基于IP的数据请求负载均衡调度方案,其体系结构如图1所示,终端互联网用户从外部访问公司的外部负载均衡服务器,终端用户的Web请求会发送给LVS调度器,调度器根据自己预设的算法决定将该请求发送给后端的某台Web服务器,比如,轮询算法可以将外部的请求平均分发给后端的所有服务器,终端用户访问LVS调度器虽然

lvs负载均衡连接

http://blog.csdn.net/zwz1984/article/details/45194377 http://blog.csdn.net/zwz1984/article/details/45194447 http://www.178linux.com/58381?utm_source=tuicool&utm_medium=referral http://sofar.blog.51cto.com/353572/1579894/ http://hot66hot.iteye.com/blo

lvs负载均衡群集搭建(DR)

lvs负载均衡群集搭建(DR) 1:之前有讲过使用NAT技术的lvs的群集搭建接下来使用DR的直接路由模式来搭建负载均衡群集 2:在DR模式中.lvs负载调度器作为群集的访问入口,但不作为网关使用,服务器池中的所有节点来自internet.发送给客户端的web相应数据包不需要经过负载调度器:这种方式入站.出站访问数据分别被处理,因此lvs负载调度器和所有节点服务器都需要配置VIP地址,以便响应整个群集的访问. VIP地址192.168.1.254 负载均衡服务器           web1服务

(转)详解LVS负载均衡之三种工作模型原理和10种调度算法

前言:最近在为我们的产品在做高可用,一边搭环境,一边了解相关知识,搜到这篇博客,质量不错,表述清晰,于是转载过来学习. 标签:详解LVS负载均衡之三种工作模型原理和10种调度算法 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://linuxnx.blog.51cto.com/6676498/1195379 LVS负载均衡原理和算法详解    Internet的快速增长使多媒体网络服务器面对的访问数量快速增加,服务器需要具备提供大

LVS负载均衡集群

防伪码:出淤泥而不染,濯清涟而不妖 第五章 LVS负载均衡群集 前言:在各种互联网应用中,随着站点对硬件性能.相应速度.服务稳定性.数据可靠性等要求越来越高,单台服务器将难以承担所有的访问,除了使用价格昂贵的大型机.专用负载分流设备以外,企业还有另外一种选择来解决难题,那就是构建集群服务器--通过整合多台相对廉价的普通服务器,以同一个地址对外提供相同的服务.本章我们将学习企业中常用的群集技术--LVS. 一. 群集技术概述 1. 群集的类型 1) 负载均衡群集:主要的功能将来自客户机的访问请求分

LVS负载均衡中arp_ignore和arp_annonuce参数配置的含义

LVS(Linux  Virtual Server)Linux服务器集群系统 针对高可伸缩,高可用服务的需求,给予IP层和内容请求分发的负载均衡调度解决方法,并在Linux的内核中实现,将一组服务器构成一个实现可伸缩,高可用网络服务的虚拟服务器 负载均衡1.大量的兵法访问或数据流量分担到多态节点设备分别处理,减少用户的等待时间2.单个重负载的运算分担到多态节点设备上做并行处理,每个节点设备处理结束后,将结果汇总,返回给用户 负载调度器一组服务器通过高速的局域网或者地理分布的广域网相互相连,在他们

lvs负载均衡群集以及高可用性能

   lvs负载均衡群集   一:lvs的群集技术概述 1:群集的类型:分为三种: (1)负载均衡群集: 以提高应用系统的相应能力,尽可能处理更多的访问请求,减少延迟:为目标获得高并发:高负载:的整体性能.将客户端的访问分担给多个服务器节点,从而延缓整个系统的负载压力:如web,ftp服务 (2)高可用群集:以提高应用系统的可靠性,尽可能的减少中断时间,确保服务的连续性.例如:双机热备:故障切换多用于后台应用:如典型的mysql数据库服务 (3)高性能运算群集:以提高应用系统的cpu运算速度.扩

LVS负载均衡群集

 第五章:LVS负载均衡群集 简介:   在各种互联网应用中,随着站点对硬件性能.响应速度.服务稳定性.数据可靠性等要求越来越高,单台服务器难以承担所有的访问.除了使用价格昂贵的大型机.专用负载分流设备以外,企业还有另外一种选择来解决难题,那就是构建群集服务器--通过整合多台相对廉价的普通服务器,以同一个地址对外提供相对的服务.   今天我们一起来学习在企业中常用的一种群集技术--LVS(Linux Virtual Server,Linux虚拟服务器). 一.群集技术概述 1.群集的类型 1)负