1、概念基础
Load balancing,即负载均衡,是一种计算机技术,用来在多个计算机(计算机集群)、网络连接、CPU、磁盘驱动器或其他资源中分配负载,以达到最优化资源使用、最大化吞吐率、最小化响应时间、同时避免过载的目的。 为了提升网站的服务能力,网站可以采用集群部署,就像话剧院有多个入口一样。这时候,就需要一个协调者,来均衡的分配这些用户的请求,可以让用户的可以均匀的分派到不同的服务器上。
单个服务器解决不了,我们增加服务器的数量,然后将请求分别分发到各个服务器上,将原来请求集中到单个服务器上的情况改为将请求分发到多个服务器上,降幅在分发到不同的服务器,也就是我们所说的负载均衡。
2、负载均衡实例
2.1、实现效果 在浏览器输入123.com/te/test.html,负载均衡效果,平均到8080和8081端口中。
2.2、提前准备
- 两台Tomcat服务器,一台8080,一台8081;
- 在两台tomcat服务器里面的webapps目录,分别建立te文件夹,并在其中创建test.html,用于测试.
2.3、在nginx配置文件中进行负载均衡配置
代码语言:javascript复制 upstream myserver{
server 127.0.0.1:8080;
server 127.0.0.1:8081;
}
#gzip on;
server {
listen 80;
server_name localhost;
location / {
root html;
proxy_pass http://myserver;
index index.html index.htm;
}
2.4、效果展示
两次刷新
3、nginx分配策略
3.1、轮询(默认) 每个请求按照时间顺序逐一分配到服务器中,如果后端服务器dowm掉,能自动剔除。 3.2、weight weight代表权重值,默认为1,权重值越高,默认分配客户端越多,指轮询机率。
代码语言:javascript复制 upstream myserver{
server 127.0.0.1:8080 weight=5
server 127.0.0.1:8081 weight=10
}
3.3、ip_hash
每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session问题。
代码语言:javascript复制 upstream myserver{
ip_hash
server 127.0.0.1:8080;
server 127.0.0.1:8081;
}
3.4、fair(第三方) 按照后端服务器的响应时间来分配,响应时间越多的优先分配。
代码语言:javascript复制 upstream myserver{
server 127.0.0.1:8080;
server 127.0.0.1:8081;
fair
}