基于域名
upstream apache_cluster{
dynamic_resolve fallback=stale fail_timeout=3s;
server 1-1.host :8080
}
upstream 负载均衡
轮询
upstream apache_cluster{
server 10.0.0.1:8080 ;
server 10.0.0.2:8080 ;
}
weight 权重
用于后端服务器优劣的场景
upstream apache_cluster{
server 10.0.0.1:8080 weight=2;
server 10.0.0.2:8080 weight=3;
server 10.0.0.2:8080 weight=5;
}
ip_hash
每个访客会固定访问一个后端服务器,可以解决 session 一致问题
upstream backend {
ip_hash;
server 10.0.0.1:8080 ;
server 10.0.0.2:8080 ;
}
fair(第三方)
按后端服务器的响应时间来分配请求,响应时间短的优先分配。
url_hash(第三方)
使每个 url 定向到同一个后端服务器,后端服务器为缓存服务器时比较有效。
状态检测
upstream apache_cluster{
server 10.0.0.1:8080 max_fails=3 fail_timeout=30;
server 10.0.0.2:8080 max_fails=3 fail_timeout=30;
}
1.max_fails 和 fail_timeout 一般会关联使用
2.max_fails 默认1, 当超过最大次数时,返回 proxy_next_upstream 模块定义的错误,
3.fail_timeout:max_fails 次失败后暂停的时间
- 设置为 0,则表示取消这项检查; 当 upstream 中只有一个 server 时,max_fails 和 fail_timeout 参数可能不会起作用
backup
backup: 其它所有的非 backup 机器 down 或者忙的时候,请求 backup 机器。所以这台机器压力会最轻。
upstream apache_cluster{
server 10.0.0.1:8080 max_fails=3 fail_timeout=30s;
server 10.0.0.2:8080 backup;
}
keepalive
keepalive tomcat 官方默认推荐最大值是 200
nginx_upstream_check_module
淘宝技术团队开发的 nginx 模快, 检测后方 realserver 的健康状态,如果后端服务器不可用,则所以的请求不转发到这台服务器。
upstream linuxyan {
server 192.168.0.21:80;
server 192.168.0.22:80;
check interval=3000 rise=2 fall=5 timeout=1000;
}
模块地址:https://github.com/yaoweibin/nginx_upstream_check_module
realserver状态的页面
location /nstatus {
check_status;
access_log off;
#allow SOME.IP.ADD.RESS;
#deny all;
}