工作之余,考虑到实际项目存在集群的需要,为此以Nginx+Tomcat+Memcached的集群方式进行实践。
一、同台电脑多台Tomcat服务器的准备(本次实践以一台电脑为基础环境);
二、Nginx部署
三、Memcached的安装部署
四、Tomcat相关jar包的下载
五、对应配置文件的修改(Tomcat、Nginx)
六、Tomcat(测试案例)、Nginx、Memcached启动
七、对实际测试案例进行调用查看
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查看是否运行正常。
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",可查看到以下图示结果:
4、在浏览器输入http://localhost,可以看到Nginx的欢迎页。
5、检验成功后,关闭nginx,cmd命令行执行nginx.exe -s stop.
6、nginx基础环境完成,配置下一步进行。
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"
7、memcached的安装工作基本完成。
接下来,就是针对jar的添加以及配置的调整。
1、根据实际环境进行jar的匹配选择,本次选择的jar包主要包括:
2、重点是memcached-session-manager-1.8.3.jar和memcached-session-manager-tc7-1.8.3.jar的选择,要根据实际环境的tomcat版本号相匹配
3、将所下载的jar包复制到tomcat的lib目录,记住是两个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,运行效果如下:
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,查看集群是否成功
1、输入账号、密码登陆进入后,查看session情况如下:
2、第一次打开选择n1.tomcatRoute1,调用tomcat1
3、再次打开localhost/shanhong/,登陆进入后,再次查看session情况如下:
4、根据之前配置的集群分配方式,分别调用tomcat1和tomcat2
5、关闭tomcat1或者tomcat2,仍可继续访问
至此,本次采用Nginx+Tomcat+Memcached实现集群的方式部署成功。
如有需要本次调试中所需要的jar,请本文下方留email。