Nginx实例

//************说明*************//

此文章基于Nginx对多台tomcat服务器进行负载均衡

//************准备工作*************//

nginx安装包下载:http://nginx.org/en/download.html

nginx在线手册:http://shouce.jb51.net/nginx/index.html

tomcat1:8081端口(本地安装启动)

tomcat2:8082端口(本地安装启动)

tomcat3:8080端口(局域网内安装启动)

//************Nginx安装启动*************//

本文采用的是较为稳定的nginx-1.11.1版本

①:直接解压到相关路径(本文解压在E盘下)

②:启动主要有两种方式,如下:

  1、直接双击nginx.exe启动(注:正常是一闪而过)

  wKiom1dsljyCQPQIAABSVjJBHbE555.png-wh_50

  2、用命令提示符切换到nginx目录下,输入start nginx.exe或者start nginx启动(一闪而过)

  wKiom1dsl33RAowYAAAT2vScftw843.png-wh_50

  以上2种方法用于启动nginx服务,可通过进程管理查看是否有nginx进程(如:nginx.exe *32)或者通过浏览器输入localhost查看页面是否如下:

wKiom1dsmQmSWg--AAAvDG9Qrg4084.png-wh_50

浏览器出现如上页面,则表示nginx启动成功

//************Nginx常用命令*************//

start nginx :启动nginx服务

nginx -s stop :停用或结束nginx服务

nginx -s reload :重启nginx服务,一般用于配置文件修改后

//************tomcat服务准备*************//

wKioL1dsm-WBx5pCAADeVqGx448335.png-wh_50

3台tomcat服务器启动完成,(本机2台,局域网内1台)

//************Nginx配置文件修改*************//

nginx.conf(路径:E:\nginx-1.11.1\conf\nginx.conf)

############负载均衡配置###########  
    upstream localhost {
    	server 192.168.1.103:8080;    
    	server 192.168.1.103:8081;
    	server 192.168.1.154:8080; 
    }
    location / {
        root   html;
        index  index.html index.htm;
        proxy_pass  http://localhost;  #localhost与负载均衡upstream配置名称localhost 一致
    }

在对整个文件不做任何修改的前期下,配置upstream、proxy_pass这两项即可完成负载均衡的配置。

然后命令提示符执行nginx -s reload,在浏览器输入proxy_pass配置的地址 http://localhost/ 查看页面,不断刷新页面查看服务器是否切换,效果如下:

wKioL1dspijSG4X3AAAvRPKzQQQ382.png-wh_50

端口为:8080的服务器

wKiom1dspinQaU39AAJSKT37mlI509.png-wh_50

本机端口为:8081的服务器

wKioL1dspinTisXZAABpULlEDso497.png-wh_50

局域网内端口为:8080的服务器

//************nginx负载均衡的4种配置实例*************//

1、轮询

轮询即Round Robin,根据Nginx配置文件中的顺序,依次把客户端的Web请求分发到不同的后端服务器。
配置的例子如下:

http{ 
 upstream localhost{ 
   server 192.168.1.103:8080;    
   server 192.168.1.103:8081;
   server 192.168.1.154:8080; 
 } 
 .... 
 server{ 
   listen 80; 
   ... 
   location / { 
    proxy_pass http://localhost; 
   }  
 }

上面只有1个DNS入口被插入到upstream节,即sampleapp,同样也在后面的proxy_pass节重新提到。

2、最少连接

Web请求会被转发到连接数最少的服务器上。
配置的例子如下:

http{ 
  upstream localhost{ 
    least_conn; 
    server 192.168.1.103:8080;    
    server 192.168.1.103:8081;
    server 192.168.1.154:8080;  
  } 
  .... 
  server{ 
    listen 80; 
    ... 
    location / { 
     proxy_pass http://localhost; 
    }  
  }

上面的例子只是在upstream节添加了least_conn配置。其它的配置同轮询配置。

3、IP地址哈希

前述的两种负载均衡方案中,同一客户端连续的Web请求可能会被分发到不同的后端服务器进行处理,因此如果涉及到会话Session,那么会话会比较复杂。常见的是基于数据库的会话持久化。要克服上面的难题,可以使用基于IP地址哈希的负载均衡方案。这样的话,同一客户端连续的Web请求都会被分发到同一服务器进行处理。
配置的例子如下:

http{ 
  upstream localhost{ 
    ip_hash; 
    server 192.168.1.103:8080;    
    server 192.168.1.103:8081;
    server 192.168.1.154:8080; 
  } 
  .... 
  server{ 
    listen 80; 
    ... 
    location / { 
     proxy_pass http://localhost; 
    }  
  }

上面的例子只是在upstream节添加了ip_hash配置。其它的配置同轮询配置。

4、基于权重的负载均衡

基于权重的负载均衡即Weighted Load Balancing,这种方式下,我们可以配置Nginx把请求更多地分发到高配置的后端服务器上,把相对较少的请求分发到低配服务器。
配置的例子如下:

http{ 
  upstream localhost{    
    server 192.168.1.103:8080 weight=2;    
    server 192.168.1.103:8081 weight=5;
    server 192.168.1.154:8080;  
  } 
  .... 
  server{ 
    listen 80; 
    ... 
    location / { 
     proxy_pass http://localhost; 
    } 
 }

上面的例子在服务器地址和端口后weight=2的配置,这意味着,每接收到8个请求,前2个请求会被分发到第一个服务器,第3-7个请求会分发到第二个服务器,第8个请求会分发到第三台服务器,其它的配置同轮询配置。

还要说明一点,基于权重的负载均衡和基于IP地址哈希的负载均衡可以组合在一起使用。



注:文章多有不足之处,仅供参考!