例子:部署单机的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