简介:
负载均衡(Load Balance)是分布式系统架构设计中必须考虑的因素之一,它通常是指,将请求/数据【均匀】分摊到多个操作单元上执行,负载均衡的关键在于【均匀】。常见互联网分布式架构如上,分为客户端层、反向代理nginx层、站点层、服务层、数据层。
负载均衡的实现方式:轮询、权重(weight)、ip_hash、fair、url_hash
1.轮询(默认):每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。
upstream test1 {
server 127.0.0.1:8081;
server 127.0.0.1:8082;
server 127.0.0.1:8083;
}
server {
listen 80;
server_name www.test1.com;
location / {
proxy_pass http://test1;
index index.html index.htm;
}
}
2.权重(weight):指定轮询几率,weight和访问比率成正比
upstream test1 {
server 127.0.0.1:8081 weight=2;
server 127.0.0.1:8082 weight=3;
server 127.0.0.1:8083 weight=5;
}
server {
listen 80;
server_name www.test1.com;
location / {
proxy_pass http://test1;
index index.html index.htm;
}
}
3.ip_hash:每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,用于解决session共享。
upstream test1 {
server 127.0.0.1:8081;
server 127.0.0.1:8082;
server 127.0.0.1:8083;
ip_hash;
}
server {
listen 80;
server_name www.test1.com;
location / {
proxy_pass http://test1;
index index.html index.htm;
}
}
4.fair:按后端服务器的响应时间来分配请求,响应时间短的优先分配。
upstream test1 {
server 127.0.0.1:8081;
server 127.0.0.1:8082;
server 127.0.0.1:8083;
fair;
}
server {
listen 80;
server_name www.test1.com;
location / {
proxy_pass http://test1;
index index.html index.htm;
}
}