Nginx+Tomcat+Session 高性能群集搭建.docx

上传人:b****8 文档编号:9980074 上传时间:2023-02-07 格式:DOCX 页数:8 大小:19.17KB
下载 相关 举报
Nginx+Tomcat+Session 高性能群集搭建.docx_第1页
第1页 / 共8页
Nginx+Tomcat+Session 高性能群集搭建.docx_第2页
第2页 / 共8页
Nginx+Tomcat+Session 高性能群集搭建.docx_第3页
第3页 / 共8页
Nginx+Tomcat+Session 高性能群集搭建.docx_第4页
第4页 / 共8页
Nginx+Tomcat+Session 高性能群集搭建.docx_第5页
第5页 / 共8页
点击查看更多>>
下载资源
资源描述

Nginx+Tomcat+Session 高性能群集搭建.docx

《Nginx+Tomcat+Session 高性能群集搭建.docx》由会员分享,可在线阅读,更多相关《Nginx+Tomcat+Session 高性能群集搭建.docx(8页珍藏版)》请在冰豆网上搜索。

Nginx+Tomcat+Session 高性能群集搭建.docx

Nginx+Tomcat+Session高性能群集搭建

【Nginx+Tomcat+Session高性能群集搭建】

随着IT行业的发展,linux服务器在企业中应用广泛,人们对linux上的应用服务要求也越来越高,早先的apache服务器、apache有优点也有不足,apache渐渐不能满足人们的要求,目前nginx被大量采用做高性能web服务器,无论是个人网站还是大型门户网站都在使用nginx作为web搭建web服务器的首选。

接下来我们亲自来搭建一个属于自己的高性能web服务器,并且带故障自动转移的群集、和负载均衡服务器。

一、Nginx+Tomcat+Session高性能群集服务搭建,本文采用目前主流版本搭建,搭建环境及版本如下列表:

系统版本:

Centos5.364位系统

Nginx版本为:

nginx-0.8.54.tar.gz

Jdk版本为:

1.6.0_18_64

Tomcat版本为:

ApacheTomcat/6.0.30

其他相似版本也可以!

安装服务所需的包如下下载路径:

本网站集成部分下载:

jdk请到以下网站下载:

请选择自己系统版本的jdk。

【Tomcat下载地址】

【Nginx-0.8.54下载】

二、首先安装Nginx:

安装nginx之前需要安装pcre包和zlib以支持重写,正则以及网页压缩等等】

把所需的包下载到/usr/src下【根据自己的习惯,路径可以改变】

(1)首先安装pcre:

cd/usr/src&&tarxzfpcre-8.01.tar.gz&&cdpcre-8.01&&./configure--prefix=/usr/local/pcre&&make&&makeinstall

(2)、然后再安装nginx:

【给nginx安装jvmroute模块】

cd/usr/src&&svncheckouthttp:

//nginx-upstream-jvm-&&useraddwww&& tarxzfnginx-0.8.54.tar.gz&&cdnginx-0.8.54&& patch-p0<../nginx-upstream-jvm-route-read-only/jvm_route.patch&& ./configure--prefix=/usr/local/nginx-0.8--with-http_stub_status_module--with-openssl=/usr/--with-pcre=/usr/src/pcre-8.01 --add-module=../nginx-upstream-jvm-route-read-only  --user=www--group=www&&make&&makeinstall

【nginx注意*–with-pcre=/usr/src/pcre-8.01指向的是源码包解压的路径,而不是安装的路径,否则会报

make[1]:

***[/usr/local/pcre/Makefile]Error127错误】

Nginx安装完毕!

我们先不着急nginx配置文件的配置,先来修改tomcat配置文件:

三、Tomcat安装配置:

(1)、将所需的包下载至/usr/src目录;首先安装jdk:

chmodo+xjdk*&&./jdk*;程序包会提示按回车键,我们根据提示安装即可,解压完毕,会在当前目录生成jdk1.6.0_18这个文件夹,

mkdir-p/usr/java&&mvjdk1.6.0_18/usr/java/下

vi/etc/profile最后面加入以下语句:

exportJAVA_HOME=/usr/java/jdk1.6.0_18

exportCLASSPATH=$CLASSPATH:

$JAVA_HOME/lib:

$JAVA_HOME/jre/lib

exportPATH=$JAVA_HOME/bin:

$JAVA_HOME/jre/bin:

$PATH:

$HOMR/bin

source/etc/profile//使环境变量马上生效

java–version//查看java版本,显示版本是1.6.0_18,并且是64位的证明安装成功!

【JavaHotSpot(TM)64-BitServerVM(build16.0-b10,mixedmode)】

cd/usr/src&&tarxzfapache-tomcat-6.0.30.tar.gz

解压完成执行:

mvapache-tomcat-6.0.30/usr/local/tomcat_1&&cp/usr/local/tomcat_1/usr/local/tomcat_2-r

【移动到/usr/local下并重命名为tomcat_1文件夹,并cp一个tomcat_2】

部署两个Tomcat群集做负载均衡用!

(2)、设置tomcat的java变量

cd/usr/local/tomcat_1/bin/&&visetenv.sh创建一个setenv.sh脚本文件,添加如下语句即可

JAVA_HOME=/usr/java/jdk1.6.0_18

JAVA_JRE=/usr/java/jdk1.6.0_18/jre

并且拷贝setenv.sh文件到tomcat_2/bin/下:

cp-p/usr/local/tomcat_1/bin/setenv.sh/usr/local/tomcat_2/bin下即可!

保存退出

检查两个tomcat下bin目录的*.sh文件是否有可执行权限,如果没有则进入到相应的目录执行chmodo+x*.sh即可!

给两个tomcat分别创建不同的目录如下:

mkdir-p/usr/webapps/{www_1,www_2}

(3)、设置Tomcat的server.xml文件:

【以下是我的tomcat配置文件具体内容,本想已附件的形式发的,本博客目前还不支持附件功能,重要修改的地方供大家参考,如果把所有配置都粘贴在这里,显示有问题,所有用了两个web链接!

这样一来部分解释就产生了影响。

不明白的欢迎留言】

这个是完整的server.xml文件下载地址:

tomcat_2的配置文件下载地址:

两个Tomcat配置的cluster里面的端口分别为4000、4001,必须设置成不同的端口;而且得分别设置两个jvmroute名称,一会在nginx中会用到!

配置Tomcatsession会话复制:

分别在两个tomcat的conf下web.xml文件里面加入如下一行即可:

配置完毕后,我们测试一下广播

java-cptomcat-replication.jarMCaster224.0.0.145564Terminal1

java-cptomcat-replication.jarMCaster224.0.0.145564Terminal2

如果不报错则能正常广播

tomcat-replication.jar下载:

http:

//cvs.apache.org/~fhanik/tomcat-replication.jar

如果是两台机器的话,可以用tcpdump抓包看看!

Tomcat配置完毕,启动两个tomcat,先启动tomcat1,tomcat_1启动日志如下:

信息:

InitializingCoyoteHTTP/1.1onhttp-8080

2011-3-1819:

56:

21org.apache.catalina.startup.Catalinaload

信息:

Initializationprocessedin1088ms

2011-3-1819:

56:

21org.apache.catalina.core.StandardServicestart

信息:

StartingserviceCatalina

2011-3-1819:

56:

21org.apache.catalina.core.StandardEnginestart

信息:

StartingServletEngine:

ApacheTomcat/6.0.18

2011-3-1819:

56:

21org.apache.catalina.ha.tcp.SimpleTcpClusterstart

信息:

Clusterisabouttostart

2011-3-1819:

56:

21org.apache.catalina.tribes.transport.ReceiverBasebind

信息:

ReceiverServerSocketboundto:

/192.168.2.79:

4000

2011-3-1819:

56:

21org.apache.catalina.tribes.membership.McastServiceImplsetupSocket

信息:

SettingclustermcastsoTimeoutto500

2011-3-1819:

56:

21org.apache.catalina.tribes.membership.McastServiceImplwaitForMembers

信息:

Sleepingfor1000millisecondstoestablishclustermembership,startlevel:

4

2011-3-1819:

56:

22org.apache.catalina.tribes.membership.McastServiceImplwaitForMembers

信息:

Donesleeping,membershipestablished,startlevel:

4

2011-3-1819:

56:

22org.apache.catalina.tribes.membership.McastServiceImplwaitForMembers

信息:

Sleepingfor1000millisecondstoestablishclustermembership,startlevel:

8

2011-3-1819:

56:

23org.apache.catalina.tribes.membership.McastServiceImplwaitForMembers

信息:

Donesleeping,membershipestablished,startlevel:

8

2011-3-1819:

56:

23org.apache.catalina.ha.deploy.FarmWarDeployerstart

严重:

FarmWarDeployercanonlyworkashostclustersubelement!

2011-3-1819:

56:

23org.apache.catalina.ha.session.DeltaManagerstart

信息:

RegistermanagertoclusterelementEnginewithnameCatalina

2011-3-1819:

56:

23org.apache.catalina.ha.session.DeltaManagerstart

信息:

Startingclusteringmanagerat

2011-3-1819:

56:

23org.apache.catalina.ha.session.DeltaManagergetAllClusterSessions

信息:

Manager[localhost#]:

skippingstatetransfer.Nomembersactiveinclustergroup.

2011-3-1819:

56:

23org.apache.catalina.ha.session.JvmRouteBinderValvestart

信息:

JvmRouteBinderValvestarted

2011-3-1819:

56:

23org.apache.coyote.http11.Http11Protocolstart

信息:

StartingCoyoteHTTP/1.1onhttp-8080

2011-3-1819:

56:

24mon.ChannelSocketinit

信息:

JK:

ajp13listeningon/0.0.0.0:

8411

2011-3-1819:

56:

24org.apache.jk.server.JkMainstart

信息:

JkrunningID=0time=0/42config=null

2011-3-1819:

56:

24org.apache.catalina.startup.Catalinastart

信息:

Serverstartupin2676ms

Tomcat_2的日志如下:

000,{-64,-88,2,79},4000,alive=86901,id={784225-19-10236410-769369-43457695-112},payload={},command={},domain={},].Thisoperationwilltimeoutifnosessionstatehasbeenreceivedwithin60seconds.

2011-3-1819:

57:

48org.apache.catalina.tribes.group.interceptors.ThroughputInterceptorreport

信息:

ThroughputInterceptorReport[

TxMsg:

1messages

Sent:

0.00MB(total)

Sent:

0.00MB(application)

Time:

0.01seconds

TxSpeed:

0.04MB/sec(total)

TxSpeed:

0.04MB/sec(application)

ErrorMsg:

0

RxMsg:

1messages

RxSpeed:

0.00MB/sec(since1stmsg)

Received:

0.00MB]

2011-3-1819:

57:

48org.apache.catalina.ha.session.DeltaManagerwaitForSendAllSessions

信息:

Manager[localhost#];sessionstatesendat11-3-18下午7:

57receivedin125ms.

2011-3-1819:

57:

48org.apache.catalina.tribes.group.interceptors.ThroughputInterceptorreport

信息:

ThroughputInterceptorReport[

TxMsg:

2messages

Sent:

0.00MB(total)

Sent:

0.00MB(application)

Time:

0.05seconds

TxSpeed:

0.02MB/sec(total)

TxSpeed:

0.02MB/sec(application)

ErrorMsg:

0

RxMsg:

2messages

RxSpeed:

0.00MB/sec(since1stmsg)

Received:

0.00MB]

2011-3-1819:

57:

49org.apache.catalina.ha.session.JvmRouteBinderValvestart

信息:

JvmRouteBinderValvestarted

2011-3-1819:

57:

49org.apache.coyote.http11.Http11Protocolstart

信息:

StartingCoyoteHTTP/1.1onhttp-8081

2011-3-1819:

57:

49mon.ChannelSocketinit

信息:

JK:

ajp13listeningon/0.0.0.0:

8412

2011-3-1819:

57:

49org.apache.jk.server.JkMainstart

信息:

JkrunningID=0time=0/34config=null

2011-3-1819:

57:

49org.apache.catalina.startup.Catalinastart

信息:

Serverstartupin2962ms

如果有报错或者请查看原因!

skippingstatetransfer.Nomembersactiveinclustergroup.”

mcastBindAddress没有添加或添加得不对

【如上报错,如果启动其中一个报的错,而且已经修改了mcastBindAddress,此时还是有报错,我们可以不用管,在启动另一个tomcat看看,第二个tomcat没有Nomembersactiveinclustergroup,则表示两个tomcat通信正常。

四、最后配置Nginx:

【贴出nginx.conf配置文件的内容,下载地址如下:

配置文件需要注意的地方:

http

{

upstreambackend{

server192.168.2.79:

8080srun_id=tomcat1;

#【tomcat1是我tomcat_1server.xml里面配置的jvmroute=tomcat1】

server192.168.2.79:

8081srun_id=tomcat2;

#【tomcat2是我tomcat_2server.xml里面配置的jvmroute=tomcat2】

jvm_route$cookie_JSESSIONID|sessionidreverse;

#【配置jvmroute、session会话】

}

配置完毕后,新建/usr/webapps/www_1/index.jsp测试页面

<%@pagelanguage="java"import="java.util.*"pageEncoding="UTF-8"%>

<%

%>

<%out.print(request.getSession());%>

<%out.println(request.getHeader("Cookie"));%>

tomcat_2的发布目录index.jsp内容为:

<%@pagelanguage="java"import="java.util.*"pageEncoding="UTF-8"%>

<%

%>

<%out.print(request.getSession());%>

<%out.println(request.getHeader("Cookie"));%>

启动nginx即可!

最后测试!

在同一个浏览器窗口下ctrl+f5刷新,都是同一个tomcat内容,它不会跳转到另一tomcat

http:

//192.168.2.79:

81结果如下:

org.apache.catalina.session.StandardSessionFacade@2d7aece8

JSESSIONID=FEB19E24719ED666D1C9C50A7A09A2BA.tomcat2

另一个浏览器窗口为:

org.apache.catalina.session.StandardSessionFacade@259e215b

rtime=0;ltime=1298014951125;cnzz_eid=85744900-1298010049-;Hm_lvt_0e74098a87be059a433e5a74f1b5fecf=1298014951312;Hm_lvt_b7c035fd79b2c378053e06c86493de76=1300439158373;JSESSIONID=B2574ABB491F50F37162479BD3FE761C.tomcat1

无论你怎么刷新同一个窗口下都不会变!

而且当你down掉一个tomcat后,会自动转移会话到另一个tomcat上!

用户是感觉不到服务挂掉的!

当两个服务正常的时候,可以负载均衡、当一个服务down掉时,可以自动剔除它,并复制它的会话!

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 农林牧渔 > 林学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1