基于httpd反向代理tomcat集群实现和web站点的部署

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

实验环境:centos-6.4

使用的安装包:

apache-tomcat-7.0.42.tar.gz

jdk-7u9-linux-x64.rpm

shopxx-a5-Beta.zip

三个节点ip地址:

node1:172.16.8.10 | 192.168.100.254

node2:192.168.100.1

node3:192.168.100.2 192

node2和node3网关都指向192.168.100.254

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

node1节点设置为apache服务器

1.配置httpd代理模块在conf.d目录下新建如下文件:

[root@yulong conf.d]# vim mod_proxy_tomcat.conf
添加如下内容代理到后端tomcat服务器
ProxyRequests Off
关闭正向代理的功能
proxyVia  on
用于控制在http首部是否使用Via
ProxyPreservehost off
用户请求报文中的Host
<Proxy balancer://lbcluster1> 要代理到后端的服务器
  BalancerMember  http://192.168.100.1:80 loadfactor=1
  BalancerMember  http://192.168.100.2:80 loadfactor=2
  ProxySet  lbmethod=byrequests  调度算法
</Proxy>
<Location /lbmanager>这段用于mod_proxy状态信息的输出
  SetHandler balancer-manager
  Proxypass !
  Order Deny,Allow
  Allow from all
</Location>
下面这段用于负载均衡集群时调度算法
ProxyPass / balancer://lbcluster1/
#stickysession=jsessionid
ProxyPa***everse / balancer://lbcluster1/
<Proxy *>这段是访问规则权限
  Order Allow,Deny
  Allow From  all
</Proxy>
<Location  / >
  Order Allow,Deny
  Allow From all
</Location>

node2配置为tomcat服务器

1.先安装tomcat依赖的JDK

[root@yulong ~]# rpm  -ivh  jdk-7u9-linux-x64.rpm

2.设置java的环境变量

[root@yulong jdk1.7.0_09]# vim   /etc/profile.d/java.sh
export   JAVA_HOME=/usr/java/latest
export   PATH=$JAVA_HOME/bin:$PATH

3.查看java是否配置正确

[root@yulong jdk1.7.0_09]# java -version
java version "1.7.0_09"
Java(TM) SE Runtime Environment (build 1.7.0_09-b05)
Java HotSpot(TM) 64-Bit Server VM (build 23.5-b02, mixed mode)
能看到上述内容说明就没有问题

4.接下来解压安装tomcat并设置tomcat环境变量

[root@yulong ~]# tar  -xf   apache-tomcat-7.0.42.tar.gz  -C /usr/local/
[root@yulong local]# ln -sv  apache-tomcat-7.0.42  tomcat
[root@yulong local]# vim /etc/profile.d/tomcat.sh
export    CATALINA_HOME=/usr/local/tomcat
export    PATH=$CATALINA_HOME/bin:$PATH

5.编辑tomcat的主配置文件,修改和添加以下内容

[root@yulong conf]# vim server.xml

<Connector port="80" protocol="HTTP/1.1"
端口修改为80,可以自己定义端口号
在Engine模块中添加如下内容:
<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.101.50"#这里可以自己修改
                        port="45564"
                        frequency="500"
                        dropTime="3000"/>
            <Receiver className="org.apache.catalina.tribes.transport.nio.NioReceiver"
                      address="192.168.100.1"  本机的IP地址
                      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>
以上内容定义在Engine容器中,则表示对所有主机均启动用集群功能

6.解压应用程序到默认tomcat访问的目录下:

[root@yulong ~]# unzip  shopxx-a5-Beta.zip
[root@yulong shopxx-v3.0-Beta]# cd shopxx-3.0Beta/
[root@yulong shopxx-3.0Beta]# cp  ./*   /usr/local/tomcat/webapps/shopxx  -r

7.编辑配置文件添加如下字段,实现分布式储存

[root@yulong shopxx]# vim  /usr/local/tomcat/webapps/shopxx/WEB-INF/web.xml
<distributable />

8.node2和node1上述的配置是相同的这里就不在配置,只需要修改下集群的ip地址为node2的ip地址即可

9.安装mysql数据库,这里是直接rpm安装的,可以自己定义安装方式

[root@yulong tomcat]# yum install  mysql-server  -y

10.授权一个程序的mysql用户

mysql> grant all on  shopxx.* to  'shop'@'%' identified by 'mypass';

11.启动两个节点的tomcat服务和前端httpd服务器

node2上启动tomcat服务
[root@yulong ~]# catalina.sh  start
node3上启动tomcat服务
[root@yulong ~]# catalina.sh  start
启动前端apache服务
[root@yulong ~]# service httpd start

12.访问前端服务器的地址172.16.8.10/shopxx会有一个安装界面,很简单,这里就不在配置,安装完成以后就可以访问了

13.查看node1和node2端口是否正常启动:

tcp  0  0 :::80                       LISTEN    11604/java     
tcp  0  0 ::ffff:192.168.100.1:4000   LISTEN    11604/java     
tcp  0  0 ::ffff:127.0.0.1:8005       LISTEN    11604/java     
tcp  0  0 :::8009                     LISTEN    11604/java

14.访问主页看看是否实现分布式session共享

222641893.jpg

15.注册登录也是没有问题的,自己搭建的web购物站点搞定

223622666.jpg

16.到此上述分布式集群session会话共享已经实现