【php精品源码栏目提醒】:网学会员鉴于大家对php精品源码十分关注,论文会员在此为大家搜集整理了“【精品】apache2.2.16+mod_jk.1.2.30+tomcat7.0.2集群session复制 - 其它资料”一文,供大家参考学习
Apachetomcat 集群session 复制作者:吴钢奇时间:2010/09/23MSN:w7374520hotmail.com目 标 : 在 服 务 器 上 搭 建 1 个 apache4 个 tomcat 应 用 , tomcat 之 间 实 现 session 复 制 。
Tomcat 解析 所有的网 页, apache 此刻 的作用就 是做代理 。
参考了 很多网上 好文档,非常感谢前人无私奉献,谢谢!1、 环境硬件:一个四核 3.0CPU,4G 内存,200GSATA 硬盘系统:Redhat AS 5.3
源码包下载:1、Httpd 下载http://mirror.bjtu.edu.cn/apache//httpd/httpd-2.2.16.tar.gz2、Tomcat 下载http://apache.etoak.com//tomcat/tomcat-7/v7.0.2-beta/bin/apache-tomcat-7.0.2.tar.gz3、mod_jk 下载地址:http://www.apache.org/dist/tomcat/tomcat-connectors/jk/source/jk-1.2.30/tomcat-connectors-1.2.30-src.tar.gz2、 安装 apacherootadman cd /usr/local/src/ 进入
源码包下载目录,这个可以随便定rootadman src tar zxvf httpd-2.2.16.tar.gz 解压缩rootadman src cd httpd-2.2.16 进入解压目录rootadman httpd-2.2.16 ./configure --prefix/usr/local/apache2 --enable-cache configure 参数根据自己的需要添加 --enable-mem-cache 可以使用 —help 获得相关参数 --with-mpmprefork --enable-so --enable-rewrite --enable-sslrootadman httpd-2.2.16 make 编译rootadman httpd-2.2.16 make install 安装rootadman httpd-2.2.16 cd /usr/local/apache2rootadman apache2 vim conf/httpd.conf52 LoadModule foo_module modules/mod_foo.so53 LoadModule jk_module modules/mod_jk.so 添加 jk 模块,模块是编译 jk1.2.30 得到106 DocumentRoot /usr/local/webapps 修改文档主目录133 修改文档主目录146 Options Indexes FollowSymLinks158 Order allowdeny159 Allow from all160161416 Include conf/mod_jk.conf 添加 jk 配置文件,在末尾直接添加如 果 apache 日 志 出 现 : session cache no configuration 警 告 信 息 请 添 加 下 面 两 行 。
可 以解决。
417 SSLSessionCache shmcb:/usr/local/apache2/logs/ssl_scache512000418 SSLSessionCacheTimeout 300rootadman apache2 service httpd start 测试 是 否 可以 正 常 启动 , 看 日志 是 否 有报错rootadman apache2 netstat -naptlgrep 80 查看 80 端口是否启动3、 安装 jk 模块rootadman apache2 cd /usr/local/src/ 进入下载目录rootadman src tar zxvf tomcat-connectors-1.2.30-src.tar.gz 解压缩rootadman src cd tomcat-connectors-1.2.30-src 进入目录rootadman tomcat-connectors-1.2.30-src cd native/ 进入 native,必须的rootadman native pwd 查看绝对路径/usr/local/src/tomcat-connectors-1.2.30-src/nativerootadman native ./configure --with-apxs/usr/local/apache2/bin/apxs 指定 apxs 路径rootadman native make 编译,但是不需要安装,我们需要的只是mod_jk.so 模块而已,这一步已经生成了。
但是我不知道它生成的位置,使用 find 查找rootadman native find /usr/local/src/tomcat-connectors-1.2.30-src -name mod_jk.so 找 so/usr/local/src/tomcat-connectors-1.2.30-src/native/apache-2.0/.libs/mod_jk.so/usr/local/src/tomcat-connectors-1.2.30-src/native/apache-2.0/mod_jk.sorootadman native cp -ar apache-2.0/mod_jk.so /usr/local/apache2/modules/ 找到mod_jk 后拷贝到 apache 目录中的 module 下。
到 httpd.conf 添加一行加载模块,这个上面已经做了LoadModule jk_module modules/mod_jk.so四、安装 tomcatrootadman native cd /usr/local/src/rootadman src tar zxvf apache-tomcat-7.0.2.tar.gzrootadman src cp -ar apache-tomcat-7.0.2 /usr/local/apache-tomcat-7.0.2-lb1rootadman src cp -ar apache-tomcat-7.0.2 /usr/local /apache-tomcat-7.0.2-lb2rootadman src cp -ar apache-tomcat-7.0.2 /usr/local /apache-tomcat-7.0.2-lb3rootadman src cp -ar apache-tomcat-7.0.2 /usr/local /apache-tomcat-7.0.2-lb4rootadman src vim /usr/local/adsit/apache-tomcat-7.0.2-lb1/conf/server.xml修改第一处:修改关闭 tomcat 端口,第一个默认为 8005,第二个修改为 8006,第三个修改为 8007,第四个修改为 8008修改第二处: 修改 tomcat 提供服务端口,默认为 8080。
第一个修改为 8081,第二个修改 8082,第三个修改 8083,第四个修改 8084修 改 第 三 处 : 此 处 的 端 口 是 workers.properties 文 件 中 的 port, 作 用 是 apache 连 接tomcat 的连接端 口。
第一 个修改过 为 8010,第二个 修改 8020,第 三个修改 8030,第四个修改 8040修改第四处:修改 tomcat 网站文件存放主目录的路径修 改 第 五 处 : 在 前 面 添 加 两 行 context 代 码 , 这 段 代 码 的 意 思 是 说在/usr/local/webapps目录下有目录,是两个工程。
/代表访问 admin 目录,访问方式:http://ip /site 代表访问 test 目录,访问方式:http://ip/testrootadman src cat /usr/local/adsit/tomcat-start7.sh 测试 4 个 tomcat 启动是否正常source /etc/profile/usr/local/apache2/bin/apachectl start/usr/local/adsit/apache-tomcat-7.0.2-lb1/bin/startup.sh/usr/local/adsit/apache-tomcat-7.0.2-lb2/bin/startup.sh/usr/local/adsit/apache-tomcat-7.0.2-lb3/bin/startup.sh/usr/local/adsit/apache-tomcat-7.0.2-lb4/bin/startup.shsleep 20s/usr/local/apache2/bin/apachectl startrootadman src netstat -naptl more 查看是否有 8081、8082、8083、8084tcp 0 0 :::8081 ::: LISTEN 4410/javatcp 0 0 :::8082 ::: LISTEN 4427/javatcp 0 0 :::8083 ::: LISTEN 4437/javatcp 0 0 :::8084 ::: LISTEN 4461/java5、 利用 mod_jk 关联 apache 和 tomcat到 http.conf 中添加,我们上面已经添加,就是使用 Include 参数指定 mod_jk 路径rootadman src vim /usr/local/apache2/conf/mod_jk.conf 新建并配置这个文件JkWorkersFile conf/workers.properties JkLogFile logs/mod_jk.log 记录日志JkLogLevel error 日志级别JkShmFile logs/mod_jk.shm 内存共享文件JkMount /. balancer 加载根目录所有的文件,balancer 可以随便取名JkMount /adman/. balancer 只是需要 worker.listbalancer 一致即可JkMount /digieq/. balancer你 可 以 从 /usr/local/src/tomcat-connectors-1.2.30-src/conf/workers.properties 中 拷 贝 到apache 的 conf 中,自己也可以新建。
rootadman src vim /usr/local/apache2/conf/workers.propertiesrootadman cat /usr/local/apache2/conf/workers.propertiesworker.listbalancer 定义负载均衡的名称worker.balancer.typelb 定义负载均衡的类型,为 lbworker.balancer.error_escalation_time0 切换错误状态时间worker.balancer.max_reply_timeouts10worker.lb1.referenceworker.template lb1 参考 worker.template 工作模板worker.lb1.hostlocalhost lb1 的 ip 地址worker.lb1.port8010 lb1 端口,这里是 ajp 端口,不是网站端口worker.lb1.activationA A:active 模式 D:sticky 模式 S:不使用worker.lb2.referenceworker.templateworker.lb2.hostlocalhostworker.lb2.port8020worker.lb2.activationAworker.lb3.referenceworker.templateworker.lb3.hostlocalhostworker.lb3.port8030worker.lb3.activationAworker.lb4.referenceworker.templateworker.lb4.hostlocalhostworker.lb4.port8040worker.lb4.activationAworker.template.typeajp13 上 面 lb1lb2lb3lb4 参 考 下 面 的 值 worker.template, 协 议ajp13worker.template.socket_connect_timeout5000 套 接 字 连 接 超 时 为 5000 毫 秒 , 默 认 为0worker.template.socket_keepalivetrue 开启保持为真,默认为 falseworker.template.ping_modeA 使 用 cping/cpong 模 式 , 有 CPIA 四 个 模 式 。
A 全选worker.template.ping_timeout10000 探测 cping/cpong 超时间默认 10000 毫秒worker.template.connection_pool_minsize0 连接池关闭最小时间worker.template.connection_pool_timeout600 连接池 600 秒worker.template.reply_timeout300000 答复超时 300000 毫秒worker.template.recovery_options3 重试次数worker.balancer.balance_workerslb1lb2lb3lb4 负载均衡的工作者名称worker.balancer.sticky_session1 1 代表为 true,0 代表为 false。
worker.balancer.sticky_session_forcetruerootadman worker.balancer.sticky_session:这 个 选 项网 上 解 释很 多 。
我也 没 弄 明白 啥 意 思。
实 验说话吧。
1true:假如 A 服务器接受了请求,以后的请求都会继续发给 A 服务器,B 接受了请求一直发给 B 服务器。
会话不会轮询,session 保持很好,建议使用。
0false:假如 A 服务器接受了请求,按 F5 再次刷新结果到了 B 服务器,再按一次又到 了 C 服 务 器。
会 话 会轮 询 , session 保 持 不好 不 稳 定, session 复制 给 所 有服 务 器 ,但是立马就断了。
所以使用 true 比较多,我这里也设置了 1。
总 结 : worker.balancer.sticky_session 请 求 是 发 送 给 一 台 服 务 器 ( true) , 还 是 发 送 给多 台 服 务 器 ( false) 。
Session 复 制 只 与 tomcat 集 群 配 置 有 关 , 与 这 个 sticky 无 关 。
但 是 sticky 会 影 响 session 复 制 。
如 果 这 个 选 项 为 真 那 么 session 保 持 良 好 , 如 果 为 假那么需要所有服务器复制 session 所以不稳定。
6、 测试负载均衡建立一个目录 admin.里面新建一个 test.jsp内容为 :观察日志发现打印相互交替rootadman tail -f /usr/local/adsit/apache-tomcat-7.0.2-lb1/logs/catalina.outrootadman tail -f /usr/local/adsit/apache-tomcat-7.0.2-lb2/logs/catalina.outrootadman tail -f /usr/local/adsit/apache-tomcat-7.0.2-lb3/logs/catalina.outrootadman tail -f /usr/local/adsit/apache-tomcat-7.0.2-lb4/logs/catalina.out说明 apachetomcat 负载均衡已经做成功了。
七、实现 tomcat 之间的 session 复制rootadman vim /usr/local/adsit/apache-tomcat-7.0.2-lb1/conf/server.xml添加如下内容: 去掉注释修改 jvmRoute,并且 lb1 必须和 workers.properties 中 tomcat 名称一致,下面这么一段是从官方网站拷贝的,我们只有稍微修改 至此给每 个 tomcat 添加 一段 cluster 代码 ,这些代 码是从 tomcat 网站 中拷贝的 。
然后我需要修改的只有几个选项。
1、 tomcat 名称 2、address192.168.1.7 本机 IP 地址 3、port4001 修改 4002、4003、4004 八、测试 session 复制 1、四个/usr/local/adsit/apache-tomcat-7.0.2-lb1—4/conf/server.xml 都配置好了。
那么我就可以测试了。
rootadman cat /usr/local/adsit/tomcat-start7.sh 启动 tomcat、httpd source /etc/profile /usr/local/apache2/bin/apachectl start /usr/local/adsit/apache-tomcat-7.0.2-lb1/bin/startup.sh /usr/local/adsit/apache-tomcat-7.0.2-lb2/bin/startup.sh /usr/local/adsit/apache-tomcat-7.0.2-lb3/bin/startup.sh /usr/local/adsit/apache-tomcat-7.0.2-lb4/bin/startup.sh sleep 20s /usr/local/apache2/bin/apachectl start rootadman rootadman netstat -naptlmore tcp 0 0 ::ffff:192.168.1.7:4001 ::: LISTEN 7923/java tcp 0 0 ::ffff:192.168.1.7:4002 ::: LISTEN 7933/java tcp 0 0 ::ffff:192.168.1.7:4003 ::: LISTEN 7944/java tcp 0 0 ::ffff:192.168.1.7:4004 ::: LISTEN 8030/java 2、 tomcat 已 经 成 启 动 了 , 端 口 也 在 监 听 。
我 现 在 测 试 session 复 制 , 保 存 为index.jsp 测试代码如下:Server Info: 0 String dataValue request.getParameterdataValue session.setAttributedataName dataValue out.printSession 列表 Enumeration e session.getAttributeNames while e.hasMoreElements String name Stringe.nextElement String value session.getAttributename.toString out.println name value System.out.println name value 名称: 值:3、然后在 admin 新建 WEB-INF 目录,WEB-INF 下新建 web.xml内容如下 TomcatDemo注意:在你的应用的 web.xml 加入 即可4、然后重启 apache 和 tomcat 应用 java 代码。
输入网址 http://192.168.1.7/admin到浏览器中输入名称和值,然后我们观察日志rootadman logs tail -f catalina.out 浏 览 器 转 发 到 了 lb1 上 , 我 查 看 lb1 日 志 打 印如下Ddddggggg ggggggggbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbsdfsad fsdfsddddddddddd dddddddddddddddddddddddda asssssssssssssssadf sdafrootadman ps –ef 查询到 lb1 的 pidrootadman kill 8720 杀死 lb1 的进程,报如下错误5、lb1 已经杀死了,我在此浏览器上刷新。
发现跳到了 lb4 上了,但是打印的内容复制过来了。
所以客户觉察不到的6、我们到 lb4 上查看日志,出现一下文字: Received member disappeared:org.apache.catalina.tribes.membership.MemberImpltcp://192 168 1 7:4001192 168 1 74001 alive588841 securePort-1 UDP Port-1 id60-81 93 33 66 -7 69 -62 -124 61 -4 104 -28 -123 -99 111 payload command66 65 66 89 4565 76 69 88 ...9 domain 7、至此 session 复制完成。
上一篇:
江西省高等学校大学生创新创业计划申请书
下一篇:
顶棚装饰工程施工