zoukankan      html  css  js  c++  java
  • [Nginx][HttpUpstreamModule]翻译负载均衡

    英文原文地址:http://nginx.org/en/docs/http/ngx_http_upstream_module.html

    大纲:

    1. 示例
    2. 指令
    3. 嵌入变量

    ngx_http_upstream_module模块用来定义一个可以通过proxy_pass, fastcgi_pass和memcached_pass指令引用的服务器群组

    示例配置

     1 upstream backend {
     2     server backend1.example.com       weight=5;
     3     server backend2.example.com:8080;
     4     server unix:/tmp/backend3;
     5 
     6     server backup1.example.com:8080   backup;
     7     server backup2.example.com:8080   backup;
     8 }
     9 
    10 server {
    11     location / {
    12         proxy_pass http://backend;
    13     }
    14 }

    动态配置服务器组仅仅在商业版本中可以使用

    示例:

     1 upstream appservers {
     2     zone appservers 64k;
     3 
     4     server appserv1.example.com      weight=5;
     5     server appserv2.example.com:8080 fail_timeout=5s slow_start=30s;
     6     server 192.0.2.1                 max_fails=3;
     7 
     8     server reserve1.example.com:8080 backup;
     9     server reserve2.example.com:8080 backup;
    10 }
    11 
    12 server {
    13     location / {
    14         proxy_pass http://appservers;
    15         health_check;
    16     }
    17 
    18     location /upstream_conf {
    19         upstream_conf;
    20         allow 127.0.0.1;
    21         deny all;
    22     }
    23 }

    指令

     

    upstream

    语法: upstream name {...}
    default:--
    context:http

    示例:

    upstream backend {
        server backend1.example.com weight=5;
        server 127.0.0.1:8080       max_fails=3 fail_timeout=30s;
        server unix:/tmp/backend3;
    }

    默认情况下,请求会根据权重循环分发到各个服务器。在上面的例子中,每7个请求的分发方法如下:5个请求发给backend1.example.com,第二和第三个服务器分别分发一个请求。如果在通讯过程中一个服务器出现了问题,则这次的请求会被分发给下一个服务器,以此类推,知道所有的服务器都被尝试过一次。如果从所有的服务器中都无法成功请求,客户端会收到最后一个服务器的结果。

    server

    1 语法:    server address [parameters];
    2 default:     —
    3 context:    upstream

     给一个服务器指定一个地址和其它参数。地址可以指定为域名或ip(可以指定端口),或使用添加“unix:”前缀的unix套接字(unix-domain socket)。在未指定端口的情况下,默认使用80端口。一个域名解析到多个ip相当于一次设定了多个服务器。(感觉翻译的很别扭)

    下面是server中可设定的参数:

    • weight=number

        设置服务器的权重,默认值为1(值越大表示权重越高)

    • max_fails=number

        设置服务器最大的失败请求次数(中间还有很多。。。)。默认情况下失败请求次数为1,如果设置为0表示禁用请求计数。在proxy_next_upstream,fastcgi_next_upstream, and memcached_next_upstream 指令中也考虑到了失败请求次数。

    • fail_timeout=number

        设置: 

      • 请求失败超过特定次数视为服务器不可用
      • 请求超时视为服务器不可用

        默认情况下此参数的值为10秒

    • slow_start=time

        当一个服务器从不健康变为健康或从不可用到可用时设置过多长时把服务器的权重从0恢复为原设置的值。默认值为1,即是被禁用的。

        注:仅商业版可用

    • backup

        把此服务器标记为备用服务器。当主服务器不可用时会把请求分发到备用服务器。

    • down

        把一个服务器标记为永久不可用;通常和 ip_hash指令一起使用

    示例:

    1 upstream backend {
    2     server backend1.example.com     weight=5;
    3     server 127.0.0.1:8080           max_fails=3 fail_timeout=30s;
    4     server unix:/tmp/backend3;
    5 
    6     server backup1.example.com:8080 backup;
    7 }

      

    注:如果在服务器组中只有一个服务器,max_fails,fail_time_outslow_start参数将会被忽略,而且这个服务器也永远不会被标记为不可用

     

    zone

    syntax:    zone name size;
    default:     —
    context:    upstream

     

  • 相关阅读:
    NetCore实现404和500状态码自定义处理页面
    分享一款好玩的工具
    React三大属性
    谷歌浏览器安装react-developer-tools报错
    初次使用create-react-app
    聊聊webservice
    对java一点感悟
    设计模式之二策略模式(java实现)
    设计模式之一单例模式(java实现)
    java回调函数
  • 原文地址:https://www.cnblogs.com/imoing/p/nginx-upstream-module.html
Copyright © 2011-2022 走看看