论坛首页 Java企业应用论坛

windows 下配置 nginx + tomcat + memcached 集群

浏览 9080 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2014-06-11   最后修改:2014-06-18
前几天介绍了一下 memcached-session-filter 的改写《让 memcached-session-filter 摆脱 spring 和 Java 序列化接口》

这次介绍一下实际应用其搭建一个 tomcat 集群的服务器,以测试为目的。

为了解决静态文件与动态请求分离和上传文件的访问问题,把 1 个 nginx 和 2 个 tomcat 服务器目录均放在 D:/web/ROOT

1、共享 session 的通过 filter 将 session 数据存储到 memcached 中。
修改自 memcached-session-filter ,项目地址:http://code.google.com/p/memcached-session-filter/
设置 Java 项目的配置文件 web.xml
<pre name="code" class="xml">
    <filter>
        <filter-name>sessionFilter</filter-name>
        <filter-class>com.ezerg.memsession.MemcachedSessionFilter</filter-class>
        <init-param>
            <param-name>memcachedNodes</param-name>
            <param-value>localhost:11211 localhost:11212</param-value>
        </init-param>
        <init-param>
            <param-name>sessionTimeout</param-name>
            <param-value>300</param-value>
        </init-param>
    </filter>

    <filter-mapping>
        <filter-name>sessionFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

</pre>
将项目文件复制到 D:/web/ROOT 目录。

2、启动 2 个 tomcat 服务器。
修改 server.xml ,修改一个即可,防止端口冲突不能启动
<pre name="code" class="xml">
<!--  修改port端口:10086 2 个 tomcat 不能重复--> 
<Server port="10086" shutdown="SHUTDOWN">

<!-- port="8081" tomcat 监听端口--> 
<Connector port="8081" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" /> 

<!-- 配置 AJP 端口,直接注释--> 
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />

<!-- 服务器路径 -->
<Host name="localhost"  appBase="d:/web" unpackWARs="false" autoDeploy="false" xmlValidation="false" xmlNamespaceAware="false">

</pre>
修改完成后,分别启动 tomcat 。


3、启动 nginx 服务器。
修改 nginx.conf 文件,以下是一些主要的配置:

... //开启 gzip
    gzip  on;

... //负载的两台 tomcat
    upstream  tomcat   {  
        ip_hash;
        server   192.168.0.31:8081 max_fails=1 fail_timeout=60s;  
        server   192.168.0.31:8082 max_fails=1 fail_timeout=60s;  
    }  

server {
..
// 静态文件根目录
location / {
root   d:/web/ROOT;
        index  index.html index.htm index.do;
client_max_body_size  100m;
        client_body_buffer_size   128k;
    }

...
    // .jsp 和 .do 的请求转发给 tomcat
location ~ (\.jsp)|(\.do)$ {
            proxy_connect_timeout       4s;
            proxy_read_timeout          2s;
            proxy_next_upstream http_502 http_504 error timeout invalid_header;
            proxy_pass        http://tomcat;  
    proxy_set_header Host  $host;
    proxy_set_header X-Forwarded-For  $remote_addr;
}
   
    // 禁止访问 WEB-INF
    location ~ ^/(WEB-INF)/ {   
deny all;   
    }
...
建议:
1、max_fails 参数在大型系统中建议设置为3,如果没有多个后端服务器的话保持默认即可。
2、proxy_read_timeout要根据自身程序而定。

修改完成后,启动 nginx 。修改配置文件后,可以动态加载配置文件:nginx -s reload


   发表时间:2014-06-17  
mark,有空试试
0 请登录后投票
   发表时间:2014-06-18  
格式化一下多好。。
0 请登录后投票
   发表时间:2014-06-18  
MrLee23 写道
格式化一下多好。。


格了。。
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics