1.upstream模块
nginx负载均衡功能依赖ngx_http_upstream_module模块,支持的代理方式:proxy_pass、fastcgi_pass、memcached_pass等方式。
- 语法
- upstream定义:
upstream 别名{
server 节点
}
upstream www{
server 192.168.47.100:8080 weight=1;
server 192.168.47.101 weight=2;
}
server标签参数说明
参数 | 说明 |
---|---|
server IP或域名:端口 | 负载均衡后面的配置,可以是IP或域名,端口不写,默认80 |
weight=数字 | 服务器的权重,权重数字越大表示接受的请求次数比例越大 |
max_fails=数字 | nginx尝试后端主机失败的次数,当尝试连接失败次数大于设定值后会将这个请求转发给正常工作的后端服务器 |
backup | 热备配置,当前面激活的后端服务都无法正常连接时,会自动启动该节点(主服务器都全部宕机,会将请求转发过来) |
fail_timeout=5s | 在max_fails定义的失败次数后,下次检查的间隔时间,默认值10s |
down | 标志服务器永不可用,参数可配置ip_hash使用 |
- 调度算法
第一类: 静态调度算法,根据自身设定的规则进行分配,不考虑后端节点服务器的情况,例如:
rr轮询(默认调度):按客户端的请求逐一分配到配置的不同后端节点服务器
wrr权重轮询:在rr轮询的基础上加上权重,权重值越大,转发的请求越多
ip_hash:根据客户端IP的hash值进行分配,客户的IP地址相同,会被分配到同一主机
url_hash:根据访问的URL的hash值进行分配
第二类: 动态调度算法,根据后端节点的当前状态来决定是否分发请求,例如:
fair:根据后端节点服务器的响应时间来分配请求,响应时间短的优先分配
least_conn:根据后端节点的连接数来分配,连接数少就分发
2.http_proxy_module模块
-
proxy_pass指令
属于ngx_http_proxy_module模块,将请求转发到另一台服务器,通过location功能匹配指定的URI,把符合匹配的URI请求通过proxy_pass指向定义好的upstream模块 -
样例
location /url{
proxy_pass http://upstream_name
}