搭建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服务器,发现服务器响应速度很慢,这个问题还有待解决。
相关文章推荐
- Tomcat6 Session建立机制简要
- tomcat配置JNDI数据源(学习轻量级JavaEE)
- Tomcat starting even after port is in use(Address already in use), 即使connector端口被占用也会继续启动.
- Tomcat源码分析——请求原理分析(下)
- 同一台服务器,一个tomcat文件,多个tomcat实例(install到windows服务)
- Tomcat 7最大并发连接数的配置
- Tomcat内存设置详解
- org.apache.tomcat.maven__利用eclipse部署到tomcat
- 解决Tomcat Could not reserve enough space for object heap
- SecureCrt连接Linux操作tomcat
- Tomcat环境搭建及建议
- 如何在Mac OS中安装Tomcat 7.0
- 在myeclipse中配置tomcat内存
- tomcat安装服务和内存参数设置
- tomcat安装服务和内存参数设置
- JAVA Web快速开发部署(Javarebel实现真正高效的tomcat热部署)
- tomcat内存溢出设置JAVA_OPTS
- tomcat内存溢出设置JAVA_OPTS
- Tomcat
- 从0开始学java——Tomcat的安装及其常见错误排查(zz)