负载均衡的算法详解
负载均衡的常用算法
1、轮询法(轮流分发给每个服务器)
优势:简单。劣势:不能保障这些应用服务器请求是一样的
将请求按顺序轮流地分配到后端服务器上,它均衡地对待后端的每一台服务器,而不关心服务器实际的连接数和当前的系统负载。
2、加权轮询法(能力越大,责任越大)(关键词:weight)
不同的后端服务器可能机器的配置和当前系统的负载并不相同,因此它们的抗压能力也不相同。给配置高、负载低的机器配置更高的权重,让其处理更多的请;而配置低、负载高的机器,给其分配较低的权重,降低其系统负载,加权轮询能很好地处理这一问题,并将请求顺序且按照权重分配到后端。
3、源地址哈希法(源地址散列)
根据IP来访问,开始是哪个用户IP访问哪个web server现在还访问哪个web server
源地址哈希的思想是根据获取客户端的IP地址,通过哈希函数计算得到的一个数值,用该数值对服务器列表的大小进行取模运算,得到的结果便是客服端要访问服务器的序号。采用源地址哈希法进行负载均衡,同一IP地址的客户端,当后端服务器列表不变时,它每次都会映射到同一台后端服务器进行访问。(得同一台电脑访问)
当做7天免登陆时:SESSION已经随机存储到了一台服务器,当再次访问时该怎么确认访问哪个服务器??
其延伸的拓展知识:session共享:
软件:
rsync(可以实现把其他服务器文件复制过来)
存库里(SESSION存到memcache里或redis里)
硬件:
NFS文件共享:
NFS(Network File System)即网络文件系统,是FreeBSD支持的文件系统中的一种,它允许网络中的计算机之间通过TCP/IP网络共享资源。在NFS的应用中,本地NFS的客户端应用可以透明地读写位于远端NFS服务器上的文件,就像访问本地文件一样。
单点登录(Single Sign On),简称为 SSO,是目前比较流行的企业业务整合的解决方案之一。SSO的定义是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。
4、随机法(随机分发给每个服务器)
通过系统的随机算法,根据后端服务器的列表大小值来随机选取其中的一台服务器进行访问。由概率统计理论可以得知,随着客户端调用服务端的次数增多,
其实际效果越来越接近于平均分配调用量到后端的每一台服务器,也就是轮询的结果。
5、加权随机法(根据权重随机分发给每个服务器)
与加权轮询法一样,加权随机法也根据后端机器的配置,系统的负载分配不同的权重。不同的是,它是按照权重随机请求后端服务器,而非顺序。
6、最小连接数法(谁最闲分发给谁)
最小连接数算法比较灵活和智能,由于后端服务器的配置不尽相同,对于请求的处理有快有慢,它是根据后端服务器当前的连接情况,动态地选取其中当前
积压连接数最少的一台服务器来处理当前的请求,尽可能地提高后端服务的利用效率,将负责合理地分流到每一台服务器。
7.fair (第三方)(根据响应时间来分配,响应时间越短优先分配)
按后端服务器的响应时间来分配请求,响应时间短的优先分配。
配置文件:
upstream test {
server 192.168.109.5:81;
servse 192.168.109.3:80;
fair;
}