• 主页

  • 投资

  • IT

    🔥
  • 设计

  • 销售

关闭

返回栏目

关闭

返回服务器栏目

121 - Nginx高级 - 负载均衡 - location -> upstream

作者:

贺及楼

成为作者

更新日期:2024-05-19 17:24:20

一、使用场景

有两台服务器再搞
Nginx安装在其中一台
1个服务器搞一个uwsgi就好

一、使用场景 - nginx.conf - 1 - http - 处理SSL

http{} -> server{} -> location{} -> proxy_pass -> upstream 的名字

一、使用场景 - nginx.conf - 2 - upstream - 到tomcat等等

轮询:
轮询方式是Nginx负载默认的方式
所有请求都按照时间顺序分配到不同的服务上,如果服务Down掉,可以自动剔除
如下配置后轮训10001服务和10002服务。

  1. upstream xxxserver {
  2. server localhost:10001;
  3. server localhost:10002;
  4. }

upstream后跟server名

二、使用场景升级

有多台服务器了
其中1台服务器就要变成负载均衡服务器
阿里云有SBL负载均衡

http的upstream

  1. upstream bakend {
  2. server 127.0.0.1:8027;
  3. server 127.0.0.1:8028;
  4. server 127.0.0.1:8029;
  5. hash $request_uri;
  6. }
  7. nginxupstream目前支持4种方式的分配
  8. 1、轮询(默认)
  9. 每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。
  10. 2weight
  11. 指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况。例如:
  12. upstream bakend {
  13. server 192.168.0.14 weight=10;
  14. server 192.168.0.15 weight=10;}
  15. 2ip_hash
  16. 每个请求按访问iphash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题。例如:
  17. upstream bakend {
  18. ip_hash;
  19. server 192.168.0.14:88;
  20. server 192.168.0.15:80;}
  21. 3fair(第三方)
  22. 按后端服务器的响应时间来分配请求,响应时间短的优先分配。
  23. upstream backend {
  24. server server1;
  25. server server2;
  26. fair;}
  27. 4url_hash(第三方)
  28. 按访问urlhash结果来分配请求,使每个url定向到同一个后端服务器,后端服务器为缓存时比较有效。
  29. 例:在upstream中加入hash语句,server语句中不能写入weight等其他的参数,hash_method是使用的hash算法
  30. upstream backend {
  31. server squid1:3128;
  32. server squid2:3128;
  33. hash $request_uri;
  34. hash_method crc32;}
  35. tips:
  36. upstream bakend{#定义负载均衡设备的Ip及设备状态}{
  37. ip_hash;
  38. server 127.0.0.1:9090 down;
  39. server 127.0.0.1:8080 weight=2;
  40. server 127.0.0.1:6060;
  41. server 127.0.0.1:7070 backup;
  42. }
  43. 在需要使用负载均衡的server中增加
  44. proxy_pass http://bakend/;
  45. 每个设备的状态设置为:
  46. 1.down表示单前的server暂时不参与负载
  47. 2.weightweight越大,负载的权重就越大。
  48. 3.max_fails:允许请求失败的次数默认为1.当超过最大次数时,返回proxy_next_upstream模块定义的错误
  49. 4.fail_timeout:max_fails次失败后,暂停的时间。
  50. 5.backup 其它所有的非backup机器down或者忙的时候,请求backup机器。所以这台机器压力会最轻。
  51. nginx支持同时设置多组的负载均衡,用来给不用的server来使用。
  52. client_body_in_file_only设置为On 可以讲client post过来的数据记录到文件中用来做debug
  53. client_body_temp_path设置记录文件的目录 可以设置最多3层目录
  54. locationURL进行匹配.可以进行重定向或者进行新的代理 负载均衡