APACHE-TOMCAT集群环境部署
―――――――――――――――――�CShanks
―――――――――――――――――――――――――――――――――――――――-
本集群不涉及session同步,但是会记录session会话。
1.1 OS:linux RedHat5u51.2 Soft:
httpd-2.2.17.tar.gz下载地址:http://httpd.apache.org/download.cgi
apache-tomcat-5.5.17.tar.gz下载地址:http://tomcat.apache.org/download-60.cgi
jdk1.6.0_22下载地址:http://java.sun.com/javase/downloads/previous.jsp
tomcat-connectors-1.2.31-src.tar.gz http://tomcat.apache.org/download-connectors.cgi
1.2.1 soft说明
apache:没啥说的,提供web jdk:java环境
tomcat:java容器 jk:调度器
1.3 安装部署步骤1.3.1 部署前准备
由于我在部署前发现在/usr/local/下跑着一个tomcat,所以只得新建个用户wangpo,在wangpo家目录下安装配置。这块需要注意的就是一个权限。部署结束时wangpo~目录下有4个目录:apache_test src tomcat_test1 tomcat_test2,apache_test是apache的主目录,在这个目录中,htdocs也就是web-root目录的权限要是wangpo.wangpo的,其他的目录权限可以是root的,并且我将apache的运行用户和用户组都改成了wangpo;tomcat_test1和tomcat_test2是tomcat主目录,这两个目录的所属者、组都是wangpo。到此,前期准备结束。
1.3.2 Jdk
其实由于之前已经有过java环境,所以不需要再次部署,不过我还是写上步骤
#chmod 755 jdk-1_5_0_16-linux-i586.bin
#./jdk-1_5_0_16-linux-i586.bin
# mv jdk-1_5_0_16 /usr/local/
到此JDK已经安装完成
到/usr/bin目录下,把原用的java,javac文件删除:
最好先备份
rm -rf java
rm -rf javac
在/usr/bin 下建立 软连接 java
ln -s /usr/local/jdk-1_5_0_16/bin/java /usr/bin/java
ln -s /usr/local/jdk-1_5_0_16/bin/javac /usr/bin/javac
测试下,shell>java;javac
为了方便下在的工作建立两个软链接:
ln -s /usr/local/jdk-1_5_0_16 /usr/local/jdk
ln -s /usr/local/jdk-1_5_0_16/jre /usr/local/jre
设置环境变量
JAVA_HOME=/usr/local/jdk
export JAVA_HOME
JRE_HOME=/usr/local/jre
export JRE_HOME
CLASSPATH=/usr=/usr/local/tomcat/common/lib/:/usr/local/jdk/lib:/usr/local/jre/lib
export CLASSPATH
PATH=$PATH:/home/wangpo/tomcat_test1/bin/:/home/wangpo/tomcat_test2/bin/:/home/wangpo/apache_test/bin:/usr/local/jdk/bin:/usr/local/jre/bin
export PATH
1.3.3 Apache
安装
我的apache开的是81端口,测试嘛,无所谓,不过在生产环境中最好改成大号,要不老是root启动,op得烦死。
tar zxf httpd-2.2.17.tar.gz && cd http -2.2.17
./configure �Cprefix=/usr/local/apache2 �Cenable-mods-shared=all �Cenable-cgi �Cenable-rewrite �Cwith-mpm=worker �Cenable-module=most �Cenable-proxy �Cenable-proxy-ajp �Cenable-forward �Cenable-proxy-connect �Cenable-proxy-http �Cenable-so �Cenable-deflate �Cenable-headers �Cenable-include
上面的如果不行,执行这个
./configure �Cprefix=/usr/local/apache2 �Cenable-module=most �Cenable-proxy �Cenable-rewrite �Cwith-mpm=worker �Cenable-proxy-ajp �Cenable-forward �Cenable-proxy-connect �Cenable-proxy-http �Cenable-so �Cenable-deflate �Cenable-headers �Cenable-include
# ./configure �Cprefix=/usr/local/apache2 �Cenable-so (备份原始记录)
#./configure �Cprefix=/usr/local/apache2 �Cenable-so �Cenable-ssl �Cenable-rewrite �Cwith-ssl=/usr/local/ssl �Cenable-ssl=shared (安装 open ssl 用到的安装方法) (按这个要求安装)
#./configure �Cprefix=/usr/local/apache2 �Cenable-rewrite �Cwith-ssl=/usr/local/ssl �Cenable-ssl=shared (CA 的要求)
配置
Cd /home/wangpo/apache_test/conf
Vim http.conf
―――――――――――――――――――――――――――――――――――――
LoadModule jk_module modules/mod_jk.so #调用jk模块
<VirtualHost 172.22.1.82:81> #建个虚拟主机
DocumentRoot /home/wangpo/apache_test/htdocs
Errorlog ”/home/wangpo/apache_test/logs/tom_test_error.log”
JkMount /*.jsp controller #去找controller调度器
JkMount /*.txt controller
</VirtualHost>
JkWorkersFile conf/workers.properties #调度文件的位置
JkRequestLogFormat “%w %V %T %r”
JkLogFile “/home/wangpo/apache_test/logs/mod_jk.log”
JkLogLevel error
JkOptions +ForwardURICompatUnparsed
Vim workers.properties
worker.list=controller
#========worker1========
worker.worker1.port=8010
worker.worker1.host=172.22.1.82
worker.worker1.type=ajp13
worker.worker1.lbfactor = 1
#========worker2========
worker.worker2.port=8011 #tomcat端AJP监听的端口
worker.worker2.host=172.22.1.82 #主机名也行
worker.worker2.type=ajp13 #用AJP-13协议
worker.worker2.lbfactor = 1 #权重
#========controller,负载均衡控制器========
worker.controller.type=lb #调度算法
worker.controller.balance_workers=worker1,worker2 #这里的worker1只要与此文件里的一致就行,不用在tomcat上做任何调整
worker.controller.sticky_session=1 #开启会话记录,同一session找同一个tomcat,true和1都行
1.3.4 Jk
tar zxf tomcat-connectors-1.2.31-src.tar.gz&&cd tomcat-connectors-1.2.31-src/native
./buildconf.sh
./configure �Cwith-apxs=/home/wangpo/apache_test/bin/apxs&&make && make install
之后就会在/home/wangpo/apache_test/modules下生成mod_jk.so
1.3.5 Tomcat
tar zxf apache-tomcat-5.5.17.tar.gz
mv apache-tomcat-5.5.17 /home/wangpo/tomcat_test1
cp /home/wangpo/tomcat_test1 /home/wangpo/tomcat_test2
―――――――――――――――――――――――――――――――――――――-
vim /home/wangpo/tomcat_test1/conf/server.xml
<Server port=”8006″ shutdown=”SHUTDOWN”> #把8005改成8006
<Connector port=”8081″ maxHttpHeaderSize=”8192″ #把8080改成8081
<!�C Define an AJP 1.3 Connector on port 8009 �C> #把8009改成8010
<Connector port=”8010″
―――――――――――――――――――――――――――――――――――――
vim /home/wangpo/tomcat_test2/conf/server.xml
<Server port=”8007″ shutdown=”SHUTDOWN”> #把8005改成8007
<Connector port=”8082″ maxHttpHeaderSize=”8192″ #把8080改成8082
<!�C Define an AJP 1.3 Connector on port 8009 �C> #把8009改成8011
<Connector port=”8011″
如果需要session记录则需要改jvm标识,要与apache中jk调度文件内的记录一致
<Engine name=”Catalina” defaultHost=”localhost” jvmRoute=”worker1″>
不需要的话那就算了,就不用调整了。。。
1.4 启动服务
Cd /home/wangpo/apache_test/bin&&./apachectl start 之后检查81端口
Cd /home/wangpo/tomcat_test1/bin&&./startup.sh 检查8006、8081、8010
Cd /home/wangpo/tomcat_test2/bin&&./startup.sh 检查8007、8082、8011
1.5 负载均衡的测试
Apache
――――――――――――――――――――――――――――――――――――――-
Cd /home/wangpo/apache_test/htdocs&&vim index.html
<html><body><h1>It a test for tomcat!</h1></body></html>
<p><a href=”http://lalalalalal:81/tom_test/test.jsp”>tomcat_test</a></p>
――――――――――――――――――――――――――――――――――――――-
Tomcat-1
Cd /home/wangpo/tomcat_test1/webapps&&mkdir tom_test && chown �CR wangpo.wangpo tom_test && cd tom_test &&vim test,jsp
<HTML>
<HEAD>
<TITLE>JSP测试页面</TITLE>
</HEAD>
<%out.println(“<h1>Hello World! tom111111111111111111111111</h1>”);%>
</HTML>
――――――――――――――――――――――――――――――――――――――
Tomcat-2
Cd /home/wangpo/tomcat_test2/webapps&&mkdir tom_test && chown �CR wangpo.wangpo tom_test && cd tom_test &&vim test,jsp
<HTML>
<HEAD>
<TITLE>JSP测试页面</TITLE>
</HEAD>
<%out.println(“<h1>Hello World! Tom22222222222222</h1>”);%>
</HTML>
之后访问
http://lalalalalal:81 ―à访问apache的index.html
或者直接访问jsp页面
http://lalalalalal:81/tom_test/test.jsp 如果刷新后111111和22222交替出现就ok了
不过如果当前环境下开启了session记录的话,在同一session下看到的只会是一个页面。