标签:
Nginx可以作为负载均衡服务器,定义一组服务器,nginx的反向代理多台服务器时其实就是利用负载均衡模块实现的。负载均衡模块是ngx_http_upstream_module,通过此模块定义多台后端服务器,这些服务器通过指令proxy_pass、fastcgi_pass和memcached_pass引用。
配置例子
upstream backend {
server backend1.example.com weight=5;
server backend2.example.com:8080;
server unix: /tmp/backend3 ;
server backup1.example.com:8080 backup;
server backup2.example.com:8080 backup;
}
server {
location/ {
proxy_pass http: //backend ;
}
}
ngx_http_upstream_module模块常用的指令:
upstream name { …}
通过此命令定义一组服务器,这组服务器有一个名字是name,各个服务器可以监听不同的端口。监听在TCP和UNIX域套接字的服务器可以混用。
例子:
upstreambackend {
serverbackend1.example.com weight=5;
server127.0.0.1:8080 max_fails=3 fail_timeout=30s;
serverunix: /tmp/backend3 ;
}
默认情况下,nignx按加权轮巡的方式将请求分发到各服务器。当此负载均衡nginx和后端服务器通信时,如果出现错误,请求会被传给下一台服务器,直到所有可用的服务器都被尝试过,如果所有服务器都返回失败,客户端将会得到最后通信的那台服务器的失败相应结果。
Server address [parameters];
此命令用于指定被负载的后端服务器,每个server指定一台服务器,可以指定指定多台服务器,服务器地址可以是域名或IP地址,端口是可选的。
常用参数:
weight=number
设定服务器权限,默认是1。
max_fails=number
设定nginx与后端服务器通信的尝试失败次数。在fail_timeout参数定义的时间段内,如果失败次数达到此值,nginx就认为此服务器不可用,在下一个max_timeout时间段内,服务器不会在被尝试。失败的默认尝试次数为1,0表示停止尝试次数,认为服务器一直可用。
fail_timeout=time
设定在此时间段内,服务器失败次数达到指定的尝试次数,服务器就被认为在此时间段内不可用。
backup
标记为备用服务器,当主服务器不可以用后,请求会转给backup服务器。
down
标记服务器永久不可用。如果某一服务器宕机时,应加上down参数。
ip_hash
在upstream中使用此参数。指定多台服务器负载均衡算法,确保从同一客户端过来的请求会被传给同一台服务器。当此服务器宕机后,同一客户端请求会传给其他可用的同一服务器。
Keepalive connections;
Connections参数设置每个worker进程和后端服务器保持连接的最大数,这些保持的连接被放入缓存中。如果连接数大于此值,最久未使用的连接会被关闭。Keepalive不会限制nginx与上游服务器如memcached服务器的连接总数,新的连接总会被创建。
配置memcached作为上游服务器连接keepalive的例子:
Upstreammemcached_backend {
Server127. 0.0 . 1 : 11211 ;
Server10. 0.0 . 2 : 11211 ;
Keepalive32;
}
Server{
…
Location/memcached/ {
Set$memcached_key $uri;
Memcached_passmemcached_backend;
}
}
配置fastcgi的服务器,设置fastcig_keep_conn指令来连接keepalive工作:
upstreamfastcgi_backend {
server127.0.0.1:9000;
keepalive8;
}
server{
…
location /fastcgi/ {
fastcgi_passfastcgi_backend;
fastcgi_keep_connon;
…
}
}
|