当我们做项目时,如果只有单节点应用很容易会有各种意外导致应用无法访问,或者由于访问量太大,单节点处理不过来。那为了保证应用的健壮性,我们往往会搭建集群,这样会有多台服务器多个应用。
但是这个对用户是隐藏的,用户并不知道集群有多少台服务器,我们最终暴露给用户的只有一个应用地址,用户通过应用地址不管访问到哪台服务器上,最终展示给用户效果是一样的,就算有一台服务器宕机了,客户还是可以通过应用地址访问到另一台上面。这就是nginx的另一个作用-负载均衡。
一、负载均衡的作用1、转发功能
按照一定的算法(权重、轮询),将客户端请求转发到不同应用服务器上,减轻单个服务器压力,提高系统并发量。
2、故障移除
通过心跳检测的方式,判断应用服务器当前是否可以正常工作,如果服务器期宕掉,自动将请求发送到其他应用服务器。
3、恢复添加
如检测到发生故障的应用服务器恢复工作,自动将其添加到处理用户请求队伍中。
二、Nginx实现负载均衡策略1、源地址哈希法:根据获取客户端的IP地址,通过哈希函数计算得到一个数值,用该数值对服务器列表的大小进行取模运算,得到的结果便是客服端要访问服务器的序号。采用源地址哈希法进行负载均衡,同一IP地址的客户端,当后端服务器列表不变时,它每次都会映射到同一台后端服务器进行访问,这样可以解决session共享问题。
upstream hashserver {
ip_hash;
server localhost:8001;
server localhost:8002;
}
2、轮询法(默认):将请求按顺序轮流地分配到后端服务器上,它均衡地对待后端的每一台服务器,而不关心服务器实际的连接数和当前的系统负载。
upstream lxserver {
server localhost:8001;
server localhost:8002;
}
3、weight:weight代表权重,默认为1,权重越高,被分配的客户端越多。
upstream weightserver {
server localhost:8001 weight=1;
server localhost:8002 weight=2;
}
4、fair:由于后端服务器的配置不尽相同,对于请求的处理有快有慢,fair是按后端服务器的响应时间来分配请求,响应时间短的优先分配。
upstream fairserver {
server localhost:8001;
server localhost:8002;
fair;
}
三、配置说明
upstream test{
server 127.0.0.1:8001 weight=1;
server 127.0.0.2:8002 down;
server 127.0.0.3:8003 backup;
server 127.0.0.4:8004 weight=2;
}
//down 表示单前的server临时不參与负载.
//weight 默觉得1.weight越大,负载的权重就越大
//backup:其他全部的非backup机器down或者忙的时候,请求backup机器。所以这台机器压力会最轻
完整配置worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
upstream lxserver {
server localhost:8001;
server localhost:8002;
}
server {
listen 80;
server_name localhost;
location / {
proxy_pass http://lxserver;
}
}
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)