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

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服务器,发现服务器响应速度很慢,这个问题还有待解决。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 11
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值