nginx之负载均衡

随笔3个月前发布
35 0 0

概念

负载均衡通常与反向代理配套使用,以替厂商服务器分担请求压力,提供更好的性能,维持业务正常运转;提示:nginx默认支持瞬时5w+并发

假设场景如下:

共有 192.168.1.5192.168.1.6192.168.1.7192.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__

nginx之负载均衡
本文作者: The childhood wind blew away the adventurer's dream 本文链接: https://www.cnblogs.com/anbina/articles/18292132 关于博主: 评论和私信会在第一时间回复。或者直接私信我。 版权声明: 本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处! 声援博主: 如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。

© 版权声明

相关文章

暂无评论

您必须登录才能参与评论!
立即登录
暂无评论...