美文网首页
01 nginx总结

01 nginx总结

作者: 格林哈 | 来源:发表于2020-09-05 19:39 被阅读0次

1 负载均衡 几个方面

1.1 上游服务器配置

  • 配置 http 下面的upstream

    • server
      • IP地址和端口 配置上游服务器的IP地址和端口
      • weight 权重 , 默认为1。
  • 配置 proxy_pass 处理用户请求

    #设置fastdfs group1的服务器
    upstream fdfs_group1 {
        server 192.168.1.22:8888 weight=1 max_fails=2 fail_timeout=30s;
        server 192.168.1.111:8888 weight=1 max_fails=2 fail_timeout=30s;
    }
    
    # proxy_pass 
    server {
    
        location /fastdfs/group1/M00 {
            proxy_pass http://fdfs_group1;
        }
        
    }
    

1.2 负载均衡算法

  • round-robin 轮询,默认负载均衡算法,通过weight 配置权重
    upstream fdfs_group1 {
        server 192.168.1.22:8888 weight=1;
        server 192.168.1.111:8888 weight=1;
        server 192.168.1.111:8889 weight=3;
        server 192.168.1.111:8890 weight=1;
    }
  • ip_hash 根据客户IP进行负载均衡,即相同的IP将负载均衡到同一个upstream server
    upstream fdfs_group1 {
        ip_hash;
        server 192.168.1.22:8888 ;
        server 192.168.1.111:8888 ;
        server 192.168.1.111:8889 ;
        server 192.168.1.111:8890 ;
    }
  • hash key 对某一个key进行哈希或者使用一致性哈希算法进行负载均衡
    • 一致性哈希算法
      • 0 - 2^32 -1, 形成圆环,请求根据 关键字hash后对2^32取模,按顺时针方向,寻找可用节点。
    upstream fdfs_group1 {
        # hash 根据请求url
        hash $uri;
        # 一致性哈希算法
        # hash $consistent_key consistent ;
        server 192.168.1.22:8888 ;
        server 192.168.1.111:8888 ;
        server 192.168.1.111:8889 ;
        server 192.168.1.111:8890 ;
    }
  • least_conn 最少活跃连接的上游服务器。如果配置的服务器较少,则将转而使用基于权重的轮询算法
    upstream fdfs_group1 {
        least_conn;
        server 192.168.1.22:8888 ;
        server 192.168.1.111:8888 ;
        server 192.168.1.111:8889 ;
        server 192.168.1.111:8890 ;
    }
  • fair 按响应时长 需要安装 upstream_fair模块
    upstream fdfs_group1 {
        fair;
        server 192.168.1.22:8888 ;
        server 192.168.1.111:8888 ;
        server 192.168.1.111:8889 ;
        server 192.168.1.111:8890 ;
    }

1.3 失败重试机制

  • server 192.168.1.22:8888 weight=1 max_fails=2 fail_timeout=30s;
  • max_fails
  • fail_timeout
    • 当fail_timeout时间内失败了max_fails次请求,则认为该上游服务器不可用
    • fail_timeout时间后会再次将该服务器加入到存活上游服务器列表进行重试

1.4 服务器心跳检查

  • interval: 检测间隔时间,如下面配置了每隔3s检测一次。
  • fall: 检测失败多少次后,上游服务器 标识为不存活。
  • rise: 检测成功多少次后,上游服务器 标识为存活。
  • timeout: 检测请求超时时间配置。
  • check_http_send: 即检查时发的HTTP请求内容。
  • check_http_expect_alive: 当上游服务器返回匹配的响应状态码时,则认为上游服务器存活。
    upstream fdfs_group1 {
        server 192.168.1.22:8888 weight=1 max_fails=2 fail_timeout=30s;
        server 192.168.1.111:8888 weight=1 max_fails=2 fail_timeout=30s;
        check interval=3000 fall=3 rise=1 timeout=2000 type=tcp;
        check_http_send "HEAD /fastdfs/status HTTP/1.0\r\n\r\n";
        check_http_expect_alive http_2xx http_3xx;
        
        
    }
  • 参考
    • [亿级流量网站架构核心技术]

相关文章

网友评论

      本文标题:01 nginx总结

      本文链接:https://www.haomeiwen.com/subject/dybfektx.html