赞
踩
nginx的负载均衡配置,包括http、tcp和udp负载均衡,以及Round robin
、Least connections
、Least time
(Nginx Plus专属)、Generic hash
、Random
、IP hash
(HTTP模块专属)的原理分析。
我们先来看一小段配置文件
upstream backend {
server 10.0.0.1:80 weight=1;
server nginx.example.com:80 weight=2;
}
server {
location / {
proxy_pass http://backend;
}
}
这是一个简单的使用upstream模块对http服务进行指定权重的负载均衡的配置文件,一般存放在nginx目录下的conf.d
文件夹中。
server可以使用Unix socket、IP、DNS、FQDN等来进行服务器的指定,这里的Unix socket指的是POSIX操作系统中的组件,即用于进程间通信的那个Unix socket。也就是说如果做负载均衡的时候本机也作为server之一,使用scoket确实是可以有效提高速度的(对比DNS和IP等),因为都在同一个系统上,走进程间的通信比走网络通信要少了很多验证步骤和协议,通信的速度会更快。但是在实际业务中比较少使用这样的方式,一般都会直接使用IP方便定位主机和运维分析等。IP相比DNS和FQDN要少了一步域名解析的过程,理论上速度会快一些,但是DNS其实也可以做负载均衡,同时DNS和FQDN给了网络路由更多的控制权,实际怎么使用还要看具体的业务需求。
upstream
中server
指令语法如下:
server address [parameters]
关键字server
必选
address
也必选,可以是主机名、域名、ip或unix socket,也可以指定端口号
parameters
是可选参数,可以是如下参数:
down
:表示当前server已停用backup
:表示当前server是备用服务器,只有其它非backup后端服务器都挂掉了或者很忙才会分配到请求weight
:表示当前server负载权重,权重越大被请求几率越大,默认是1max_fails
和fail_timeout
一般会关联使用,如果某台server在fail_timeout
时间内出现了max_fails
次连接失败,那么Nginx会认为其已经挂掉了,从而在fail_timeout
时间内不再去请求它,fail_time
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。