手机版
你好,游客 登录 注册 搜索
背景:
阅读新闻

Nginx 负载均衡模块 ngx_http_upstream_module 详述

[日期:2013-10-25] 来源:Linux社区  作者:defonds [字体: ]

这个指令仅作为我们的商业订阅的一部分。
语法:sticky cookie name [expires=time] [domain=domain] [path=path];
sticky route variable ...;
默认值:—
上下文:upstream
这一指令开始出现于版本 1.5.7。

激活会话关联,可以使来自同一客户端的请求总是传递给一群服务器中的同一个。例如:

upstream backend {
    server backend1.example.com;
    server backend2.example.com;

    sticky_cookie_insert srv_id expires=1h domain=example.com path=/;
}

没有绑定到特定服务器的客户端请求会被传递到由配置的负载均衡方法选中的服务器。这个客户端的而后的请求将被传递到同一台服务器。如果指定服务器无法处理请求,一台新的服务器会被选中绑定,就像这个客户端的这次请求前没有绑定到任何服务器一样。
关于绑定服务器的信息保存在 HTTP cookie 中。第一个参数设置 cookie 名。其他参数如下:
expires
设置浏览器保持 cookie 的时间。特别值 max 将会使 cookie 在 "31 Dec 2037 23:55:55 GMT" 才过期。这个是老的浏览器所能知道最大日期值了。如果这个参数没有定义,cookie 会在浏览器会话结束时过期。
domain
定义设置的 cookie 的域名。
path
定义设置的 cookie 的路径。
如果任何一个参数被遗漏掉,相应的 cookie 属性就不会被设置上。
这个指令仅作为我们的商业订阅的一部分。
语法:upstream_conf;
默认值:—
上下文:location

开启 location 域的 HTTP upstream 配置接口。对于这一 location 的访问应该是受限的。
配置命令可以用于:

  • 查看一群中的主要和备用服务器;
  • 查看一个特别的服务器;
  • 修改一个特别的服务器;
  • 添加一个新的服务器(参考下边注释);
  • 移除一个特别的服务器。

正如在 server 指令中提到的那样,指定一个服务器作为一个域名可能导致多个服务器被添加到群。因为地址在一群不需要是独特的,单个服务器在一个群可以被唯一引用的话只有用他们的 ID。服务器的 ID 会被自动分配,并在群配置中显示。
一个配置命令包括作为请求参数传递的参数,例如:
http://127.0.0.1/upstream_conf?upstream=appservers
支持以下参数:
upstream=name
选择一群。这一参数是强制必须的。
backup=
如果没有设置,选中一群中的主要服务器。如果设置了,则选中一群中的备用服务器。
id=number
选中一群中特定的主要服务器或者备用服务器。
remove=
移调一群中一台特定的主要服务器或者备用服务器。
add=
添加一台主要服务器或者备用服务器到群。
server=address
同 server 指令中的 "address" 参数。
weight=number
同 server 指令中的 "weight" 参数。
max_fails=number
同 server 指令中的 "max_fails" 参数。
fail_timeout=time
同 server 指令中的 "fail_timeout" 参数。
slow_start=time
同 server 指令中的 "slow_start" 参数。
down=
同 server 指令中的 "down" 参数。
up=
同 server 指令中的 "down" 参数相反。
前三个参数用于选择命令适用的对象。
比如,查看群组里头的主服务器,发送:
http://127.0.0.1/upstream_conf?upstream=appservers
查看群组里头的备用服务器,发送:
http://127.0.0.1/upstream_conf?upstream=appservers&backup=
查看群组里头特定的主服务器,发送:
http://127.0.0.1/upstream_conf?upstream=appservers&id=42
查看群组里头特定的备用服务器,发送:
http://127.0.0.1/upstream_conf?upstream=appservers&backup=&id=42
要添加一台主服务器或者备用服务器到群组,在 "server=" 参数中定义其地址即可。如果没有定义其他参数,该服务器添加后,其他参数设置为默认值(参见 server 指令)。
例如,添加一台新的主服务器到群组,发送:
http://127.0.0.1/upstream_conf?add=&upstream=appservers&server=127.0.0.1:8080
添加一台新的从服务器到群组,发送:
http://127.0.0.1/upstream_conf?add=&upstream=appservers&backup=&server=127.0.0.1:8080
添加一台主服务器到群组,设置其参数非默认值,且将其标记为 "down",发送:
http://127.0.0.1/upstream_conf?add=&upstream=appservers&server=127.0.0.1:8080&weight=2&max_fails=3&fail_timeout=3s&down=
移除群组中的一台特定主服务器或者备用服务器,可以使用 id= 参数将其选择。
例如,移除群组中的一台特定主服务器,发送:
http://127.0.0.1/upstream_conf?remove=&upstream=appservers&id=42
移除群组中的一台特定从服务器,发送:
http://127.0.0.1/upstream_conf?remove=&upstream=appservers&backup=&id=42
修改群组中的一台特定的主服务器或从服务器,也使用 id= 参数将其选中。
例如,修改群组中一台特定主服务器为 "down",发送:
http://127.0.0.1/upstream_conf?upstream=appservers&id=42&down=
修改群组里头的一台备用服务器地址,发送:
http://127.0.0.1/upstream_conf?upstream=appservers&backup=&id=42&server=192.0.2.3:8123
修改群组里头的一台主服务器的其他参数,发送:
http://127.0.0.1/upstream_conf?upstream=appservers&id=42&max_fails=3&weight=4
这个指令仅作为我们的商业订阅的一部分。
嵌入式变量
ngx_http_upstream_module 模块支持以下嵌入式变量:
$upstream_addr
为 UNIX-domain socket 保存服务器地址及端口号。如果请求处理时涉及多台服务器,使用逗号将他们的地址进行分隔,比如 "192.168.1.1:80, 192.168.1.2:80, unix:/tmp/sock"。如果一个由 "X-Accel-Redirect" 或者错误页面 发出的从一个服务器群组到另一个群组的重定向发生时,不同群组之间的服务器地址使用冒号分隔,比如 "192.168.1.1:80, 192.168.1.2:80, unix:/tmp/sock : 192.168.10.1:80, 192.168.10.2:80"。
$upstream_cache_status
保存访问响应缓存的状态(版本 0.8.3)。这一状态可以是 "MISS","BYPASS","EXPIRED","STALE","UPDATING" 或者 "HIT"。
$upstream_response_length
保存从 upstream 服务器获得的响应体长度(版本 0.7.27)字节的长度。几个响应长度的话使用逗号和冒号分隔,就像 $upstream_addr 中的地址那样。
$upstream_response_time
保存从 upstream 服务器获得的响应次数,长度以毫秒的分辨率保存,单位是秒。几个响应次数的话使用逗号和冒号分隔,就像 $upstream_addr 中的地址那样。
$upstream_status
保存从 upstream 服务器获得的响应码。几个响应码的话使用逗号和冒号分隔,就像 $upstream_addr 中的地址那样。
$upstream_http_...
保存服务器响应头。比如,"Server" 响应头可以使用 $upstream_http_server 参数激活。将头信息转化为参数名字的规则和以 "$http_" 前缀开始的参数规则一样。只保存最后一个响应头。
原文链接:http://nginx.org/en/docs/http/ngx_http_upstream_module.html

linux
相关资讯       负载均衡 
本文评论   查看全部评论 (0)
表情: 表情 姓名: 字数

       

评论声明
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款