使用nginx做简单的负载均衡,首先得需要2台及以上的服务器,一台作为server,其余作为node。
使用 upstream 模块
在nginx.conf中配置如下:
http{
upstream up{
server 1.1.1.1;
server 1.1.1.2;
#.........................
}
#up : upstream 节点名称
#server : 分发的地址,可以是ip、域名,默认端口为80
}
然后在server里面配置代理地址
server {
listen 80;
server name www.up.net;
location /{
proxy_pass http://up;
}
#up : 上面配置的upstream名称
}
此时,一个简单的分发服务器就搭建好了,然后重载nginx.conf,这种调度会将请求按照时间顺序逐一分配到不同的节点。
这种调度适合节点服务器负载能力相近,差距不是很大的情况下,否则就需要采取另一种调度方法:指定节点的权重,
http{
upstream up{
server 1.1.1.1 weight = 1;
server 1.1.1.2 weight = 2;
#.........................
}
#up : upstream 节点名称
#weight :节点服务器的权重,值越大,分配的几率越大
#server : 分发的地址,可以是ip、域名,默认端口为80
}
根据用户的ip地址的hash值来调度
http{
upstream up{
ip_hash;
server 1.1.1.1;
server 1.1.1.2;
#.........................
}
#up : upstream 节点名称
#server : 分发的地址,可以是ip、域名,默认端口为80
}
具体怎么调度,根据实际情况进行选择
附,upstream常用参数
server:server、server-node的IP或域名,默认是80,
weight:server、server-node的权重,默认为1,权重越大,被分配的几率越大,例如:weight=2
max_fails:检查节点的健康状态并允许请求失败的次数,达到该次数将节点下线,默认为1,0表示禁止失败尝试,例如:max_fails=2
fail_timeout:max_fails失败次数达到限制后暂停该节点服务器时间,默认是10秒。
backup:热备配置,当server-node池中所有的服务器出现问题后会自动上线backup服务器。
down:标志服务器不可用,不参与负载均衡,这个参数通常配合IP_HASH使用。
max_conns:最大连接数,通常对server-node硬件不一致的情况进行配置。
keepalive:限制空闲长连接的最大数量。
keepalive_timeout:空闲长连接的最长保持时间。
keepalive_requests:每个长连接最多可以处理的请求数