apache+tomcat负载集群

来源:互联网 发布:shadowsock源码分析 编辑:程序博客网 时间:2024/05/17 01:31

Apache +tomcat集群

安装环境

系统cenos4.6jdktomcat5.5,

 

安装包准备

apache-tomcat-5.5.26.tar

httpd-2.2.10.tar

jdk-6u2-linux-i586-rpm

tomcat-connectors-1.2.25-src.tar

 

 

1.安装jdk环境

安装包

jdk-6u2-linux-i586-rpm.bin

chmod u+x jdk-6u2-linux-i586-rpm.bin //增加可执行权限

./jdk-6u2-linux-i586-rpm.bin

一直翻到最后一页,选择Y,即可完成安装

 

cd /usr/java

ln -s jdk1.6.0_02 jdk

ln -s jdk1.6.0_02/jre /usr/local/jre

cd /usr/bin

rm -rf java

rm -rf javac

然后在usr/bin

 

ln -s /usr/java/jdk1.6.0_02/bin/java /usr/bin/java

ln -s /usr/javac/jdk1.6.0_02/bin/javac /usr/bin/javac

 

设置环境变量 vi /etc/profile

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:/usr/local/tomcat/bin/:/usr/local/apache/bin:/usr/local/jdk/bin:/usr/local/jre/bin

export PATH

TOMCAT_HOME=/usr/local/tomcat

export TOMCAT_HOME

 

 

 

 

 

2.  安装tomcat

直接解压缩apache-tomcat-5.5.26.tar

 

tar xzvf apache-tomcat-5.5.26.tar

 

mv apache-tomcat-5.5.26 /usr/local

 

cd /usr/local

ln -s apache-tomcat-5.5.26  tomcat1

安装第一个tomcat

 

然后直接

cp -rf apache-tomcat-5.5.26 apache-tomcat-5.5.26-2

ln -s apache-tomcat-5.5.26-2 tomcat2

 

设置tomcat1的环境变量

 

export CATALINA_HOME=/usr/local/tomcat

export TOMCAT_HOME=/usr/local/tomcat

 

设置tomcat 自启动

vi /etc/rc.d/init.d/tomcat1

#--------------------------------------------------------

#!/bin/sh

 

export JAVA_HOME=/usr/java/default

export CATALINA_HOME=/usr/local/tomcat

 

case "$1" in

  'start')

    /usr/local/tomcat/bin/startup.sh

    touch /var/lock/subsys/tomcat

    ;;

 

  'stop')

    /usr/local/tomcat/bin/shutdown.sh

    rm -f /var/lock/subsys/tomcat

    ;;

 

  'restart')

    $0 stop

    $0 start

    ;;

 

  *)

    echo "Usage: tomcat { start | stop | restart }"

    exit 1

esac

exit 0

#-----------------------------------------------------

 

vi /etc/rc.d/init.d/tomcat2

#--------------------------------------------------------

#!/bin/sh

 

export JAVA_HOME=/usr/java/default

export CATALINA_HOME=/usr/local/tomcat2

 

case "$1" in

  'start')

    /usr/local/tomcat2/bin/startup.sh

    touch /var/lock/subsys/tomcat2

    ;;

 

  'stop')

    /usr/local/tomcat2/bin/shutdown.sh

    rm -f /var/lock/subsys/tomcat2

    ;;

 

  'restart')

    $0 stop

    $0 start

    ;;

 

  *)

    echo "Usage: tomcat2 { start | stop | restart }"

    exit 1

esac

exit 0

#-----------------------------------------------------

chmod u+x /etc/rc.d/init.d/tomcat1

chmod u+x /etc/rc.d/init.d/tomcat2

此时两个tomcat就都装成功了

 

 

3.安装apache环境

安装包是 httpd-2.2.8.tar.gz

安装包在/install/下面

tar -xzvf httpd-2.2.8.tar.gz

目录 httpd-2.2.8

---------------------------------------------------

cd /install/httpd-2.2.8

cd srclib/apr

./configure --prefix=/usr/local/apr

make

make install

---------------------------------------------------

cd srclib/apr-util

./configure --prefix=/usr/local/apr-util /

> --with-apr=/usr/local/apr

make

make install

 

--------------------------------------------------

cd /install/httpd-2.2.8/

 

./configure --prefix=/usr/local/apache /

> --enable-so /

> --enable-rewrite=share /

> --enable-deflate /

> --with-mpm=worker /

> --with-apr=/usr/local/apr /

> --with-apr-util=/usr/local/apr-util /

> --with-java-home=/usr/local/jdk

-----------------------------------------------------

-----------------------------------------------------

加载jk模块

安装包是jakarta-tomcat-connectors-1.2.15-src.tar.gz

tar -xzvf jakarta-tomcat-connectors-1.2.15-src.tar.gz

压缩后文件:tomcat-connectors-1.2.25-src

 

cd /home/install/tomcat-connectors-1.2.25-src

cd native/

./configure --with-apxs=/usr/local/apache/bin/apxs

make

make install

 

//此时查看/usr/local/apache/modules 下面有没有mod_jk.so

--------------------------------------------------------

查看

/usr/local/apache/bin/httpd -l //看看是否有mod_deflate.c worker.c模块,如果有说明安装成功

 

新建自启动

vi /etc/rc.d/init.d/httpd

 

#-----------------------------------------------------

#!/bin/sh

 

case "$1" in

  'start')

    /usr/local/apache/bin/apachectl start

    touch /var/lock/subsys/httpd

    ;;

 

  'stop')

    /usr/local/apache/bin/apachectl stop

    rm -f /var/lock/subsys/httpd

    ;;

 

  'restart')

    $0 stop

    $0 start

    ;;

 

  *)

    echo "Usage: httpd { start | stop | restart }"

    exit 1

esac

exit 0

#-----------------------------------------------------

chmod a+x /etc/rc.d/init.d/httpd

启动apache 

service httpd start

 

ps ux

查看服务已经启动

 

 

------------------------------------------------------

3. 配置apache

cd /usr/local/apache/conf

vi httpd.conf

-------------------------------------------------------

在最后新增

LoadModule jk_module modules/mod_jk.so

JkWorkersFile /usr/local/apache/conf/jk/workers.properties

JkShmFile logs/mod_jk.shm

 

JkLogFile /usr/local/tomcat/logs/mod_jk.log 

JkLogLevel info

JkMount /*.jsp controller

JkMount /*.html controller

JkMount /*.do controller

JkMount /*.* controller

JkMount /   controller

JkMount /*/  controller

 

------------------------------------------------------

配置JK

vi /usr/local/apache/conf/jk/workers.properties

 

添加如下

#workers.tomcat_home=/usr/local/tomcat //如果tomcat都在 一台机器上不用此条

workers.java_home=/usr/local/jdk

ps=/

worker.list=controller

 

#------配置tomcat1-------------

worker.tomcat1.port=8009

worker.tomcat1.host=localhost

worker.tomcat1.type=ajp13

worker.tomcat1.lbfactor=1

 

#-----配置tomcat2--------------

worker.tomcat2.port=9009

worker.tomcat2.host=192.168.1.240 

worker.tomcat2.type=ajp13

worker.tomcat2.lbfactor=1

 

#-----配置controller负载均衡

worker.controller.type=lb

worker.controller.balance_workers=tomcat1,tomcat2

worker.controller.sticky_session=1

#注:tomcat1 tomcat2 须是tomcatserver.xml中的jvmRoute="tomcat1"指定的名字

----------------------------------------------------------------

 

tomcat集群配置,session同步配置

---------------------------------------------------------------------------------

tomcat1配置

vi /usr/local/tomcat1/conf/server.xml

修改Engine节点,找到<Engine name="Catalina" defaultHost="localhost">

修改为<Engine name="Catalina" defaultHost="localhost"jvmRoute="tomcat1">

 

如果上面还有Engine 节点,就注释掉

 

找到cluster节点,把整个cluster的注释去掉

 

然后修改

 <Membership

                className="org.apache.catalina.cluster.mcast.McastService"

                mcastBindAddress="192.168.1.240"

                mcastAddr="224.0.0.1"

                mcastPort="45564"

                mcastFrequency="500"

                mcastDropTime="3000"/>

    <Receiver

                className="org.apache.catalina.cluster.tcp.ReplicationListener"

                tcpListenAddress="192.168.1.240"

                tcpListenPort="4001"

                tcpSelectorTimeout="100"

                tcpThreadCount="6"/>

 

#192.168.1.240 为本机IP地址

 

-------------------------------------------------------------------------------------

tomcat2配置

1. tomcat为本机

vi /usr/local/tomcat2/conf/server.xml

修改Engine节点,找到<Engine name="Catalina" defaultHost="localhost">

修改为<Engine name="Catalina" defaultHost="localhost"jvmRoute="tomcat2">

 

 <Membership

                className="org.apache.catalina.cluster.mcast.McastService"

                mcastBindAddress="192.168.1.240"

                mcastAddr="224.0.0.1"

                mcastPort="45564"

                mcastFrequency="500"

                mcastDropTime="3000"/>

    <Receiver

                className="org.apache.catalina.cluster.tcp.ReplicationListener"

                tcpListenAddress="192.168.1.240"

                tcpListenPort="4002"   //这一步一定要做

                tcpSelectorTimeout="100"

                tcpThreadCount="6"/>

 

#192.168.1.240 为本机IP地址

 

修改端口8005808080098082分别更改为

9005908090099082

 

------------------------------------------------------------------------------------

2.tomcat为另外一台机器

 

vi /usr/local/tomcat2/conf/server.xml

修改Engine节点,找到<Engine name="Catalina" defaultHost="localhost">

修改为<Engine name="Catalina" defaultHost="localhost"jvmRoute="tomcat2"> 

 

修改

<Membership

                className="org.apache.catalina.cluster.mcast.McastService"

                mcastBindAddress="192.168.1.238"

                mcastAddr="228.0.0.4"

                mcastPort="45564"

                mcastFrequency="500"

                mcastDropTime="3000"/>

    <Receiver

                className="org.apache.catalina.cluster.tcp.ReplicationListener"

                tcpListenAddress="192.168.1.238"

                tcpListenPort="4001"  

                tcpSelectorTimeout="100"

                tcpThreadCount="6"/>

 

 

3. 添加应用

 

 

WEB_INF 下面的web.xml里面必须添加<distributable/>

只要添加在</web-app>之前就可以

 

 

--------------------------------------------------------------------------------------

测试广播是否可用

首先需要开启网卡组播功能

route add -net 224.0.0.0 netmask 240.0.0.0 dev eth0

 

java -cp tomcat-replication.jar MCaster 224.0.0.1 45564 Terminal1

java -cp tomcat-replication.jar MCaster 224.0.0.1 45564 Terminal2

 

这时需要下载tomcat-replication.jar 包,http://cvs.apache.org/~fhanik/tomcat-replication.jar

进行测试(这一步主要是测试组播是否可用,不进行也可以)

 

----------------------------------------------------------------------------------------

简单添加应用

webapps 下新建test 目录

目录下建WEB-INF目录下的web.xml文件

<web-app xmlns="http://java.sun.com/xml/ns/j2ee"

    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee [url]http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd[/url]"

    version="2.4">

       <display-name>TomcatDemo</display-name>

       <distributable/>

</web-app>

再在webapps 建立print.jsp   test.jsp

Print.jsp :

 <%

   System.out.println("www.linuxtone.org   liuyu.blog.51cto.com");

%>

 

test.jsp

<%@ page contentType="text/html; charset=GBK" %>

<%@ page import="java.util.*" %>

<html><head><title>Cluster App Test</title></head>

<body>

Server Info:

<%

out.println(request.getLocalAddr() + " : " + request.getLocalPort()+"<br>");%>

<%

  out.println("<br> ID " + session.getId()+"<br>");

  String dataName = request.getParameter("dataName");

  session.setAttribute("myname","session?");

  if (dataName != null && dataName.length() > 0) {

     String dataValue = request.getParameter("dataValue");

     session.setAttribute(dataName, dataValue);

  }

  out.print("<b>Session P±?b>");

  Enumeration e = session.getAttributeNames();

  while (e.hasMoreElements()) {

     String name = (String)e.nextElement();

     String value = session.getAttribute(name).toString();

     out.println( name + " = " + value+"<br>");

         System.out.println( name + " = " + value);

   }

%>

  <form action="index.jsp" method="POST">

    ?3?<input type=text size=20 name="dataName">

     <br>

    ?:<input type=text size=20 name="dataValue">

     <br>

    <input type=submit>

   </form>

</body>

</html>

 

重启所有的服务。

 

此时,开启两个浏览器,分别浏览

192.168.1.240,分别得到tomcat1

tomcat2的页面,就表明

已经集群成功了

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 荣耀9i手机总是滑手怎么办? 春兰空调没发票不给修怎么办 洗衣机顶盖的安全开关坏了怎么办 苹果手机的开关健坏了怎么办 淘宝买的东西快递弄破损了怎么办 京东购买邮来手机里面没有怎么办 孕期建卡病历本丢了怎么办 四维检查胎儿心脏有缺陷怎么办 七个月的宝宝俩个蛋蛋都疝气怎么办 电脑有些网站看视频不能全屏怎么办 小米滑板车坏了售后不保修怎么办 红米4a电池不耐用怎么办 华为手机买个别人退货的怎么办 京东购物怎么查订单查询不到怎么办 退款了又收到货怎么办快递打电话 快递未收到货能退款商家拒绝怎么办 黑色牛仔裤有一块洗白了怎么办 黑色牛仔裤被洗衣液烧了怎么办 在蘑菇街退鞋子商家非说脏了怎么办 牛皮屑怎么办ke靠成都银康 微信订阅号取消关注之后还在怎么办 腾讯新闻红包领取说帐号异常怎么办 计算机职弥报名没选模块怎么办 有人用我手机注册有赞了怎么办 一件代发别人的货被投诉了怎么办 淘宝极速退款后商家拒收快递怎么办 运费险退到天猫垫付账户了怎么办 淘宝卖家食品有问题该怎么办 美团外卖不要辣椒给放了怎么办 旺旺卖家拒收我的消息怎么办 淘宝清空购物车大奖到上限了怎么办 游戏无响应除了退出还能怎么办 淘宝给差评了卖家一直打电话怎么办 电脑说带宽问题无法观看视频怎么办 手机淘宝上的购买信息删除了怎么办 为什么支付宝有钱淘宝付不了怎么办 苹果平板电脑上的淘宝点不开怎么办 淘宝付了两次款只有一个订单怎么办 淘宝付款显示支付宝账号异常怎么办 手机老卡换新卡淘宝付不了款怎么办 淘宝买东西退款卖家拒绝退款怎么办