wlyyb521 发表于 2018-11-15 06:35:42

负载均衡(Nginx)使用教程

  Nginx实例
  //************说明*************//
  此文章基于Nginx对多台tomcat服务器进行负载均衡
  //************准备工作*************//
  nginx安装包下载:http://nginx.org/en/download.html
  nginx在线手册:http://shouce.iyunv.net/nginx/index.html
  tomcat1:8081端口(本地安装启动)
  tomcat2:8082端口(本地安装启动)
  tomcat3:8080端口(局域网内安装启动)
  //************Nginx安装启动*************//
  本文采用的是较为稳定的nginx-1.11.1版本
  ①:直接解压到相关路径(本文解压在E盘下)
  ②:启动主要有两种方式,如下:
  1、直接双击nginx.exe启动(注:正常是一闪而过)

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

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

  浏览器出现如上页面,则表示nginx启动成功
  //************Nginx常用命令*************//
  start nginx :启动nginx服务
  nginx -s stop :停用或结束nginx服务

  nginx -s>  //************tomcat服务准备*************//

  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;
  
      indexindex.html index.htm;
  
      proxy_passhttp://localhost;#localhost与负载均衡upstream配置名称localhost 一致
  
    }
  在对整个文件不做任何修改的前期下,配置upstream、proxy_pass这两项即可完成负载均衡的配置。

  然后命令提示符执行nginx -s>
  端口为:8080的服务器

  本机端口为:8081的服务器

  局域网内端口为: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地址哈希的负载均衡可以组合在一起使用。
  注:文章多有不足之处,仅供参考!


页: [1]
查看完整版本: 负载均衡(Nginx)使用教程