您的位置:首页 > 运维架构 > Tomcat

搭建nginx+tomcat+Java的负载均衡环境

2015-10-23 18:59 489 查看

nginx介绍

 
nginx (“engine x”) 是俄罗斯人Igor Sysoev(塞索耶夫)编写的一款高性能的 HTTP 和反向代理服务器。也是一个IMAP/POP3/SMTP代理服务器;也就是说,Nginx本身就可以托管网站,进行HTTP服务处理,也可以作为反向代理服务器使用。

nginx特点

  跨平台:Nginx 可以在大多数 Unix like OS编译运行,而且也有Windows的移植版本;

  配置异常简单,非常容易上手。配置风格跟程序开发一样,神一般的配置;

  非阻塞、高并发连接:数据复制时,磁盘I/O的第一阶段是非阻塞的。官方测试能够支撑5万并发连接,在实际生产环境中跑到2~3万并发连接数.(这得益于Nginx使用了最新的epoll模型);

  事件驱动:通信机制采用epoll模型,支持更大的并发连接;

  master/worker结构:一个master进程,生成一个或多个worker进程;

  内存消耗小:处理大并发的请求内存消耗非常小。在3万并发连接下,开启的10个Nginx 进程才消耗150M内存(15M*10=150M);

  成本低廉:Nginx为开源软件,可以免费使用。而购买F5 BIG-IP、NetScaler等硬件负载均衡交换机则需要十多万至几十万人民币;

  内置的健康检查功能:如果 Nginx Proxy 后端的某台 Web 服务器宕机了,不会影响前端访问;

  节省带宽:支持 GZIP 压缩,可以添加浏览器本地缓存的 Header 头;

  稳定性高:用于反向代理,宕机的概率微乎其微。

  搭建nginx + tomcat + Java负载均衡环境环境

  我们下载好nginx服务器和tomcat服务器,nginx下载地址为:http://nginx.org/en/download.html,tomcat地址地址为:http://tomcat.apache.org/
  在D盘创建我们搭建环境的目录,如下所示:
    


  我们修改tomcat-1的端口为8082,修改tomcat-2的端口为8083,然后我们配置nginx的nginx.conf,配置如下:
#user  nobody;
worker_processes  1;#工作进程的个数,可以配置多个

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid        logs/nginx.pid;

events {
worker_connections  1024;#单个进程最大连接数(最大连接数=连接数*进程数)
}

http {
include       mime.types; #文件扩展名与文件类型映射表
default_type  application/octet-stream;#默认文件类型

#log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
#                  '$status $body_bytes_sent "$http_referer" '
#                  '"$http_user_agent" "$http_x_forwarded_for"';

#access_log  logs/access.log  main;

sendfile        on;#开启高效文件传输模式,sendfile指令指定nginx是否调用sendfile函数来输出文件,对于普通应用设为 on,如果用来进行下载等应用磁盘IO重负载应用,可设置为off,以平衡磁盘与网络I/O处理速度,降低系统的负载。注意:如果图片显示不正常把这个改成off。
#tcp_nopush     on;

#keepalive_timeout  0;
keepalive_timeout  65; #长连接超时时间,单位是秒

gzip  on;#启用Gizp压缩

#服务器的集群
upstream  quwenzhe {  #服务器集群名字
#server   172.16.21.13:8081 weight=1;#服务器配置   weight是权重的意思,权重越大,分配的概率越大。
#server   192.168.1.186:8081 weight=1;
#server   172.16.1.14:8081 weight=2;
#server   172.16.1.15:8081 weight=1;
#server   172.16.1.15:80 weight=1;
server    127.0.0.1:8082  weight=1;
server    127.0.0.1:8083  weight=1;
}

#当前的Nginx的配置
server {
listen       8081;#监听80端口,可以改成其他端口
server_name  quwenzhe;##############	当前服务的域名

location / {
index  index.html index.jsp;
proxy_pass  http://quwenzhe; proxy_set_header    X-Real-IP   $remote_addr;
client_max_body_size    100m;
}

error_page   500 502 503 504  /50x.html;
location = /50x.html {
root   html;
}
}
}
        我们需要注意的是server_name名称必须和upstream名称一致,proxy_pass名称为http://+server_name。upstream配置的是tomcat服务器列表,weight是权重的意思,权重越大,分配的概率越大。

  接着,我们创建一个简单的java web项目nginx01,在项目中创建一个index.jsp页面,在页面中添加内容“第一个测试页面”,将其部署到tomcat-1;将index.jsp页面中的内容改为“第二个测试页面”,将其部署到tomcat-2。
  启动tomcat-1,启动tomcat-2,用命令行切换到nginx服务器的目录,输入start nginx启动nginx服务器。
   


  在浏览器输入 http://localhost:8082/nginx01/index.jsp,tomcat-1可以正常访问,输入http://localhost:8083/nginx01/index.jsp,tomcat-2可以正常访问,输入 http://localhost:8081/nginx01/index.jsp,通过不断刷新页面,我们可以发现内容时而为“第一个测试页面”,时而为“第二个测试页面”,证明nginx成功实现请求的负载均衡。
  配置成功的服务器下载地址:http://pan.baidu.com/s/1eQHdDTK
  不过有个疑问,当把tomcat服务器其中的一个关掉后,再次访问nginx服务器,发现服务器响应速度很慢,这个问题还有待解决。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: