Tomcat 是一个小型的轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。对于一个初学者来说,可以这样认为,当在一台机器上配置好Apache 服务器,可利用它响应对HTML 页面的访问请求。实际上Tomcat 部分是Apache 服务器的扩展,但它是独立运行的,所以当你运行tomcat 时,它实际上作为一个与Apache 独立的进程单独运行的。

Tomcat 很受广大程序员的喜欢,因为它运行时占用的系统资源小,扩展性好,支持负载平衡与邮件服务等开发应用系统常用的功能;而且它还在不断的改进和完善中,任何一个感兴趣的程序员都可以更改它或在其中加入新的功能。


环境介绍:

系统版本:CentOS 6.4_x86_64

mysql版本: mysql-server.x86_64 0:5.1.66-2.el6_3

Apache版本:httpd-2.2.15-26.el6

Tomcat版本:apache-tomcat-7.0.42

JDK版本: jdk-7u40-linux-x64

在线商城系统:shopxx-3.0Beta(可下载)

拓扑展示:

Tomcat完美实现在线商城应用部署_第1张图片

安装配置过程:

1、配置IP地址

############前端服务器[root@node ~]#:#############
ifconfig eth0 172.16.18.6
ifconfig eth1 192.168.18.254/24
############Tomcat A[root@node1~]#:###############
ifconfig eth0 192.168.18.1/24
route add default gw 192.168.18.254
############Tomcat B[root@node2~]#:################
ifconfig eth0 192.168.18.2/24
route add default gw 192.168.18.254

2、安装配置后端服务器

###########TomcatA服务器:##############
    ##########安装JDK:##############
[root@node1~]# rpm -ivh jdk-7u9-linux-x64.rpm
[root@node1~]# vim /etc/profile.d/java.sh   #编辑执行脚本
 export JAVA_HOME=/usr/java/latest
 export PATH=$JAVA_HOME/bin:$PATH
[root@node1~]# . /etc/profile.d/java.sh     #读取执行脚本
[root@node1~]# java -version                #查看安装信息
javaversion "1.7.0_09"   #版本信息
Java(TM)SE Runtime Environment (build 1.7.0_09-b05)    #运行时环境的版本
JavaHotSpot(TM) 64-Bit Server VM (build 23.5-b02, mixed mode)
     #########安装Tomcat#############
[root@node1~]# tar xf apache-tomcat-7.0.42.tar.gz -C /usr/local/
[root@node1~]# cd /usr/local/
[root@node1local]# ln -sv apache-tomcat-7.0.42/ tomcat
[root@node1tomcat]# vim /etc/profile.d/tomcat.sh     #定义启动环境变量
exportCATALINA_HOME=/usr/local/tomcat
exportPATH=$CATALINA_HOME/bin:$PATH
[root@node1tomcat]# . /etc/profile.d/tomcat.sh       #读取脚本
[root@node1~]# catalina.sh version   #查看安装信息
UsingCATALINA_BASE:   /usr/local/tomcat
UsingCATALINA_HOME:   /usr/local/tomcat
UsingCATALINA_TMPDIR: /usr/local/tomcat/temp
UsingJRE_HOME:        /usr/java/latest
UsingCLASSPATH:      /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Serverversion: Apache Tomcat/7.0.42
Serverbuilt:   Jul 2 2013 08:57:41
Servernumber:  7.0.42.0
OSName:        Linux
OSVersion:     2.6.32-358.el6.x86_64
Architecture:   amd64
JVMVersion:    1.7.0_09-b05
JVMVendor:     Oracle Corporation
#############启动##################
[root@node1~]# catalina.sh start
############查看启动端口###########
[root@node1~]# ss -tanl
State      Recv-Q Send-Q                     Local Address:Port                       Peer Address:Port
LISTEN     0     128                                  :::111                                 :::*
LISTEN     0     128                                   *:111                                  *:*
LISTEN     0     100                                   :::8080                                 :::*
LISTEN     0     128                                  :::49906                               :::*
LISTEN     0     128                                   *:56818                                *:*
LISTEN     0     128                                  :::22                                  :::*
LISTEN     0     128                                   *:22                                   *:*
LISTEN     0     128                           127.0.0.1:631                                   *:*
LISTEN     0     128                                 ::1:631                                 :::*
LISTEN     0     100                                  ::1:25                                   :::*
LISTEN     0     100                           127.0.0.1:25                                    *:*
LISTEN     0     128                           127.0.0.1:6010                                 *:*
LISTEN     0     128                                 ::1:6010                                :::*
LISTEN     0     128                           127.0.0.1:6011                                  *:*
LISTEN     0     128                                  ::1:6011                                 :::*
LISTEN     0     128                           127.0.0.1:6012                                  *:*
LISTEN     0     128                                 ::1:6012                                :::*
LISTEN     0     1                      ::ffff:127.0.0.1:8005                                 :::*
LISTEN     0     100                                  :::8009                                :::*
###解析:tomcat默认监听在8080端口上,启动监听端口为8005,8009####
##########Tomcat B服务器上同样安装,这里就不再重复演示了########
##########更改监听端口############
[root@node1conf]# vim /usr/local/tomcat/conf/server.xml
    
##########重新启动服务############
[root@node1conf]# catalina.sh stop
[root@node1conf]# catalina.sh start
[root@node1conf]# scp server.xml 192.168.18.2:/usr/local/tomcat/conf/
[root@node2local]# catalina.sh stop
[root@node2local]# catalina.sh start

3、配置前端服务器实现负载均衡

##########安装Apache###################
[root@node~]# yum -y install httpd
[root@node~]# service httpd start
##########配置基于mod_proxy代理,负载均衡########
[root@node~]# cd /etc/httpd/conf.d/
[[email protected]]# vim mod_proxy_tomcat.conf
ProxyViaOn
ProxyRequestsOff      #关闭正向代理
ProxyPreserveHostOff
     #定义代理的后端服务器
BalancerMember  http://192.168.18.39:80 loadfactor=1       #指定后端服务器地址及端口
BalancerMember  http://192.168.18.36:80 loadfactor=1
ProxySet  lbmethod=byrequests


  SetHandler balancer-manager
  Proxypass !
  Order Deny,Allow
  Allow from all

ProxyPass/ balancer://hotcluster/
#stickysession=JSESSIONID|jsessionidnofailover=On
ProxyPa***everse/ balancer://hotcluster/

  Order Allow,Deny
  Allow From all


  Order Allow,Deny
  Allow From all

############测试语法的正确性##############
[[email protected]]# service httpd configtest
###########重启服务#######################
[[email protected]]# service httpd restart

Tomcat完美实现在线商城应用部署_第2张图片

4、查看链接状况开启tomcat管理功能:

##注意:由于两台后端服务器可能都会用到,所以两边都要创建用户并且保持一致##
#########更改用户管理配置文件######
[root@node1conf]# vim /usr/local/tomcat/conf/tomcat-users.xml
##内容:##
  
  
  
#########复制到Tomcat B###########
[root@node1conf]# scp tomcat-users.xml 192.168.18.2:/usr/local/tomcat/conf/
##########重新启动服务############
[root@node1conf]# catalina.sh stop
[root@node1conf]# catalina.sh start
[root@node2local]# catalina.sh stop
[root@node2local]# catalina.sh start

Tomcat完美实现在线商城应用部署_第3张图片

Tomcat完美实现在线商城应用部署_第4张图片

5、简单部署主页查看session值:

##########部署虚拟目录和部署主页#############
        #########  Tomcat A  ###########
[root@node1 tomcat]#  mkdir webapps/testapp/WEB-INF/{lib,classes} -pv
[root@node1 tomcat]# vim webapps/testapp/index.jsp
###内容###
<%@ page language="java" %>

  TomcatA
  
    

TomcatA

<% session.setAttribute("abc","abc"); %>
Session ID<%= session.getId() %>
Created on <%= session.getCreationTime() %>
[root@node1 tomcat]# catalina.sh stop [root@node1 tomcat]# catalina.sh start ############ Tomcat B ########### [root@node2 tomcat]# mkdir webapps/testapp/WEB-INF/{lib,classes} -pv [root@node2 tomcat]# vim webapps/testapp/index.jsp ###内容### <%@ page language="java" %> TomcatB

TomcatB

<% session.setAttribute("abc","abc"); %>
Session ID<%= session.getId() %>
Created on <%= session.getCreationTime() %>
[root@node2 webapps]# catalina.sh stop [root@node2 webapps]# catalina.sh start

Tomcat完美实现在线商城应用部署_第5张图片

Tomcat完美实现在线商城应用部署_第6张图片

注释:定义之后每次刷新页面都会更改session ID,也就是说可以保证负载均衡但是无法保证session ID不变。

6、基于内存复制实现session共享集群:

############# Tomcat A ############
[root@node1 ~]# cd /usr/local/tomcat/conf/
[root@node1 conf]# nano server.xml      #由于以下内容有缩进格式建议使用此编辑器
##添加在/host和/engine之间:##
        
          
          
            
            
            
              
            
            
            
          
          
          
          
          
          
        
#停止tomcat##
[root@node1 ~]# catalina.sh stop
[root@node1 conf]# cp web.xml ../webapps/testapp/WEB-INF/
[root@node1 conf]# vim ../webapps/testapp/WEB-INF/web.xml
添加如下字段:
               #表示这个应用程序的会话将实现分布式
[root@node1 conf]# scp ../webapps/testapp/WEB-INF/web.xml 192.168.18.2:/usr/local/tomcat/webapps/testapp/WEB-INF/
[root@node1 conf]# scp server.xml 192.168.18.2:/usr/local/tomcat/conf/
[root@node1 conf]# catalina.sh start
############ Tomcat B ###########
[root@node1 ~]# catalina.sh stop
[root@node1 conf]# catalina.sh start

Tomcat完美实现在线商城应用部署_第7张图片

Tomcat完美实现在线商城应用部署_第8张图片

总结:我们发现无论如何刷新,session id的信息都不会再改变。至此我们完成了使用mod_proxy实现负载均衡和利用tomcat集群实现session共享。下面我们来部署商店的应用。

7、在线商店的应用实现

############ Tomcat A ############
[root@node1 ~]# unzip shopxx-a5-Beta.zip
[root@node1 ~]# mv shopxx-v3.0-Beta/* /usr/local/tomcat/webapps/shopxx
[root@node2 tomcat]# vim webapps/shopxx/WEB-INF/web.xml
   #添加此字段
############ Tomcat B ############
[root@node2 ~]# unzip shopxx-a5-Beta.zip
[root@node2 ~]# mv shopxx-v3.0-Beta/* /usr/local/tomcat/webapps/shopxx
[root@node2 tomcat]# vim webapps/shopxx/WEB-INF/web.xml
   #添加此字段

Tomcat完美实现在线商城应用部署_第9张图片

Tomcat完美实现在线商城应用部署_第10张图片

注:安装环境不符合基本环境需要增加内存:方法如下

######## Tomcat A ########################
[root@node1 ~]# cd /usr/local/tomcat/bin/
[root@node1 bin]# vim catalina.sh
JAVA_OPTS="$JAVA_OPTS -Xmx256M"     //237行
注释:修改java虚拟机的内存需要在启动脚本里修改; -Xmx:定义java虚拟机使用最大内存。其中M:指的是MB,不指定则为KB
######### Tomcat B 服务器也需要更改#######
#########重新启动服务#####################

Tomcat完美实现在线商城应用部署_第11张图片

更改完之后下一步:无法进入到安装页面会重新回到进入页面;

原因:因为安装时后端可能会出现负载均衡转移所以导致无法进入安装页面,只能使用本地安装

######切换至前端服务器#########
[root@node ~]# yum -y install firefox
[root@node ~]# firefox &

安装商城应用

Tomcat完美实现在线商城应用部署_第12张图片

Tomcat完美实现在线商城应用部署_第13张图片

安装mysql服务器,并授权一个用户用于登录安装服务;

############ Tomcat A ############
[root@node1 shopxx]# yum -y install mysql-server
[root@node1 shopxx]# service mysqld start
[root@node1 shopxx]# mysql
mysql> grant all on *.* to 'shopuser'@'192.168.%.%' identified by 'shoppass';
mysql> flush privileges;
############ Tomcat B ############
[root@node2 shopxx]# yum -y install mysql-server
[root@node2 shopxx]# service mysqld start
[root@node2 shopxx]# mysql
mysql> grant all on *.* to 'shopuser'@'192.168.%.%' identified by 'shoppass';
mysql> flush privileges;

Tomcat完美实现在线商城应用部署_第14张图片

Tomcat完美实现在线商城应用部署_第15张图片

Tomcat完美实现在线商城应用部署_第16张图片

点击完成安装,重启web服务删除install目录

[root@node1 shopxx]# mv install install.bak
[root@node1 shopxx]# catalina.sh stop
[root@node1 shopxx]# catalina.sh start

将Tomcat A 上shopxx安装文件复制到Tomcat B上

[root@node1 webapps]# scp -rp shopxx/* 192.168.18.2:/usr/local/tomcat/webapps/shopxx/
[root@node2 shopxx]# catalina.sh stop
[root@node2 shopxx]# catalina.sh start

Tomcat完美实现在线商城应用部署_第17张图片

下面就可以可以在商城系统注册一个帐号,并登录到系统,购买一些衣服等,查看购物车中是否保存已加入到购物车中的衣服等等。

Tomcat完美实现在线商城应用部署_第18张图片


至此,tomcat基于session共享集群实现在线商城应用部署就完美实现了,注意此商城不可做商业用途。

如有疑问请留言!!谢谢!!您的建议是我学习路上的动力!!