• nginx学习(4)Nginx 负载均衡


    负载均衡:是将负载分摊到不同的服务单元,既保证服务的可用性,又保证响应 足够快,给用户很好的体验。

    在 linux 下有 Nginx、LVS、Haproxy 等等服务可以提供负载均衡服 务,
    而且 Nginx 提供了几种分配方式(策略):

    Nginx高效负载均衡策略详解

    1、轮询(默认)
    按请求的时间顺序依次逐一分配,如果服务器down掉,能自动剔除。

       upstream myserver {
            server 172.31.0.99:8083;
            server 172.31.0.99:8084;
        }
    
        server {
            listen       80;        
            #server_name  localhost;
           server_name  172.31.0.99 ;
            
            #charset koi8-r;
    
            #access_log  logs/host.access.log  main;
    
            location / {
                root   html;
               proxy_pass http://myserver;
                index  index.html index.htm;
            }
    
         
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    1. 权重
      weight 越高,被分配的客户端越多,默认为 1。比如:
       upstream myserver {
            server 172.31.0.99:8083  weight=5;
            server 172.31.0.99:8084  weight=10;
        }
    
    
    172.31.0.99:8083是第一个服务器的地址和端口号,而weight=5表示该服务器的权重为5。权重可以用来确定在轮询中该服务器接收请求的频率。权重越高,该服务器接收的请求就越多。
    
    172.31.0.99:8084是第二个服务器的地址和端口号,而weight=10表示该服务器的权重为10。与第一个服务器相比,这个服务器的权重更高,因此在轮询中它将接收更多的请求。
    
    通过使用权重,你可以根据服务器的性能或负载能力来调整请求的分配比例。权重可以在多个服务器之间进行灵活的调整,以满足你的特定需求。 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    3、 ip_hash
    按请求 ip 的 hash 值分配,每个访客固定访问一个后端服务器。比如:

       upstream myserver {
         ip_hash;	
            server 172.31.0.99:8083  ;
            server 172.31.0.99:8084  ;
        }
    在upstream块中,列出了两个服务器,分别是172.31.0.99:8083172.31.0.99:8084。因此请求将平均分配给这两个服务器。
    
    通过使用ip_hash,可以实现基于客户端IP的负载均衡,使得来自同一IP地址的请求始终由同一台服务器处理。这种配置对于需要会话持久性或特定用户需要连接到同一服务器的应用场景非常有用。
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    4、fair
    按服务器的响应时间来分配客户端请求,响应时间越短,分配客户端请求越多.

    upstream myserver {
        	fair; 
            server 172.31.0.99:8083  ;
            server 172.31.0.99:8084  ;
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5
  • 相关阅读:
    【无标题】
    Git 入门使用
    Dubbo入门实例
    软件开发工具的现状与发展
    docker部署mongoDB
    Qt 输入组控件(Input Widgets)& 显示组控件(Display Widgets)详解
    Linux网络编程(TCP状态转换关系)
    cisco设备信息泄漏漏洞案例【二】
    Zabbix监控环境搭建,监控项简单、高级应用,包括自定义监控项、采集器、自动发现规则、监控项原型、宏
    metaRTC+mbedtls实现android平台上更高效的webrtc
  • 原文地址:https://blog.csdn.net/weixin_47139678/article/details/134505680