1 什么是负载均衡

负载均衡,英文名称为Load Balance,是高可用网络基础架构的关键组件,通常用于将工作负载分布到多个服务器来提高网站、应用、数据库或其他服务的性能和可靠性。对于 Web 工程中的负载均衡,就是将相同的 Web 应用部署到多个不同的 Web 服务器上,形成多个 Web 应用服务器。当请求到来时,由负载均衡服务器负责将请求按照事先设定好的比例向 Web 应用服务器进行分发,从而增加系统的整体吞吐量。
负载均衡可以通过硬件负载均衡器实现,也可通过负载均衡软件实现
(1 ) 硬件负载均衡
硬件负载均衡器的性能稳定,且有生产厂商作为专业的服务团队。但其成本很高,一台硬件负载均衡器的价格一般都在十几万到几十万,甚至上百万。知名的负载均衡器有 F5、Array、深信服、梭子鱼等。
Nginx配置服务的负载均衡_数据库
(2 ) 软件负载均衡
软件负载均衡成本几乎为零,基本都是开源软件。例如:LVS、HAProxy、Nginx 等。

2 Nginx负载均衡策略

1.轮询(默认)
每个请求按时间的先后顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。
2.指定权重
指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况。权重值越大被访问的几率就越大。

upstream backserver { 
server 192.168.20.101;
server 192.168.20.102 weight=2;
}

3.IP绑定 ip_hash
每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题

upstream backserver { 
ip_hash;
server 192.168.20.101;
server 192.168.20.102;
}

3 实现负载均衡配置

1.需求

该机群包含一台 Nginx 服务器,两个 Web服务器(一台虚拟机node2上通过两个端口启动两个tomcat)。

修改nginx.conf文件

#自定义日志格式
log_format myfmt '$remote_addr - $remote_user [$time_local] "$request" ';
upstream rss{
server 192.168.20.102:8080;
server 192.168.20.102:9090 weight=2;
}
server {
listen 80;
server_name www.bjsxt.cn;
#为server指定使用myfmt日志格式以及将日志保存logs/myfmt.log文件中
access_log logs/myfmt.log myfmt;
location / {
proxy_pass http://rss/;

}
}

重启nginx,请求测试:http://www.bjsxt.cn,发现已经实现了负载均衡。规律为一次8080两次9090。

中小企业一般使用该方式,优点是配置简单,缺点是如果添加新的后台服务,需要修改Nginx配置文件并且还需重启Nginx。

如果后台服务变动比较频繁,而且不希望重启Nginx,可以使用Http动态负载均衡