Nginx ngx_http_upstream_module[原]
2012年01月08日
模块官方解释:
The ngx_http_upstream_module module allows to define groups of servers that can be referenced from the proxy_pass and fastcgi_pass directives.
总结:该模块主要用作做负载均衡时使用
下面是一个配置例子:
upstream [b]sv1 [/b]{
server 127.0.0.1 : 8080;
server 127.0.0.1 : 9999;
}
server {
listen 8888;
server_name localhost;
charset utf - 8;
location / {
index index.jsp index.html;
proxy_pass http: //[b]sv1;[/b]
proxy_set_header Host $host;
proxy_set_header X - Real - IP $remote_addr;
proxy_set_header X - Forwarded - For $proxy_add_x_forwarded_for;
}
}
语法介绍:
(1)[b]ip_hash[/b]:
官方解释:
Specifies that a group should use a balancing method where requestsare distributed between servers based on client IP addresses.A class C network containing the client IP address is used as a hashing key.The method ensures that requests of the same client will always bepassed to the same server except when this server is considered downin which case client requests will be passed to another server andmost probably it will also be the same server.
总结:每个request按访问ip的hash结果分配,这样每个request访问固定一个后端服务器,可以解决session同步的问题,但是存在单点问题。
配置例子:
upstream backend {
ip_hash;
server backend1.example.com;
server backend2.example.com;
server backend3.example.com [b]down[/b];
server backend4.example.com;
}
上面加粗down的意思,标示该server已经宕机,这样请求就不会pass过去。这种适用于在生产线上临时移除某台已经宕机的server。要注意如果采用ip散列的方式做负载均衡,那么权重属性(weight--下面做解释)就不起作用了。
(2)[b]server[/b] name [parameters]:
官方解释:
Sets a name and other parameters of the server.A name can be a domain name, an address, a port, or apath of the UNIX-domain socket.If a domain name resolves to several addresses, all of them are used.
总结:设置服务名称,一般为域名或者ip地址,取决于你的负载架构。
其他可选参数:
1.down :当前的server不参与负载。
2.weight :值越大,负载的权重就越大。 默认为1。
3.max_fails :允许请求失败的次数,默认为1.
4.fail_timeout:请求server超时时间,默认为10秒。
5.backup:备份机器,当主服务器宕机,该备份机开始工作。
配置实例:
upstream backend {
server backend1.example.com weight=5;
server 127.0.0.1:8080 max_fails=3 fail_timeout=30s;
server unix:/tmp/backend3;
server backup1.example.com:8080 backup;
}
注意,设置了max_fails,当失败次数超过最大次数时,返回proxy_next_upstream和fastcgi_next_upstream模块定义的错误。404状态除外。
2012年01月08日
模块官方解释:
The ngx_http_upstream_module module allows to define groups of servers that can be referenced from the proxy_pass and fastcgi_pass directives.
总结:该模块主要用作做负载均衡时使用
下面是一个配置例子:
upstream [b]sv1 [/b]{
server 127.0.0.1 : 8080;
server 127.0.0.1 : 9999;
}
server {
listen 8888;
server_name localhost;
charset utf - 8;
location / {
index index.jsp index.html;
proxy_pass http: //[b]sv1;[/b]
proxy_set_header Host $host;
proxy_set_header X - Real - IP $remote_addr;
proxy_set_header X - Forwarded - For $proxy_add_x_forwarded_for;
}
}
语法介绍:
(1)[b]ip_hash[/b]:
官方解释:
Specifies that a group should use a balancing method where requestsare distributed between servers based on client IP addresses.A class C network containing the client IP address is used as a hashing key.The method ensures that requests of the same client will always bepassed to the same server except when this server is considered downin which case client requests will be passed to another server andmost probably it will also be the same server.
总结:每个request按访问ip的hash结果分配,这样每个request访问固定一个后端服务器,可以解决session同步的问题,但是存在单点问题。
配置例子:
upstream backend {
ip_hash;
server backend1.example.com;
server backend2.example.com;
server backend3.example.com [b]down[/b];
server backend4.example.com;
}
上面加粗down的意思,标示该server已经宕机,这样请求就不会pass过去。这种适用于在生产线上临时移除某台已经宕机的server。要注意如果采用ip散列的方式做负载均衡,那么权重属性(weight--下面做解释)就不起作用了。
(2)[b]server[/b] name [parameters]:
官方解释:
Sets a name and other parameters of the server.A name can be a domain name, an address, a port, or apath of the UNIX-domain socket.If a domain name resolves to several addresses, all of them are used.
总结:设置服务名称,一般为域名或者ip地址,取决于你的负载架构。
其他可选参数:
1.down :当前的server不参与负载。
2.weight :值越大,负载的权重就越大。 默认为1。
3.max_fails :允许请求失败的次数,默认为1.
4.fail_timeout:请求server超时时间,默认为10秒。
5.backup:备份机器,当主服务器宕机,该备份机开始工作。
配置实例:
upstream backend {
server backend1.example.com weight=5;
server 127.0.0.1:8080 max_fails=3 fail_timeout=30s;
server unix:/tmp/backend3;
server backup1.example.com:8080 backup;
}
注意,设置了max_fails,当失败次数超过最大次数时,返回proxy_next_upstream和fastcgi_next_upstream模块定义的错误。404状态除外。