tomcat的基本配置及其负载均衡

 

例子:部署单机的tomcat服务器

1、安装jdk
# ./jdk-6u18-ea-bin-b02-linux-i586-09_sep_2009.bin
# mv jdk1.6.0_18 /usr/local/java

2、安装tomcat(二进制版本)  
# tar xvf apache-tomcat-6.0.16.tar.gz
# mv apache-tomcat-6.0.16 /usr/local/tomcat/

3、进行简单的配置
# cd /usr/local/tomcat
# vim /usr/local/tomcat/bin/catalina.sh
export JAVA_HOME='/usr/local/java'


4、启动tomcat
# /usr/local/tomcat/bin/startup.sh
# lsof -i:8080

访问测试:http://1.1.1.128:8080/


进行一些简单的修改:
 1、修改它的端口

# vim /usr/local/tomcat/conf/server.xml

    <Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />

修改成
    <Connector port="80" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />

 2、添加在线管理帐号
# vim /usr/local/tomcat/conf/tomcat-users.xml

<?xml version='1.0' encoding='utf-8'?>
<tomcat-users>

<role rolename="manager"/>
<role rolename="admin"/>
<user username="tomcat" password="123" roles="manager,admin"/>


</tomcat-users>


重启
# /usr/local/tomcat/bin/shutdown.sh
# /usr/local/tomcat/bin/startup.sh


例子2:部署一个BBS
 jsprun 

1、部署代码
# unzip JspRun_6.0.0_UTF8.zip
# mv  JspRun\!_6.0.0_UTF8/upload/ /usr/local/tomcat/webapps/bbs

2、为论坛准备一个数据库和帐号

mysql> create database jsprun default charset utf8;
mysql> grant all on jsprun.* to bbs@'1.1.1.%' identified by '123';


# vim /usr/local/tomcat/webapps/bbs/config.properties

dbhost = 1.1.1.128  <---本机网卡的IP
dbport=3306
dbuser = bbs
dbpw = 123
dbname = jsprun
pconnect = 0
...
...

向导安装
http://1.1.1.128/bbs/install.jsp


====================================================


例子3:对tomcat进行负载均衡集群


    调度工具
    |||
    |--------------------------|
  tomcat_01  tomcat_02


调度工具:
 apache :  http_proxy
 apache :  proxy_ajp
 apache :  mod_jk 
 
 nginx 反向代理
 haproxy 调度
 lvs 

 都需要解决的问题:
  会话中session如何同步?
   j2ee中间件本身的session通过自身集群功能,靠组播同步session信息.
   把session统一存放在memcached,mysql服务器等


一、分别部署两台tomcat服务器
网站的根目录tomcat默认做了别名,指向了/usr/local/tomcat/webapps/ROOT

bbs目录
/usr/local/tomcat/webapps/bbs/

所以ok.html应该放在/usr/local/tomcat/webapps/ROOT/ok.html

二、配置haropxy


三、在其中一台节点上部署了论坛。

 


测试session问题:
 分别把test.jsp放到两个节点的网站跟目录
# scp tomcat集群session测试文件/test.jsp  1.1.1.129:/usr/local/tomcat/webapps/ROOT/test.jsp
...

访问测试
http://10.1.1.21/test.jsp


解决session同步问题:


注意:一定要在hosts文件设定好正确的主机名

1、修改tomcat的配置
# vim /usr/local/tomcat/conf/server.xml
    <Engine name="Catalina" defaultHost="localhost">
  
  《---添加以下代码
       <Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"
                 channelSendOptions="8">

          <Manager className="org.apache.catalina.ha.session.DeltaManager"
                   expireSessionsOnShutdown="false"
                   notifyListenersOnReplication="true"/>

          <Channel className="org.apache.catalina.tribes.group.GroupChannel">
            <Membership className="org.apache.catalina.tribes.membership.McastService"
                        address="228.0.0.4"
                        port="45564"
                        frequency="500"
                        dropTime="3000"/>
            <Receiver className="org.apache.catalina.tribes.transport.nio.NioReceiver"
                      address="auto"
                      port="4000"
                      autoBind="100"
                      selectorTimeout="5000"
                      maxThreads="6"/>

            <Sender className="org.apache.catalina.tribes.transport.ReplicationTransmitter">
              <Transport className="org.apache.catalina.tribes.transport.nio.PooledParallelSender"/>
            </Sender>
            <Interceptor className="org.apache.catalina.tribes.group.interceptors.TcpFailureDetector"/>
            <Interceptor className="org.apache.catalina.tribes.group.interceptors.MessageDispatch15Interceptor"/>
          </Channel>

          <Valve className="org.apache.catalina.ha.tcp.ReplicationValve"
                 filter=""/>
          <Valve className="org.apache.catalina.ha.session.JvmRouteBinderValve"/>

          <Deployer className="org.apache.catalina.ha.deploy.FarmWarDeployer"
                    tempDir="/tmp/war-temp/"
                    deployDir="/tmp/war-deploy/"
                    watchDir="/tmp/war-listen/"
                    watchEnabled="false"/>

          <ClusterListener className="org.apache.catalina.ha.session.JvmRouteSessionIDBinderListener"/>
          <ClusterListener className="org.apache.catalina.ha.session.ClusterSessionListener"/>
        </Cluster>   
  

2、让应用支持集群

# vim /usr/local/tomcat/webapps/ROOT/WEB-INF/web.xml

...
...
<distributable/>  <---添加这句
</web-app>


重启tomcat

如果启动tomcat无法正常使用,查看日志
# vim logs/catalina.out
...
LifecycleException:  org.apache.catalina.tribes.ChannelException: java.net.BindException: Cannot assign requested address; No faulty members identified.
...

原因:无法绑定组播地址
解决:手工添加组播路由
# route add -net 228.0.0.0 netmask 255.0.0.0 dev eth0

 

==================================================================


  
 lvs1 <--HA--> lvs2
       |||||
 |-------|-------|
  Haproxy1  Haproxy2   Haproxy3 <---七层调度
   |-----------------------|
 web1 web2  web3  ....  webN

你可能感兴趣的:(tomcat,负载均衡)