實驗系統:CentOS 6.6_x86_64html
實驗前提:提早準備好編譯環境,防火牆和selinux都關閉java
實驗說明:本實驗共有2臺主機,IP分配如拓撲linux
實驗軟件:jdk-8u60-linux-x64 apache-tomcat-8.0.24 tomcat-connectors-1.2.41 httpd-2.2.15 httpd-devel-2.2.15web
實驗拓撲:apache
1、兩臺機器安裝JAVA環境vim
1.安裝JAVA:瀏覽器
wget http://download.oracle.com/otn-pub/java/jdk/8u60-b27/jdk-8u60-linux-x64.tar.gz tar xf jdk-8u60-linux-x64.tar.gz -C /usr/local/ cd /usr/local/ ln -sv jdk1.8.0_60 jdk
2.配置環境變量:tomcat
vim /etc/profile.d/jdk.sh ---------------------------------------------------> JAVA_HOME=/usr/local/jdk PATH=$JAVA_HOME/bin:$PATH export JAVA_HOME PATH <--------------------------------------------------- . /etc/profile.d/jdk.sh
2、兩臺機器安裝tomcatsession
1.安裝tomcat:oracle
wget http://mirrors.cnnic.cn/apache/tomcat/tomcat-8/v8.0.24/bin/apache-tomcat-8.0.24.tar.gz tar xf apache-tomcat-8.0.24.tar.gz -C /usr/local/ cd /usr/local/ ln -sv apache-tomcat-8.0.24 tomcat
2.配置環境變量:
vim /etc/profile.d/tomcat.sh ---------------------------------------------------> CATALINA_BASE=/usr/local/tomcat PATH=$CATALINA_BASE/bin:$PATH export PATH CATALINA_BASE <--------------------------------------------------- . /etc/profile.d/tomcat.sh
3.查看tomcat及JAVA狀態:
catalina.sh version
4.提供啓動腳本:
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/local/jdk 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 <-------------------------------------------------------- chmod +x /etc/init.d/tomcat chkconfig --add tomcat
5.編輯tomcat配置文件,只添加jvmRoute參數:
在19.66上:
vim /usr/local/tomcat/conf/server.xml -----------------------------------------------> <Engine name="Catalina" defaultHost="localhost" jvmRoute="TomcatA"> //指明這是TomcatA主機
在19.74上:
vim /usr/local/tomcat/conf/server.xml -----------------------------------------------> <Engine name="Catalina" defaultHost="localhost" jvmRoute="TomcatB">
6.提供測試頁面:
在19.66上:
mkdir -pv /usr/local/tomcat/webapps/test/WEB-INF/{classes,lib} vim /usr/local/tomcat/webapps/test/index.jsp ------------------------------------------------------------------------> <%@ page language="java" %> <%@ page import="java.util.*" %> <html> <head> <title>test</title> </head> <body> <% out.println("This is TomcatA"); %> </body> </html> ------------------------------------------------------------------------> service tomcat start
在19.74上:
mkdir -pv /usr/local/tomcat/webapps/test/WEB-INF/{classes,lib} vim /usr/local/tomcat/webapps/test/index.jsp ------------------------------------------------------------------------> <%@ page language="java" %> <%@ page import="java.util.*" %> <html> <head> <title>test</title> </head> <body> <% out.println("This is TomcatB"); %> </body> </html> ------------------------------------------------------------------------> service tomcat start
3、利用mod_jk模塊對tomcat進行負載均衡
利用httpd反向代理tomcat時有兩種方法,分別要用到mod_proxy和mod_jk這兩個模塊。mod_jk須要額外編譯安裝,而mod_proxy須要用到httpd的proxy_module、proxy_balancer_module、proxy_http_module、proxy_ajp_module模塊,確保安裝時這些模塊都被安裝了。從httpd2.2開始,這些模塊默認就是安裝的,因此這裏咱們直接用yum安裝便可。
下面先演示利用mod_jk模塊對tomcat進行負載均衡。此模塊只須要在一臺機器上安裝,咱們這裏在19.66上安裝。
1.安裝httpd:
yum -y install httpd httpd-devel //安裝httpd-devel爲了提供apxs
2.安裝mod_jk.so模塊:
wget http://mirrors.cnnic.cn/apache/tomcat/tomcat-connectors/jk/tomcat-connectors-1.2.41-src.tar.gz tar xf tomcat-connectors-1.2.41-src.tar.gz cd tomcat-connectors-1.2.41-src/native/ ./configure --with-apxs=/usr/sbin/apxs make && make install
3.提供額外的httpd模塊配置文件:
vim /etc/httpd/conf.d/httpd-jk.conf ------------------------------------------------------> # Load the mod_jk LoadModule jk_module modules/mod_jk.so //加載mod_jk.so模塊 JkWorkersFile /etc/httpd/conf.d/workers.properties //此模塊本身要用到的配置文件 JkLogFile logs/mod_jk.log JkLogLevel debug JkMount /* lb1 //訪問根下的全部內容都發到集羣lb1中來 JkMount /status/ stat1
4.配置mod_jk模塊的配置文件workers.properties:
vim /etc/httpd/conf.d/workers.properties --------------------------------------------------------> worker.list = lb1,stat1 worker.TomcatA.type = ajp13 //httpd鏈接tomcat所用的模式 worker.TomcatA.host = 192.168.19.66 worker.TomcatA.port = 8009 worker.TomcatA.lbfactor = 1 //權重 worker.TomcatB.type = ajp13 worker.TomcatB.host = 192.168.19.74 worker.TomcatB.port = 8009 worker.TomcatB.lbfactor = 1 worker.lb1.type = lb //調度方式 worker.lb1.sticky_session = 0 //是否使用session綁定 worker.lb1.balance_workers = TomcatA, TomcatB worker.stat1.type = status
5.啓動測試:
service httpd start
用瀏覽器打開http://192.168.19.66/test,咱們不斷刷新,能夠看到實驗效果。
4、利用mod_proxy模塊對tomcat進行負載均衡
1.仍然在19.66上編輯便可,使用http協議:
cd /etc/httpd/conf.d/ mv httpd-jk.conf httpd-jk.conf.bak vim httpd-proxy.conf --------------------------------------------------------------> <Proxy balancer://lb1> BalancerMember http://192.168.19.66:8080 loadfactor=1 route=TomcatA BalancerMember http://192.168.19.74:8080 loadfactor=1 route=TomcatB ProxySet lbmethod=byrequests //基於權重將統計請求個數進行調度 </Proxy> ProxyPass / balancer://lb1/ ProxyPassReverse / balancer://lb1/ <-------------------------------------------------------------- service httpd restart
2.使用ajp協議:
cd /etc/httpd/conf.d/ mv httpd-jk.conf httpd-jk.conf.bak vim httpd-proxy.conf --------------------------------------------------------------> <Proxy balancer://lb1> BalancerMember ajp://192.168.19.66:8009 loadfactor=1 route=TomcatA BalancerMember ajp://192.168.19.74:8009 loadfactor=1 route=TomcatB ProxySet lbmethod=byrequests </Proxy> ProxyPass / balancer://lb1/ ProxyPassReverse / balancer://lb1/ <-------------------------------------------------------------- service httpd restart
以上兩種辦法均可以實現負載均衡,刷新頁面仍然能夠看到效果,這裏就不在給出圖片了。至此,實驗所有結束,謝謝!若有問題,請聯繫我,QQ:82800452.