增加服务器数量,将请求分配到多个服务器
http {
include mime.types;
default_type application/octet-stream;
#log_format main '$remote_addr - $remote_user [$time_local] "$request" '
# '$status $body_bytes_sent "$http_referer" '
# '"$http_user_agent" "$http_x_forwarded_for"';
#access_log logs/access.log main;
sendfile on;
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65;
#gzip on;
# -------------------------------------------------------------------------------------
# 配置负载均衡的SERVER IP地址
upstream myserve {
server 192.168.1.104:8001 weight=5;
server 192.168.1.104:8000 weight=10;
}
server {
listen 80;
server_name www.abc.com;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
proxy_pass http://myserve;
root html;
index index.html index.htm;
}
}
# -------------------------------------------------------------------------------------
}
- 首先启动两个或多个服务器地址+端口,进行配置
- 配置成功之后,访问的时候,默认会进行轮询,刷新第一次访问服务器A,刷新第二次访问服务器B,依次刷新切换。
随着互联网信息的爆炸性增长,负载均衡(load balance)已经不再是一个很陌生的话题,顾名思义,负载均衡即是将负载分摊到不同的服务单元,既保证服务的可用性,又保证响应足够快,给用户很好的体验。快速增长的访问量和数据流量催生了各式各样的负载均衡产品,很多专业的负载均衡硬件提供了很好的功能,但却价格不菲,这使得负载均衡软件大受欢迎,nginx 就是其中的一个,在 linux 下有 Nginx、LVS、Haproxy 等等服务可以提供负载均衡服务。
Nginx 提供了几种分配方式(策略):
- 轮询(默认)
每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器 down 掉,能自动剔除。 - weight(权重)
weight 代表权,重默认为 1,权重越高被分配的客户端越多指定轮询几率,weight 和访问比率成正比,用于后端服务器性能不均的情况。 例如:
upstream myserve {
server 192.168.1.104:8001 weight=5;
server 192.168.1.104:8000 weight=10;
}
- ip_hash
每个请求按访问 ip 的 hash 结果分配,这样每个访客固定访问一个后端服务器,可以解决 session 的问题。
upstream myserve {
ip_hash;
server 192.168.1.104:8001;
server 192.168.1.104:8000;
}
- fair (第三方)
按后端服务器的响应时间来分配请求,响应时间短的优先分配。