|
一、环境:
系统最小化安装,系统初使化脚本:
http://linuxops.blog.运维网.com/2238445/841849
系统环境:centos 5.8 x86_64
应用软件:所以应用软件都放在/usr/local/src目录下
httpd-2.2.22.tar.gz
apache-tomcat-7.0.26.tar.gz
jdk-7u4-linux-x64.gz
tomcat-connectors-1.2.37-src.tar.gz
所需服务器:
server1:192.168.8.222 -->安装httpd、apache-tomcat、jdk、tomcat-connectors
server2:192.168.8.223 -->安装apache-tomcat、jdk
二、安装apache
- cd /usr/local/src/
- tar zxf httpd-2.2.22.tar.gz
- cd httpd-2.2.22
- ./configure --prefix=/usr/local/apache2 --enable-modules=so --enable-so --enable-cache --enable-mem-cache --enable-rewrite --enable-ssl --with-mpm=prefork
- make;make install
- cd ..
三、安装tomcat、jdk
- 1.安装tomcat
- tar zxf apache-tomcat-7.0.26.tar.gz
- mv apache-tomcat-7.0.26 /usr/local/tomcat
- 2.安装jdk
- tar zxf jdk-7u4-linux-x64.gz
- mv jdk1.7.0_04 /usr/local/jdk
- 3.设置java、tomcat运行环境变量
- vi /etc/profile
- 在文件最后加入如下内容:
- #Set java & tomcat Environment
- JAVA_HOME=/usr/local/jdk
- export JAVA_HOME
- JRE_HOME=/usr/local/jdk/jre
- export JRE_HOME
- CLASSPATH=/usr=/usr/local/tomcat/common/lib/:/usr/local/jdk/lib:/usr/local/jdk/jre/lib
- export CLASSPATH
- PATH=$PATH:/usr/local/tomcat/bin/:/usr/local/apache/bin:/usr/local/jdk/bin:/usr/local/jdk/jre/bin
- export PATH
- TOMCAT_HOME=/usr/local/tomcat
- export TOMCAT_HOME
- 让环境变量立即生效:
- source /etc/profile
四、安装jk,整合apache和tomcat
- 1.安装jk
- tar zxf tomcat-connectors-1.2.37-src.tar.gz
- cd tomcat-connectors-1.2.37-src/native
- ./configure --with-apxs=/usr/local/apache2/bin/apxs --with-java-home=/usr/local/jdk
- make;make install
- 检测模块有没有生成
- 通过上面几步,会在/usr/local/apache2/modules/目录下产生mod_jk.so 这个模块文件
- 2.整合apache和tomcat
- 1.)修改apache配置文件/usr/local/apache2/conf/httpd.conf ,加入:Include conf/mod_jk.conf
- echo "Include conf/mod_jk.conf" >> /usr/local/apache2/conf/httpd.conf
- 2.)创建mod_jk.conf配置文件
- vi /usr/local/apache2/conf/mod_jk.conf
- 加入如下内容:
- # Load mod_jk module
- LoadModule jk_module modules/mod_jk.so
- # Where to find workers.properties
- JkWorkersFile conf/workers.properties
- # Where to put jk logs
- JkLogFile logs/mod_jk.log
- JkShmFile logs/mod_jk.shm
- # Set the jk log level [debug/error/info]
- JkLogLevel info
- # Select the log format
- JkLogStampFormat "[%a %b %d %H:%M:%S %Y] "
- # JkOptions indicate to send SSL KEY SIZE,
- JkOptions +ForwardKeySize +ForwardURICompat -ForwardDirectories
- # JkRequestLogFormat set the request format
- JkRequestLogFormat "%w %V %T"
- # Send JSPs for context /examples to worker named ajp13
- JkMount /* controller
- 3.配置JK调度器
- 创建JK配置文件
- cat /usr/local/apache2/conf/workers.properties
- #
- # workers.properties conf
- #
-
- # list the workers by name
- worker.list=controller #定义负载均衡名称
- worker.controller.type=lb #定义负载均衡类型,这里为lb
- worker.controller.error_escalation_time=0 #切换错误状态时间
- worker.controller.max_reply_timeouts=10
-
- # -------- server 1 ---------
- worker.jvm1.reference=worker.template #jvm1引用worker.template模板
- worker.jvm1.port=8009 #jvm1的ajp端口
- worker.jvm1.host=192.168.8.222 #jvm1的的IP
- worker.jvm1.lbfactor = 5
-
- # -------- server 2 ---------
- worker.jvm2.reference=worker.template
- worker.jvm2.port=8009
- worker.jvm2.host=192.168.8.223
- worker.jvm2.lbfactor = 1
- worker.jvm2.activation=A
- worker.template.type=ajp13
- worker.template.socket_connect_timeout=5000 #套接字连接超时为5000毫秒,默认为0
- worker.template.socket_keepalive=true #开启保持为真,默认为false
- worker.template.ping_mode=A #使用cping/cpong模式,有C,P,I,A四个模式,A表示选择所以模式
- worker.template.ping_timeout=10000 #探测cping/cpong超时间默认10000毫秒
- worker.template.connection_pool_minsize=0 #连接池关闭最小时间
- worker.template.connection_pool_timeout=600 #连接池600秒
- worker.template.reply_timeout=300000 #答复超时300000毫秒
- worker.template.recovery_options=3 #重试次数
- worker.controller.balance_workers=jvm1,jvm2 #负载均衡的客户名称
- worker.controller.sticky_session=0
- worker.controller.sticky_session_force=0
- #worker.balancer.sticky_session=1
PS: 这里worker.jvm1.port=8009的端口设置为tomcat server.xml配置文件中ajp13的默认端口!也可以自己定义,两边必须相同!
worker.controller.sticky_session=0
worker.controller.sticky_session_force=0
这是实现session复制的关键!
把worker.balancer.sticky_session=1 设置为1貌似不成,索性用上面的方法OK!
五、tomcat集群和session复制配置
- 1.server1上配置
- 1.)在/usr/local/tomcat/conf/server.xml 中修改Enginx节点信息,大概在103行:
- 把
- 修改成:
-
- 2.)加入Cluster节点信息,大概在110行左右处加入如下内容:
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
2.server2上配置
- 1.)在/usr/local/tomcat/conf/server.xml 中修改Enginx节点信息,大概在103行:
- 把
- 修改成:
-
- 2.)加入Cluster节点信息,大概在110行左右处加入如下内容:
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 3.修改web站点文件存放主目录路径
- 1.)apache配置文件要修改的地方
- 把下面两处修改成:
- DocumentRoot "/data/www/" #大概在104行
- #大概在131行
- 2.)tomcat配置文件修改成:
-
-
4.建立测试目录
- mkdir -p /data/www/
- cat /data/www/test.jsp
-
- 在/data/www目录下创建admin目录,再在admin目录下创建WEB-INF目录
- mkdir -p /data/www/admin/WEB-INF
- cd /data/www/admin/WEB-INF
- vi web.xml
- 加入如下内容:
-
- TomcatDemo
-
-
PS: 这个必须加进去,不然也实现不了复制!
在admin目录下创建测试代码:
- cat /data/www/admin/index.jsp
-
-
- Cluster App Test
-
- Server Info:
-
- 0) {
- String dataValue = request.getParameter("dataValue");
- session.setAttribute(dataName, dataValue);
- }
- out.print("Session 列表");
- Enumeration e = session.getAttributeNames();
- while (e.hasMoreElements()) {
- String name = (String)e.nextElement();
- String value = session.getAttribute(name).toString();
- out.println( name + " = " + value+"");
- System.out.println( name + " = " + value);
- }
- %>
-
- 名称:
-
- 值:
-
-
-
-
-
PS: 以上代码来源于网上!
浏览器测试结果:
http://192.168.8.222/admin/
http://blog.运维网.com/attachment/201207/162210180.jpg
再回到服务器上查看日志:
223服务器:
http://blog.运维网.com/attachment/201207/161827384.jpg
222服务器:
1.这里ID必须相同,且jvm1和jvm2来回切换!
2.ID不同,jvm1和jvm2来回切换只是实现了负载均衡!
后面的文章介绍: apache+tomcat集群用memcached保持session
apache+tomcat集群用apache的 proxy-ajp和proxy-balance模块保持session
后面陆续介绍nginx+tomcat集群!欢迎大家来逛逛!!哈哈。。。。
|
|
|