Nginx+Tomcat+Memcached集群实践

工作之余,考虑到实际项目存在集群的需要,为此以Nginx+Tomcat+Memcached的集群方式进行实践。


本次实践主要从以下几个步骤实施:

一、同台电脑多台Tomcat服务器的准备(本次实践以一台电脑为基础环境);

二、Nginx部署

三、Memcached的安装部署

四、Tomcat相关jar包的下载

五、对应配置文件的修改(Tomcat、Nginx)

六、Tomcat(测试案例)、Nginx、Memcached启动

七、对实际测试案例进行调用查看


一、多台Tomcat服务器的准备

1、tomcat文件进行多份复制,可分别命名为 tomcat1和tomcat2(本次tomcat版本为7.0.62

2、对tomcat1和tomcat2中的server.xml进行调整,调整内容主要是三处端口和一处添加:

#将默认8005更改为8006、8007
<Server port="8005" shutdown="SHUTDOWN">

#将默认8080更改为8090、8100
    <Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />

#将默认8009更改为8010、8011
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />

#分别添加jvmRoute="tomcatRoute1"和jvmRoute="tomcatRoute2" 方便后期session测试
<Engine name="Catalina" defaultHost="localhost" >

3、修改好之后,分别运行tomcat1和tomcat2查看是否运行正常。


二、Nginx部署

1、下载nginx安装包(本次安装版本为nginx-1.8.0),解压缩到固定目录(本次解压缩在D:\nginx-1.8.0\)

2、启动Nginx:先进入D:\nginx-1.8.0\目录,cmd命令行执行:start nginx.exe,弹出屏会一闪而逝

3、检验nginx运行情况,cmd命令行执行tasklist /fi "imagename eq nginx.exe",可查看到以下图示结果:

Nginx+Tomcat+Memcached集群实践_第1张图片

4、在浏览器输入http://localhost,可以看到Nginx的欢迎页。

Nginx+Tomcat+Memcached集群实践_第2张图片

5、检验成功后,关闭nginx,cmd命令行执行nginx.exe -s stop.

6、nginx基础环境完成,配置下一步进行。


三、memcached安装

1、下载memcached安装包,本次测试选择的是memcached-1.2.6-win32-bin.zip

2、解压到调试目录下面,本次选择压缩在D盘,D:\memcached

3、输入安装命令memcached.exe –d install

4、输入执行命令memcached -d start

5、执行任务查询命令tasklist /fi "imagename eq memcached.exe",查看memcached是否运行正常。

6、memcached的默认端口为11211,也可通过执行命令来查询netstat -ano|findstr "8056"

Nginx+Tomcat+Memcached集群实践_第3张图片

7、memcached的安装工作基本完成。


接下来,就是针对jar的添加以及配置的调整。

四、jar包的版本选择和下载

1、根据实际环境进行jar的匹配选择,本次选择的jar包主要包括:

Nginx+Tomcat+Memcached集群实践_第4张图片

2、重点是memcached-session-manager-1.8.3.jar和memcached-session-manager-tc7-1.8.3.jar的选择,要根据实际环境的tomcat版本号相匹配

3、将所下载的jar包复制到tomcat的lib目录,记住是两个tomcat!


五、tomcat配置修改

1、进入tomcat的conf目录,打开content.xml文件进行修改

2、修改内容为(新增):

    <!-- Uncomment this to disable session persistence across Tomcat restarts -->
    <!--<Manager pathname="" />
    -->
    <!-- ---------------------------以下部分为新增内容--------------------------- -->
    <Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"
        memcachedNodes="n1:127.0.0.1:11211"
        sticky="false"
        requestUriIgnorePattern=".*\.(png|gif|jpg|css|js|ico|jpeg)$"
        sessionBackupAsync="false"
        sessionBackupTimeout="100"
        transcoderFactoryClass="de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFactory"/>
    <!-- ---------------------------以上部分为新增内容--------------------------- -->

3、分别运行tomcat1和tomcat2,查看运行是否正常

4、本次tomcat运行的案例是实际生产项目,端口分别localhost:8090和localhost:8010,运行效果如下:

Nginx+Tomcat+Memcached集群实践_第5张图片


六、Nginx配置修改

1、进入nginx的conf目录,打开nginx.conf文件进行修改

2、修改内容为(新增和调整):

    #----------------以下为新增---------------
    upstream localhost {
        #ip_hash;
	server 127.0.0.1:8090 weight=1;
        server 127.0.0.1:8100 weight=1;
    }
    #----------------以上为新增---------------

    #----------------以下为内容调整------------
    server {
        listen       80;
        server_name  localhost;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
	    root   html;
            index  index.html index.htm;
	    #请求转向mysvr 定义的服务器列表
            proxy_pass    http://localhost;
            proxy_redirect default;
	    proxy_connect_timeout 5;
	}

        #error_page  404              /404.html;

        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
        #----------------以上为内容调整--------------
    }

3、nginx.conf文件修改中,主要添加和修改的内容必须处于http {}内,不然会出现以下的error log提示

"upstream" directive is not allowed here in D:\nginx-1.8.0/conf/nginx.conf:

4、修改完配置后,在nginx目录的命令行下执行start nginx.exe再执行tasklist|findstr "nginx.exe"

5、查看执行情况如下:

6、在浏览器打开localhost/shanhong,查看集群是否成功

Nginx+Tomcat+Memcached集群实践_第6张图片


七,集群效果验证

1、输入账号、密码登陆进入后,查看session情况如下:

Nginx+Tomcat+Memcached集群实践_第7张图片

2、第一次打开选择n1.tomcatRoute1,调用tomcat1

3、再次打开localhost/shanhong/,登陆进入后,再次查看session情况如下:

Nginx+Tomcat+Memcached集群实践_第8张图片

4、根据之前配置的集群分配方式,分别调用tomcat1和tomcat2

5、关闭tomcat1或者tomcat2,仍可继续访问


至此,本次采用Nginx+Tomcat+Memcached实现集群的方式部署成功。


如有需要本次调试中所需要的jar,请本文下方留email。

你可能感兴趣的:(tomcat,nginx,windows,memcached,tomcat集群,nginx集群,memcached集群)