B002 NGINX实战教程——NGINX如何实现负载均衡?

前文:

本篇文章介绍Nginx实现负载均衡,本文使用Nginx和两个SpringBoot简单Web应用实现。

准备

本教程对应的环境是在Nginx和Java环境中进行实战(因为本文背景是在Springboot中的), Nginx的安装是非常非常方便的,我在此不多多概述,而Java环境的配置则同样容易,亦不概述。SpringBoot映射了10001和10002的根路径,其会返回Demo1和Demo2的string进行区分。这只是测试时的用法

开始操作

下面由多种的方法

1 轮询

轮询方式是Nginx负载默认的方式,顾名思义,所有请求都按照时间顺序分配到不同的服务上,如果服务Down掉,可以自动剔除,如下配置后轮训10001服务和10002服务。

upstream slivaa-server {
#slivaa.com
       server    localhost:10001;
       server    localhost:10002;
}

 

2 权重

指定每个服务的权重比例,weight 和访问比率成正比,通常用于后端服务机器性能不统一,将性能好的分配权重高来发挥服务器最大性能,如下配置后10002服务的访问比率会是10001服务的二倍,这样的配置和上文区别不大。

upstream slivaa-server {
#slivaa.com
       server    localhost:10001 weight=1;
       server    localhost:10002 weight=2;
}

3 iphash

每个请求都根据访问ip的hash结果分配,经过这样的处理,每个访客固定访问一个后端服务,如下配置(ip_hash可以和weight配合使用)。因此,只需要在前文添加即可。

upstream slivaa-server {

       ip_hash; 
       server    localhost:10001 weight=1;
       server    localhost:10002 weight=2;
}

4 最少连接

将请求分配到连接数最少的服务上。

upstream slivaa-server {

       least_conn;
       server    localhost:10001 weight=1;
       server    localhost:10002 weight=2;
}

5 Fair

按后端服务器的响应时间来分配请求,响应时间短的优先分配

upstream slivaa-server {

      server    localhost:10001 weight=1;
       server    localhost:10002 weight=2;
       fair;  
}

Nginx实战配置

以轮训为例,如下是nginx.conf完整代码。直接使用完整代码即可。

worker_processes 1;


events {
    worker_connections  1024;
}
#slivaa.com

http {
   upstream  slivaa-server {
       server    localhost:10001;
       server    localhost:10002;
   }
#slivaa.com
   server {
       listen       10000;
       server_name  localhost;

       location / {
        proxy_pass http://slivaa-server;
        proxy_redirect default;
      }

    }
#slivaa.com
}

结尾

最后测试即可。当然,在Web项目实战中,尽量不要过多改动Nginx配置,因为容易造成网站内容的崩溃。

Nginx Logo: Ngiиx

声明:本站所有软件、课程、素材等资源全部来源于互联网,从本站下载资源,说明你已同意本条款。如若本站内容侵犯了原著者的合法权益,请携带版权证明与我们联系,我们会及时处理。
THE END
分享
二维码
打赏
< <上一篇
下一篇>>