基于apache的tomcat负载均衡和集群配置

最近不是很忙,用零碎时间做点小小的实验。

        以前公司采用F5负载均衡交换机,F5将请求转发给多台服务器,每台服务器有多个webserver实例,每个webserver分布在多台服务器,交叉式的分布集群。F5只是简单了解,毕竟那玩意几十万的价格实在不是我一个小喽喽能弄来做试验玩的,而起公司也不能开放权限。后来知道apache、Nginx软件可以实现负载(F5是操作于IOS网络模型的传输层,Nginx、apache是基于http反向代理方式,位于ISO模型的第七层应用层。直白些就是TCP UDP 和http协议的区别,Nginx不能为基于TCP协议的应用提供负载均衡。)

现在对window下对Nginx+tomcat负载均衡做配置尝试,将全部请求转发到tomcat,并未做静态,动态分开,图片防盗链等配置,一切先简单来,后续慢慢添加完善。

用到软件:

Nginx ,两个tomcat ,eclipse肯定要有了,web项目自备,其他无。

1、下载nginx

2、目录结构


      Nginx-

               |_  conf   配置目录

               |_  contrib

               |_  docs 文档目录

               |_  logs  日志目录

               |_  temp 临时文件目录

               |_  html 静态页面目录

               |_  nginx.exe 主程序


      window下安装Nginx极其简单,解压缩到一个无空格的英文目录即可(个人习惯,担心中文出问题),双击nginx启动,这里我安装到:D:\server目录,下面涉及到的tomcat也安装在此目录。

技术分享

nginx启动:到目录下执行nginx

nginx停止:nginx -s stop

3、下载两个版本的tomcat6。

下面就是关键的配置问题了。

Nginx配置文件默认在conf目录,主要配置文件为nginx.conf,我们安装在D:\server\nginx-1.6.2、默认主配置文件为D:\server\nginx-1.6.2\nginx.conf。下面是nginx作为前端反向代理服务器的配置

nginx.conf

 1 #Nginx所用用户和组
 2 #user  niumd niumd;
 3 
 4 #工作的子进程数量(通常等于CPU数量或者2倍于CPU)
 5 worker_processes  2;
 6 
 7 #错误日志存放路径
 8 #error_log  logs/error.log;
 9 #error_log  logs/error.log  notice;
10 error_log  logs/error.log  info;
11 
12 #指定pid存放文件
13 pid        logs/nginx.pid;
14 
15 events {
16         #使用网络IO模型linux建议epoll,FreeBSD建议采用kqueue
17     #use epoll;
18     
19     #允许最大连接数
20     worker_connections  2048;
21 }
22 
23 http {
24     include       mime.types;
25     default_type  application/octet-stream;
26 
27         #定义日志格式
28     #log_format  main  $remote_addr - $remote_user [$time_local] $request 
29     #                  "$status" $body_bytes_sent "$http_referer" 
30     #                  "$http_user_agent" "$http_x_forwarded_for";
31 
32     #access_log  off;
33     access_log  logs/access.log;
34 
35     client_header_timeout  3m;
36     client_body_timeout    3m;
37     send_timeout           3m;
38  
39     client_header_buffer_size    1k;
40     large_client_header_buffers  4 4k;
41 
42     sendfile        on;
43     tcp_nopush      on;
44     tcp_nodelay     on;
45 
46     #keepalive_timeout  75 20;
47 
48     include    gzip.conf;
49        upstream localhost {
50            #ip_hash
51       #ip_hash;
52       server localhost:8081;
53       server localhost:8080;
54      }
55 
56     server {
57             listen       80;
58             server_name  localhost;   
59 
60             location / {
61                     proxy_connect_timeout   3;
62                     proxy_send_timeout      30;
63                     proxy_read_timeout      30;
64                 proxy_pass http://localhost;
65             }
66             
67    }
68 }

 gzip压缩相关配置如下:

gzip              on;
gzip_min_length      1000;
gzip_types         text/plain text/css application/x-javascript;

 

下面为tomcat的配置,这个大家应该很熟悉了

     我这里有两个tomcat6,分别为apache-tomcat-6.0.37-8081和tomcat-6.0.18-8080,意思很明白一个用8081端口一个用8080端口,修改server.xml配置文件即可,端口修改这里不提。

启动两个tomcat成功后。检验效果的时候到了。

浏览器输入:http://localhost/user/test.do这是我自己项目的链接,查看连个服务的后台日志是否有打印,结果OK一切顺利。

期间顺带解决问题:去掉url中项目名称的问题。解决方法在server.xml加如下代码,path属性不填,正常情况为项目名,docBase为发布的地址,可以不再tomcat目录下大家随意。

      <Context docBase="D:\server\apache-tomcat-6.0.37-8081\wtpwebapps\项目名" path="" reloadable="true" source="org.eclipse.jst.jee.server:mySpring"/></Host>

 

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。