tomcat的部署及session绑定反代
Tomcat是由Apache軟件基金會下屬的Jakarta項目開發(fā)的一個Servlet容器,按照
Sun Microsystems提供的技術(shù)規(guī)范,實現(xiàn)了對Servlet和JavaServer Page(JSP)
的支持,并提供了作為Web服務(wù)器的一些特有功能,如Tomcat管理和控制平臺、
安全局管理和Tomcat閥等。由于Tomcat本身也內(nèi)含了一個HTTP服務(wù)器,它也可
以被視作一個單獨的Web服務(wù)器。但是,不能將Tomcat和Apache Web服務(wù)器混
淆,Apache Web Server是一個用C語言實現(xiàn)的HTTP web server;這兩個HTTP
web server不是捆綁在一起的。Apache Tomcat包含了一個配置管理工具,也可
以通過編輯XML格式的配置文件來進行配置。 摘自-wiki
規(guī)劃
?apache + mod_jk / mod_proxy ? 172.16.43.1(salve1.king.com)
?jdk , tomcat ? ? ? ? ? ? ? ? ?172.16.43.2(salve2.king.com)
?jdk , tomcat ? ? ? ? ? ? ? ? ?172.16.43.3(salve2.king.com)
1 .基本配置 jdk , tomcat (slave2.king.com , slave3.king.com)
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | i) 準(zhǔn)備jdk , tomcat的bin包 jdk-7u9-linux-x64.rpm apache-tomcat-7.0.42.tar.gz # ii) 安裝配置jdk rpm -ivh jdk-7u9-linux-x64.rpm vim?/etc/profile.d/java.sh export?JAVA_HOME=/usr/java/latest export?PATH=$JAVA_HOME/bin:$PATH # 退出編輯后重新執(zhí)行該腳本導(dǎo)出環(huán)境變量 .?/etc/profile.d/java.sh java --version # 可以看到如下信息 [root@slave2 ~]# java -version java version?"1.7.0_09" Java(TM) SE Runtime Environment (build 1.7.0_09-b05) Java HotSpot(TM) 64-Bit Server VM (build 23.5-b02, mixed mode) # 最后利用javac編譯helloworld確保成功 vim Hello.java public class Hello { ??public static void main(String[] args) { ????System.out.println("Hello Wolrd"); ??} } # 編譯java代碼 javac Hello.java # 運行java代碼 , 注意這里是 類名 java Hello |
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 | iii) 配置安裝tomcat tar?xf apache-tomcat-7.0.42.tar.gz -C?/usr/local ln?-sv?/usr/local/apache-tomcat-7.0.42?/usr/local/tomcat # vim?/etc/init.d/tomcat #!/bin/sh # Tomcat init script for Linux. # # chkconfig: 2345 96 14 # description: The Apache Tomcat servlet/JSP container. # JAVA_OPTS='-Xms64m -Xmx128m' JAVA_HOME=/usr/java/latest CATALINA_HOME=/usr/local/tomcat export?JAVA_HOME CATALINA_HOME # case?$1?in start) ??exec?$CATALINA_HOME/bin/catalina.sh start ;; stop) ??exec?$CATALINA_HOME/bin/catalina.sh stop;; restart) ??$CATALINA_HOME/bin/catalina.sh stop ??sleep?2 ??exec?$CATALINA_HOME/bin/catalina.sh start ;; *) ??echo?"Usage: `basename $0` {start|stop|restart}" ??exit?1 ??;; esac # # 編輯完畢后添加tomcat服務(wù)開機啟動 chmod?+x?/etc/init.d/tomcat chkconfig --add tomcat chkconfig tomcat on service tomcat start |
# 測試不改任何配置文件,tomcat默認(rèn)監(jiān)聽在8080端口,直接訪問
2. 反代配置 apache + mod_jk(ajp) / mod_proxy(ajp , http) + tomcat
| 1 2 3 4 | i) 準(zhǔn)備apache , tomcat-connectors(mod_jk)的源碼包 (salve1.king.com) # mod_proxy是apache的原生模塊 httpd-2.4.9.tar.bz2 tomcat-connectors-1.2.37-src.tar.gz |
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 | ii) 安裝配置apache基于mod_jk(ajp協(xié)議)的反向代理 (salve1.king.com) 編譯需要依賴 pcre-devel-7.8-6.el6.bz2? apr-1.5.0.bz2? apr-util-1.5.3.bz2 按需進行依次編譯安裝 tar?xf pcre-devel-7.8-6.el6.bz2 cd?pcre-devel-7.8-6 ./configure?--prefix=/usr/local/pcre make?&&?make?install # tar?xf apr-1.5.0.tar.bz2 cd?apr-1.5.0 ./configure?--prefix=/usr/local/apr make?&&?make?install # tar?xf apr-util-1.5.3.tar.bz2 cd?apr-util-1.5.3 ./configure?--prefix=/usr/local/apr-util?--with-apr=/usr/local/apr make?&&?make?install # # 安裝之前請確保系統(tǒng)之前預(yù)裝的httpd已被卸載 rpm -e httpd --nodeps tar?xf httpd-2.4.9.tar.bz2 cd?httpd-2.4.9 ./configure?--prefix=/usr/local/apache?--sysconfdir=/etc/httpd?--enable-so --enable-ssl --enable-cgi --enable-rewrite --with-zlib --with-pcre --with-apr=/usr/local/apr?--with-apr-util=/usr/local/apr-util?--enable-mpms-shared=all --with-mpm=event --enable-proxy --enable-proxy-http --enable-proxy-ajp --enable-proxy-balancer? --enable-lbmethod-heartbeat --enable-heartbeat --enable-slotmem-shm? --enable-slotmem-plain --enable-watchdog make?&&?make?install # # 編輯/etc/httpd/httpd.conf,添加如下行即可: PidFile??"/var/run/httpd.pid"?# 32行 # 將如下模塊啟動,否則無法啟動httpd LoadModule slotmem_shm_module modules/mod_slotmem_shm.so?#128 # # 啟動腳本如下 vim /etc/rc.d/init.d/httpd #!/bin/bash # # httpd??????? Startup script for the Apache HTTP Server # # chkconfig: - 85 15 # description: The Apache HTTP Server is an efficient and extensible? \ #????????? server implementing the current HTTP standards. # processname: httpd # config: /etc/httpd/conf/httpd.conf # config: /etc/sysconfig/httpd # pidfile: /var/run/httpd/httpd.pid # .?/etc/rc.d/init.d/functions if?[ -f?/etc/sysconfig/httpd?];?then ????????.?/etc/sysconfig/httpd fi HTTPD_LANG=${HTTPD_LANG-"C"} INITLOG_ARGS="" apachectl=/usr/local/apache/bin/apachectl???# 修改apachectl路徑 httpd=/usr/local/apache/bin/httpd??????# 修改httpd bin路徑 prog=httpd pidfile=${PIDFILE-/var/run/httpd.pid} lockfile=${LOCKFILE-/var/lock/subsys/httpd} RETVAL=0 STOP_TIMEOUT=${STOP_TIMEOUT-10} start() { ????????echo?-n $"Starting $prog: " ????????LANG=$HTTPD_LANG daemon --pidfile=${pidfile} $httpd $OPTIONS ????????RETVAL=$? ????????echo ????????[ $RETVAL = 0 ] &&?touch?${lockfile} ????????return?$RETVAL } stop() { ????echo?-n $"Stopping $prog: " ????killproc -p ${pidfile} -d ${STOP_TIMEOUT} $httpd ????RETVAL=$? ????echo ????[ $RETVAL = 0 ] &&?rm?-f ${lockfile} ${pidfile} } reload() { ????echo?-n $"Reloading $prog: " ????if?! LANG=$HTTPD_LANG $httpd $OPTIONS -t >&/dev/null;?then ????????RETVAL=6 ????????echo?$"not reloading due to configuration syntax error" ????????failure $"not reloading $httpd due to configuration syntax error" ????else ????????# Force LSB behaviour from killproc ????????LSB=1 killproc -p ${pidfile} $httpd -HUP ????????RETVAL=$? ????????if?[ $RETVAL -eq?7 ];?then ????????????failure $"httpd shutdown" ????????fi ????fi ????echo } # See how we were called. case?"$1"?in ??start) ????start ????;; ??stop) ????stop ????;; ??status) ????????status -p ${pidfile} $httpd ????RETVAL=$? ????;; ??restart) ????stop ????start ????;; ??condrestart|try-restart) ????if?status -p ${pidfile} $httpd >&/dev/null;?then ????????stop ????????start ????fi ????;; ??force-reload|reload) ????????reload ????;; ??graceful|help|configtest|fullstatus) ????$apachectl $@ ????RETVAL=$? ????;; ??*) ????echo?$"Usage: $prog {start|stop|restart|condrestart|try-restart|force-reload|reload|status|fullstatus|graceful|help|configtest}" ????RETVAL=2 esac exit?$RETVAL # # 而后為此腳本賦予執(zhí)行權(quán)限: chmod?+x?/etc/rc.d/init.d/httpd # # 加入服務(wù)列表: chkconfig --add httpd # # mod_jk安裝配置 tar?xf tomcat-connectors-1.2.37-src.tar.gz cd?tomcat-connectors-1.2.37-src/native/ ./configure?--with-apxs=/usr/local/apache/bin/apxs make?&&?make?install # # 啟動httpd service httpd start |
# httpd安裝好后需要觀察如下模塊是否已經(jīng)就緒
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | iii) mod_jk(ajp協(xié)議)反代tomcat示例 (slave1.king.com) vim?/etc/httpd/extra/httpd-jk.conf # Load the mod_jk LoadModule? jk_module? modules/mod_jk.so JkWorkersFile??/etc/httpd/extra/workers.properties JkLogFile? logs/mod_jk.log JkLogLevel? debug JkMount? /*? tomcat1 JkMount??/status/??stat1 # vim?/etc/httpd/extra/workers.properties worker.list=tomcat1,stat1 worker.tomcat1.port=8009 worker.tomcat1.host=172.16.43.2 worker.tomcat1.type=ajp13 worker.tomcat1.lbfactor=1 worker.stat1.type?= status # vim?/etc/httpd/httpd.conf DirectoryIndex index.jsp??# 249行 Include?/etc/httpd/extra/httpd-jk.conf?# 446行 # vim?/usr/local/tomcat/conf/server.xml (slave2.king.com , slave3.king.com) <Engine name="Catalina"?defaultHost="localhost"?jvmRoute="tomcat1">??# 103行 # 兩個節(jié)點分別重啟 httpd , tomcat 服務(wù) |
# 測試, 此時基本的反代及status頁面已經(jīng)可以訪問
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 | iv) mod_proxy(http協(xié)議 , ajp協(xié)議)反代tomcat示例 (salve1.king.com) # 在httpd.conf的全局配置段(Directory)或虛擬主機(VirtualHost)中添加如下內(nèi)容: ProxyVia Off ProxyRequests Off ProxyPreserveHost Off <Proxy *> ??Require all granted </Proxy> ??ProxyPass? /? ajp://172.16.43.2:8009/ ??ProxyPassReverse? /? ajp://172.16.43.2:8009/ <Location? / > ??Require all granted </Location> # # apache跟Tomcat的http連接器進行整合: ProxyVia Off ProxyRequests Off ProxyPass / http://172.16.100.2:8080/ ProxyPassReverse / http://172.16.100.2:8080/ <Proxy *> ??Require all granted </Proxy> <Location? / > ??Require all granted </Location> # # 基于session綁定均衡反代 ProxyRequests Off <proxy balancer://lbcluster> BalancerMember ajp://172.16.100.1:8009 loadfactor=10 route=tomcat1 BalancerMember ajp://172.16.100.2:8009 loadfactor=10 route=tomcat2 </proxy> # <VirtualHost *:80> ServerName www.king.com ProxyPass / balancer://lbcluster/?stickysession=JSESSIONID ProxyPassReverse / balancer://lbcluster/ </VirtualHost> # # 為tomcat建立新的webapp用于測試 (slave2.king.com , slave3.king.com) vim?/usr/local/tomcat/conf/server.xml <Context path="/testsession"?docBase="/usr/local/tomcat/webapps/testsession"?/>?# 140行 # # 測試頁面 (slave2.king.com) <%@ page language="java"?%> <html> ??<head><title>tomcat1</title></head> ??<body> ????<h1><font color="red">tomcat1.king.com</font></h1> ????<table align="centre"?border="1"> ??????<tr> ????????<td>Session ID</td> ????<% session.setAttribute("king.com","king.com"); %> ????????<td><%= session.getId() %></td> ??????</tr> ??????<tr> ????????<td>Created on</td> ????????<td><%= session.getCreationTime() %></td> ?????</tr> ????</table> ??</body> </html> # # 測試頁面 (salve3,king.com) <%@ page language="java"?%> <html> ??<head><title>tomcat2</title></head> ??<body> ????<h1><font color="red">tomcat2.king.com</font></h1> ????<table align="centre"?border="1"> ??????<tr> ????????<td>Session ID</td> ????<% session.setAttribute("king.com","king.com"); %> ????????<td><%= session.getId() %></td> ??????</tr> ??????<tr> ????????<td>Created on</td> ????????<td><%= session.getCreationTime() %></td> ?????</tr> ????</table> ??</body> </html> |
# 測試, 使用不同瀏覽器將訪問落在不同節(jié)點上,反復(fù)刷新不變則證明sticksession成功
本文轉(zhuǎn)自My_King1 51CTO博客,原文鏈接:http://blog.51cto.com/apprentice/1409339,如需轉(zhuǎn)載請自行聯(lián)系原作者
總結(jié)
以上是生活随笔為你收集整理的tomcat的部署及session绑定反代的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: php防止恶意频繁刷新页面或form提交
- 下一篇: linux之防火墙