配置语法:
upstream backend{
server backend1.example.com weight=5; weight 代表权重
server backend2.example.com:8080;
server unix:/tmp/backend3;
server backup1.example.com:8080 backup; backup:表示备份节点
server backup2.example.com:8080 backup;
}
后端服务器在负载均衡调度中的状态
down 当前的server暂时不参与负载均衡(不对外提供服务)
backup 预留的备份服务器(当其他的节点挂掉,备份服务器启动)
max_fails 允许请求失败的次数
fail_timeout 经过max_fails失败后,服务暂停的时间(默认10s)
max_conns 限制最大的接受的连接数
-------------------------------------------------------------------------------------------------------------------------
配置演示:
8001 不对外开放
8002是备份节点,当8003挂掉的时候,节点8002会开启,当8003可以访问的时候,节点8002关闭
8003 请求失败的次数是1次,时间是10s。
-------------------------------------------------------------------------------------------------------------------------
调度算法
轮询 按时间顺序逐一分配到不同的后端服务器(基于请求)
加权轮询 weight值越大,分配到的访问几率越高 (基于请求)
ip_hash 每个请求按访问IP的hash结果分配,这样来自同一个IP的固定访问一个后端服务器
least_conn 最少链接数,那个机器连接数少就分发
url_hash 按照访问的额URL的hash结果来分配,是每个URL定向到同一个后端服务器
hash关键数值 hash自定义的key
--------------------------------------------------------------------------------------------------------------------------------
基于ip_hash 来控制访问的服务器
这样如果是一个ip访问了服务端,那么就会记录这个ip,使每次是这个ip的请求都会访问之前的服务节点。根据remote_addr。
缺陷:如果是代理,无法获取真实的ip。
--------------------------------------------------------------------------------------------------------------------------------
配置语法:
Syntax : hash key [consistent];
Default: ——
Context : upstream
This directive appeared in version 1.7.2.
演示:
------------------------------------------------------------------------------------------------------------------