首页 > HA-Linux集群技术/缓存加速/高负载/高可用, LNMP应用服务器 > 通过Upstream模块使得Nginx实现后台服务器集群

通过Upstream模块使得Nginx实现后台服务器集群

2016年6月1日

通过Upstream模块使得Nginx实现后台服务器集群
http://blog.itpub.net/27043155/viewspace-733093/

在Nginx服务器中提供了一个简单的负载均衡模块,它就是HttpUpstreamModule模块,它的原理是基于客户端IP的轮询,因此,对于后多台后台服务器来说是一个很好的选择。

配置示例

upstream backend  {
server backend1.example.com weight=5;
server backend2.example.com:8080;
server unix:/tmp/backend3;
}

server {
location / {
proxy_pass  http://backend;
}
}

指    令

该模块提供了以下3条指令。

指令名称:ip_hash
功    能:如果使用了该指令,那么将会导致客户端的请求以客户端的IP地址分布在upstream中的server之间。它的关键技术在于对这个请求客户端IP地址进行哈希计算,这种方法保证了客户端请求总是能够传递到同一台后台服务器,但是如果该服务器被认定为无效,那么这个客户端的请求将会被传递到其它服务器,因此,这种机制是一个高概率将客户端请求总是连接到同一台服务器。
另外,如果使用这个指令,那么就不能使用权重(weight)方法,如果一个在upstream中指定的一台server,这个服务器需要移除(比如,需要维修),那么需要在该IP或者是机器名之后添加“down”参数。例如:
upstream backend {
ip_hash;
server   backend1.example.com;
server   backend2.example.com;
server   backend3.example.com  down;
server   backend4.example.com;
}
语    法: ip_hash
默 认 值: none
使用环境: upstream

指令名称:server
功    能:该指令用于设置服务器的name,对于name,可以使用域名字、IP地址、端口或者是unix套接字,如果一个域名被解析到多个IP地址,那么所有的IP地址都将会被使用。对于parameters,可选的parameters如下:

u       weight = NUMBER — 用于设置服务器的权重,如果没有设置,那么它将会等于1;
u       max_fails = NUMBER — 该参数用于设置在一定的时间内(这个时间由fail_timeout参数设置)客户端对同一后台服务器可以进行尝试连接的次数,如果在这个次数之后仍然没有连接成功,那么该服务器将会被看做无效。如果没有设置该参数,那么尝试的次数将会是1次,如果设置为0,那么将会关闭检测。那么什么被看做是失败,也就是判断失败的标准,是由proxy_next_upstream 或者 fastcgi_next_upstream的设置来决定,因此对于客户端访问出现的404错误将不会导致max_fails的次数增加。

u       fail_timeout = TIME — 该参数用于设置客户端尝试连接后台服务器的时间,在这个时间内,可能将会完成由max_fails设置的最多次数。 如果没有设置该参数,那么默认为10秒。fail_timeout和upstream响应时间没关系,使用proxy_connect_timeout 和 proxy_read_timeout指令可以控制响应时间。

u       down — 如果为某一个server设置了这个参数,那么标记了这台server将永久离线,通常这个参数与ip_hash一同使用。

u       backup — 该参数在0.6.7版本中提供,它是一个备用标志,即如果出现所有的非备份服务器都宕机或繁忙无法接受连接时,那么才会使用本服务器。需要注意的是,该参数无法和ip_hash指令一起使用。

例如:

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

本文的评论功能被关闭了.