nginx 负载均衡
nginx 的负载均衡服务所使用的模块是ngx_http_upstream_module
示例配置:
upstream backend {
server backend1.example.com;
server backend2.example.com:8080;
server unix:/tmp/backend3;
}
server {
location / {
proxy_pass http://backend;
}
}
upstream backend 设置一个服务器池(组),backend为池(组)名称,
server 设置后端服务器
upstream参数:
weight:权重
max_fails:尝试连接后端主机失败的次数
fail_timeout:在max_fails定义的失败次数后,距离下次检查的间隔时间
backup:备份节点,所有节点都挂掉后,才会请求备份节点
down:服务器不可用
示例配置:
upstream backend {
server backend1.example.com weight=5;
server backend2.example.com:8080 max_fails=3 fail_timeout=5s;
server unix:/tmp/backend3 down;
server backup1.example.com:8080 backup;
server backup2.example.com:8080 backup;
}
server {
location / {
proxy_pass http://backend;
}
}
nginx负载均衡方法:
nginx提供了以下三种负载均衡机制、方法:
round-robin:请求以循环、轮转的方式分发到应用服务器。
least-connected :下一个请求被分配到拥有最少活动连接数的服务器
ip-hash:使用一个哈希函数,基于客户端ip地址判断下一个请求应该被分发到哪个服务器。
#默认方法为round-robin
round-robin示例配置:
upstream backend {
server backend1.example.com;
server backend2.example.com:8080;
server unix:/tmp/backend3;
}
least-connected示例配置:
upstream backend {
least_conn;
server backend1.example.com;
server backend2.example.com:8080;
server unix:/tmp/backend3;
}
ip-hash示例配置:
upstream backend {
ip-hash;
server backend1.example.com;
server backend2.example.com:8080;
server unix:/tmp/backend3;
}