nginx+tomcat配置集群负载均衡

来源:互联网 发布:凌鹏软件 编辑:程序博客网 时间:2024/06/17 11:32

介绍

相信很多人都听过nginx,这个小巧的东西慢慢地在吞食apache和IIS的份额。那究竟它有什么作用呢?
摘一段百度百科上的描述:反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现一个服务器。 这里讲得很直白。反向代理方式实际上就是一台负责转发的代理服务器,貌似充当了真正服务器的功能,但实际上并不是,代理服务器只是充当了转发的作用,并且从真正的服务器那里取得返回的数据。这样说,其实nginx 完成的就是这样的工作。我们让nginx监听一个端口,譬如80端口,但实际上我们转发给在8080端口的tomcat,由它来处理真正的请求,当请求完成后,tomcat返回,但数据此时没直接返回,而是直接给nginx,由nginx进行返回,这里,我们会以为是nginx进行了处理,但实际上进行处理的是tomcat。说到上面的方式,也许很多人又会想起来,这样可以把静态文件交由nginx来进行处理。对,很多用到nginx的地方都是作为静态伺服器,这样可以方便缓存那些静态文件,比如CSS,JS,html,htm等文件。闲话就不多说了,我们直接来看看nginx怎么使用。

工具

去官网下载工具http://nginx.org/en/download.html                   nginx-1.13.0   http://tomcat.apache.org/download-70.cgi     apache-tomcat-7.0.78

安装

  把这个两个工具解压一下,然后点击打开里面文件:

这里写图片描述

双击nginx.exe,发现一闪而过的窗口,代表nginx服务已经启动。
也可以使用命令进行启动,使用命令行进入nginx根目录下命令:

nginx -s stop 快速退出

nginx -s quit 优雅退出

nginx -s reload 更换配置,启动新的工作进程,优雅的关闭以往的工作进程

nginx -s reopen 重新打开日志文件

这里写图片描述

新建连个文件夹分别取名tomcat1 tomcat2

这里写图片描述

每个文件夹里面分别放一个apache-tomcat-7.0.78
然后修改conf 文件夹中的server.xml分别修改三处地方

第一个:
这里写图片描述

这里写图片描述

这里写图片描述

第二个:

这里写图片描述

这里写图片描述

这里写图片描述

然后把\webapps\ROOT东西删了 新建一个index.jsp 内容 holle tomcat? ?代表不同的服务器
比如tomcat1 tomcat2

服务器配置完毕

这里写图片描述

这里写图片描述

现在开始配置nginx中conf里面的nginx.conf

配置如下(这里只进行了简单的配置,实际生产环境可以进行更详细完善配置):

worker_processes  1;#工作进程的个数,一般与计算机的cpu核数一致  events {      worker_connections  1024;#单个进程最大连接数(最大连接数=连接数*进程数)  }  http {      include       mime.types; #文件扩展名与文件类型映射表      default_type  application/octet-stream;#默认文件类型      sendfile        on;#开启高效文件传输模式,sendfile指令指定nginx是否调用sendfile函数来输出文件,对于普通应用设为 on,如果用来进行下载等应用磁盘IO重负载应用,可设置为off,以平衡磁盘与网络I/O处理速度,降低系统的负载。注意:如果图片显示不正常把这个改成off    keepalive_timeout  65; #长连接超时时间,单位是秒      gzip  on;#启用Gizp压缩      #服务器的集群      upstream  netitcast.com {  #服务器集群名字           server    127.0.0.1:18080  weight=1;#服务器配置   weight是权重的意思,权重越大,分配的概率越大。          server    127.0.0.1:28080  weight=2;      }         #当前的Nginx的配置      server {          listen       80;#监听80端口,可以改成其他端口          server_name  localhost;##############   当前服务的域名      location / {              proxy_pass http://netitcast.com;              proxy_redirect default;          }          error_page   500 502 503 504  /50x.html;          location = /50x.html {              root   html;          }      }  }  

然后启动nginx

访问http://localhost/index.jsp

第一次
这里写图片描述

第二次
这里写图片描述

第三
这里写图片描述

 到此,我们利用Nginx已经实现了负载均衡的Tomcat集群。我们不断的刷新,发现访问Tomcat2的概率大概是Tomcat1的2倍,这是因为我们在Nginx中配置的两台Tomcat的权重起的作用。

ps:谁能想到实现一个高性能的负载均衡集群会如此简单。Nginx的功能如此强大,配置却如此简单,我们还有什么理由拒绝它呢?这比我们动不动就十多万至几十万人民币的F5 BIG-IP、NetScaler等硬件负载均衡交换机廉价了不知多少。此外,大家别忘了Nginx不仅仅是一个反向代理服务器,它本身也可以托管网站,作为Web服务器,进行Http服务处理。

原创粉丝点击