nginx负载均衡
负载均衡,用来在多个计算机(计算机集群)、网络连接、CPU、磁盘驱动器或其他资源中分配负载,以达到最优化资源使用、最大化吞吐率、最小化响应时间、同时避免过载的目的。宏观上的意思是将负载(工作任务,访问请求)进行平衡、分摊到多个操作单元(服务器,组件)上进行执行以解决高性能,单点故障(高可用),扩展性(水平伸缩)等高流量下常见的问题。
http {
include mime.types;
default_type application/octet-stream;
#日志记录
access_log logs/access.log main;
sendfile on;
# 保持连接时间
keepalive_timeout 65;
server {
listen 8000;
return 200 '8000, server\n';
}
server {
listen 8001;
return 200 '8001, server\n';
}
server {
listen 8002;
return 200 '8002, server\n';
}
# 负载均衡
upstream backends {
# ip_hash
# hash user_$arg_username;
server 127.0.0.1:8000;
server 127.0.0.1:8001;
server 127.0.0.1:8002;
}
server {
listen 80;
location / {
proxy_pass http://backends;
proxy_http_version 1.1;
proxy_set_header Connection "";
}
}
}
上述配置中,我们用8000,8001和8002三个端口模拟了3个上游服务器,默认使用轮询负载均衡算法,而且三个的权重均为1。进行如下的 http 请求操作,可以看到 Nginx 转发 http 请求会均匀地分配到3个服务器上。