概念
负载均衡
通常与反向代理
配套使用,以替厂商服务器分担请求压力,提供更好的性能,维持业务正常运转;提示:nginx默认支持瞬时5w+并发
假设场景如下:
共有
192.168.1.5
、192.168.1.6
、192.168.1.7
、192.168.1.8
四台服务器;其中192.168.1.6
配置为2核4G,192.168.1.7
配置为4核16G,192.168.1.8
配置为16核32G;
其中 192.168.1.5
这台服务器是公开对外访问的(被外界熟知地址),另外3台服务器当然也是公开对外访问的(外界并不知道该地址),那么假设一瞬间有10w+请求来访问 192.168.1.5
这台服务器,如果不做任何处理的话,很明显这台服务器将会宕机并对业务造成不可挽回的损失。 所以需要使用负载均衡来对请求做处理,以实现将压力分别打在不同的服务器中。
具体实现
highlighter- PHP
#事先声明balanced这个地址,以备下面proxy_pass 代理地址实现负载均衡
#并且使请求依次按顺序打在192.168.1.6、192.168.1.7、192.168.1.8三台服务器上
upstream balanced{
server 192.168.1.6:80;
server 192.168.1.7:80;
server 192.168.1.8:80;
}
server {
server_name 192.168.1.5; #声明服务器名称为192.168.1.5
listen 80 443; #监听80端口和443端口
root /your/project/public; #root表示项目对外访问路径
location / { #表示当请求来自80端口下的/,也就是80端口根目录时,进行反向代理
proxy_pass http://balanced; #反向代理到上面已声明过的balanced这个地址
}
}
权重设置
下面这段和上面那段没什么差别,只是多了weight
weight意为:权重,也就是说实现负载均衡时,打在服务器上的请求比例。
当server后面不写weight时,所有代理服务器的权重均为1,也就是按顺序依次打在不同服务器上;
即:第1次打在192.168.1.6,第2次打在192.168.1.7,第3次打在192.168.1.8;第4次打在192.168.1.6,第5次打在192.168.1.7,第6次打在192.168.1.8...这样依次执行。
当sever后面写了weight时,nginx就会按照weight的分配去执行,需要注意的是:不是严格按照分类比例去执行,而是大体上趋近于该比例。
例如下面我设置了请求打在192.168.1.6的服务器次数为3次(因为配置拉跨,不能承担太多),打在192.168.1.7次数为7次(配置中等,可适当打在该机器上),打在192.168.1.8次数为12次(该机器配置极高,尽可能使得请求走这里实现快速响应)。
highlighter- CSS
upstream balanced{
server 192.168.1.6:80 weight=3;
server 192.168.1.7:80 weight=7;
server 192.168.1.8:80 weight=12;
}
server {
server_name 192.168.1.5;
listen 80 443;
root /your/project/public;
location / {
proxy_pass http://balanced;
}
}
__EOF__
本文作者: The childhood wind blew away the adventurer's dream 本文链接: https://www.cnblogs.com/anbina/articles/18292132 关于博主: 评论和私信会在第一时间回复。或者直接私信我。 版权声明: 本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处! 声援博主: 如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。