Tomcat+Nginx集群部署.docx
- 文档编号:12213396
- 上传时间:2023-04-17
- 格式:DOCX
- 页数:12
- 大小:68.55KB
Tomcat+Nginx集群部署.docx
《Tomcat+Nginx集群部署.docx》由会员分享,可在线阅读,更多相关《Tomcat+Nginx集群部署.docx(12页珍藏版)》请在冰豆网上搜索。
Tomcat+Nginx集群部署
Tomcat+Nginx集群部署
版本(v0.1)
张五泉
部署环境
Windowserver2003;
Nginx-1.3.9;
Tomcat4.0;
部署规划
Nginx172.20.15.44端口:
80;
TomcatServer1172.20.15.44端口:
802;
TomcatServer2172.20.15.44端口:
803;
客户端访问172.20.15.44,Nginx将客户端请求随机分发给应用服务Server1/Server2,由应用服务端处理客户的请求。
背景介绍
本次部署以第五监狱应用部署为例。
应用部署路径为:
D:
\nxj-prisonfive;
JDK采用1.4版本,配置路径:
D:
\j2sdk1.4.2_12;
tomcat为4.0版本,应用路径:
D:
\nxj-tomcat;
Tomcat配置
1.配置TomcatServer1
配置startserver1.bat(红色字体部分);
路径:
D:
\nxj-prisonfive;
@echooff
@titleTomcatServer1
setlocal
setJAVA_HOME=%D:
\j2sdk1.4.2_12%
setCATALINA_HOME=D:
\nxj-tomcat
setCATALINA_BASE=%CATALINA_HOME%
remif%JAVA_HOME%==""(echo请设置环境变量JAVA_HOME&pause;&exit)
remif%CATALINA_HOME%==""(echo请设置环境变量CATALINA_HOME&pause;&exit)
setNXJ_HOME=D:
\nxj-prisonfive
setOFBIZ_HOME=%NXJ_HOME%\E-office
setJAVA_OPTS=-Xms512m-Xmx1024m
setCATALINA_OPTS=-Dcatalina.base="%CATALINA_BASE%"-Dcatalina.home="%CATALINA_HOME%"-Djava.endorsed.dirs="%CATALINA_HOME%\bin;%CATALINA_HOME%\common\endorsed"-Dofbiz.home=%OFBIZ_HOME%-Dmerlin.dir=%NXJ_HOME%
setCLASS_PATH=%CLASS_PATH%;%JAVA_HOME%\lib\tools.jar;%CATALINA_HOME%\bin\bootstrap.jar
setSERVER_XML=%NXJ_HOME%\Tomcat\conf\server8080.xml
setSTART_CLASS=org.apache.catalina.startup.Bootstrap
setSTART_MOD=start
echo%JAVA_HOME%\bin\java%JAVA_OPTS%%CATALINA_OPTS%-classpath%CLASS_PATH%-Djava.io.tmpdir="%CATALINA_HOME%\temp"%START_CLASS%%START_MOD%-config%SERVER_XML%
%JAVA_HOME%\bin\java%JAVA_OPTS%%CATALINA_OPTS%-classpath%CLASS_PATH%-Djava.io.tmpdir="%CATALINA_HOME%\temp"%START_CLASS%%START_MOD%-config%SERVER_XML%
配置server8080.xml(红色字体部分);
路径:
D:
\nxj-prisonfive\Tomcat\conf
操作:
1,修改所有的端口,并确保所修改端口不会与系统已使用端口发生冲突;
2,根据实际情况配置应用路径及缓存文件work1的路径;
className="org.apache.catalina.connector.http.HttpConnector" connectionTimeout="60000"debug="0"maxProcessors="500" minProcessors="50"port="802"/> className="org.apache.catalina.connector.http.HttpConnector" port="8462"minProcessors="5"maxProcessors="75" enableLookups="true" debug="0"scheme="https"secure="true"> clientAuth="true"protocol="TLS" keystoreFile="D: \nxj-prisonfive\E-office\servercert\server_keystore" keystorePass="newpass"/> \nxj-prisonfive\Tomcat\conf"debug="0" name="localhost"unpackWARs="false"autoDeploy="true"> /nxj-prisonfive/defaultroot"path=""workDir="D: /nxj-prisonfive/Tomcat/work1"/> /nxj-prisonfive/E-office"path="/E-office"workDir="D: /nxj-prisonfive/Tomcat/work1/E-office"/> 2.配置TomcatServer2 配置startserver2.bat(红色字体部分); 路径: D: \nxj-prisonfive; 注: 需要特别注意的地方: setSERVER_XML=%NXJ_HOME%\Tomcat\conf\server8081.xml 如果没有startserver2.bat,请新建一个,配置文件如下, @echooff @titleTomcatServer2 setlocal setJAVA_HOME=%D: \j2sdk1.4.2_12% setCATALINA_HOME=D: \nxj-tomcat setCATALINA_BASE=%CATALINA_HOME% remif%JAVA_HOME%==""(echo请设置环境变量JAVA_HOME&pause;&exit) remif%CATALINA_HOME%==""(echo请设置环境变量CATALINA_HOME&pause;&exit) setNXJ_HOME=D: \nxj-prisonfive setOFBIZ_HOME=%NXJ_HOME%\E-office setJAVA_OPTS=-Xms512m-Xmx1024m setCATALINA_OPTS=-Dcatalina.base="%CATALINA_BASE%"-Dcatalina.home="%CATALINA_HOME%"-Djava.endorsed.dirs="%CATALINA_HOME%\bin;%CATALINA_HOME%\common\endorsed"-Dofbiz.home=%OFBIZ_HOME%-Dmerlin.dir=%NXJ_HOME% setCLASS_PATH=%CLASS_PATH%;%JAVA_HOME%\lib\tools.jar;%CATALINA_HOME%\bin\bootstrap.jar setSERVER_XML=%NXJ_HOME%\Tomcat\conf\server8081.xml setSTART_CLASS=org.apache.catalina.startup.Bootstrap setSTART_MOD=start echo%JAVA_HOME%\bin\java%JAVA_OPTS%%CATALINA_OPTS%-classpath%CLASS_PATH%-Djava.io.tmpdir="%CATALINA_HOME%\temp"%START_CLASS%%START_MOD%-config%SERVER_XML% %JAVA_HOME%\bin\java%JAVA_OPTS%%CATALINA_OPTS%-classpath%CLASS_PATH%-Djava.io.tmpdir="%CATALINA_HOME%\temp"%START_CLASS%%START_MOD%-config%SERVER_XML% 配置server8081.xml(红色字体部分); 路径: D: \nxj-prisonfive\Tomcat\conf 操作: 1,修改所有的端口,确保所有端口不会与Server1发生冲突; 2,根据实际情况配置应用路径及缓存文件work2的路径; className="org.apache.catalina.connector.http.HttpConnector" connectionTimeout="60000"debug="0"maxProcessors="500" minProcessors="50"port="803"/> className="org.apache.catalina.connector.http.HttpConnector" port="8461"minProcessors="5"maxProcessors="75" enableLookups="true" debug="0"scheme="https"secure="true"> clientAuth="true"protocol="TLS" keystoreFile="D: \nxj-prisonfive\E-office\servercert\server_keystore" keystorePass="newpass"/> \nxj-prisonfive\Tomcat\conf"debug="0" name="localhost"unpackWARs="false"autoDeploy="true"> /nxj-prisonfive/defaultroot"path=""workDir="D: /nxj-prisonfive/Tomcat/work2"/> /nxj-prisonfive/E-office"path="/E-office"workDir="D: /nxj-prisonfive/Tomcat/work2/E-office"/> 3.启动server1和server2 双击startserver1.bat和startserver2.bat,确保服务能够正常启动: TomcatServer1: TomcatSerer2: Nginx配置 路径: D: \nginx-1.3.9,Nginx用的是破解版,安装过程不做介绍。 1.配置nginx.conf 路径: D: \nginx-1.3.9\conf 以下配置文件中各项参数介绍请参考文档《Nginx.conf详细讲解.doc》 #usernobody; worker_processes2;#启动进程,通常设置成和cpu的数量相等 #error_loglogs/error.log; #error_loglogs/error.lognotice; #error_loglogs/error.loginfo; #pidlogs/nginx.pid; events{ worker_connections2048;#单个后台workerprocess进程的最大并发链接数 } http{ includemime.types; default_typeapplication/octet-stream; #log_formatmain'$remote_addr-$remote_user[$time_local]"$request"' #'$status$body_bytes_sent"$http_referer"' #'"$http_user_agent""$http_x_forwarded_for"'; #access_loglogs/access.logmain; access_logoff; server_tokensoff; sendfileon; #tcp_nopushon; #keepalive_timeout0; keepalive_timeout120; tcp_nodelayon; #gzipon; includegzip.conf; includeproxy.conf; #设定负载均衡的服务器列表,参考文档《Nginx的upstream目前支持的5中方式的分配》 upstreamtomcats{ ip_hash; server172.20.15.44: 802weight=1;#weigth参数表示权值,权值越高被分配到的几率越大 server172.20.15.44: 803weight=2; } server{ listen80; server_name17.20.15.44; #includesit.conf; location/{ #rootD: /nxj-prisonfive/E-office;#定义服务器的默认网站根目录位置 #indexindex.jspindex.htmlindex.htm;#定义首页索引文件的名称 proxy_passhttp: //tomcats;#请求转向localhost定义的服务器列表 } #redirectservererrorpagestothestaticpage/50x.html error_page500502503504/50x.html; location=/50x.html{ roothtml; } } } 2.配置proxy.conf #设定请求缓冲 client_header_timeout3m; client_body_timeout3m; send_timeout60; #以下是一些反向代理的配置可删除 proxy_redirectoff; #后端的Web服务器可以通过X-Forwarded-For获取用户真实IP proxy_set_headerHost$host; proxy_set_headerX-Real-IP$remote_addr; proxy_set_headerX-Forwarded-For$proxy_add_x_forwarded_for; client_max_body_size100m;#允许客户端请求的最大单文件字节数 client_body_buffer_size256k;#缓冲区代理缓冲用户端请求的最大字节数, proxy_connect_timeout300;#nginx跟后端服务器连接超时时间(代理连接超时) proxy_send_timeout300;#后端服务器数据回传时间(代理发送超时) proxy_read_timeout300;#连接成功后,后端服务器响应时间(代理接收超时) proxy_buffer_size256k;#设置代理服务器(nginx)保存用户头信息的缓冲区大小 proxy_buffers4256k;#proxy_buffers缓冲区,网页平均在32k以下的话,这样设置 proxy_busy_buffers_size256k;#高负荷下缓冲大小(proxy_buffers*2) proxy_temp_file_write_size256k;#设定缓存文件夹大小,大于这个值,将从upstream服务器传 登录验证 1.启动服务端的server1和server2; 2.启动nginx服务; 3.通过多个PC机访问nginx服务,查看server1和server2是否分别响应了PC端的请求。 遗留问题: 1.upstream的分配方式 upstream默认的分配方式为轮询: 每个请求按时间顺序逐一分配到后台不同的服务端; ip_hash: 每个请求按IP的hash结果分配,这个每个访客固定访问一个后台的服务端。 疑问: 部署过程中,当我们的默认方式为默认即轮询时,请求并未以轮询的方式访问后台服务端,而是同时访问了所有的服务端导致系统无法正常登录。 由于疑问没有解决,这里选择了ip_hash的分配方式。 2.权重值wegiht的大小分配 当两个服务端的weight值一样的时候,表示每个访客的请求访问到每个服务端的概率为50%; 参数设定如下: upstreamtomcats{ ip_hash; server172.20.15.44: 802weight=1; server172.20.15.44: 803weight=2; } 疑问1: 当服务端的两个server的权重值相同时,第一个server会响应所有访客的请求,第二个server则不会响应任何一个请求,为什么? 疑问2: 当第二个服务的weight的值为第一个服务的weightx2时,访客的请求访问每个服务端的概率为50%(此结果为验证估算结果),如以上参数设定所示,当第一个server的权重值为1时,第二个server的权重值为2,访客的请求才有可能被第二个server响应。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Tomcat Nginx 集群 部署
![提示](https://static.bdocx.com/images/bang_tan.gif)