tomcat之-从AT到Cluster

本文导航

一、    LAMT搭建以及部署应用
       1、LAMT部署   
               (1)、安装Apache   
               (2)、安装Tomcat  
               (3)、安装Mysql5.1  
               (4)、部署jspxcms应用     
        2、LNMT部署    

二、Tomcat简单会话保持集群    
        1、后端tomcat环境搭建    
        2、nginx + tomcat cluser    
                 基于IP哈希绑定会话  
        3、httpd + tomcat集群基于balancer实现  
               (1)、基于http模块实现会话粘性    
               (2)、基于ajp模块实现会话粘性   
               (3)、启用管理接口   

三、Tomcat 会话复制集群    
        1、负载均衡配置    
        2、启用tomcat会话复制     
        3、添加<distributable/>元素    

四、session会话保持之session服务器    
        1、集群架构    
        2、配置tomcat       
        3、创建测试页面    
        4、配置前端调度器    
        5、测试会话保存功能    

一、LAMT搭建以及部署应用:

tomcat之-从AT到Cluster

 

1、LAMT部署

 

LAMT=Linux Apache(httpd) MySQL Tomcat ,即通过httpd反向代理tomcat向外提供服务;

httpd的代理模块有三种:

   proxy_http_module:适配http协议客户端;

   proxy_ajp_module:适配ajp协议客户端;

   proxy mod_jk :ApacheTomcat的连接器,需编译,少数旧服务器使用;

根据代理模块不同,主体结构可分为下面三种

   Client (http) –> httpd (proxy_http_module)(http) –> tomcat (http connector) –>mysql

   Client (http) –> httpd (proxy_ajp_module)(ajp) –> tomcat (ajp connector) –>mysql

   Client (http) –> httpd (mod_jk)(ajp) –> tomcat (ajp connector) –>mysql

各种的代理配置如下(proxy mod_jk过于陈旧,本文不做讨论)如为httpd2.2,需去掉Require all granted显示授权配置;

proxy_http_module代理配置示例:

 

     <VirtualHost *:80>
        ServerName     www.jev6.com
        ProxyRequests Off
        ProxyVia        On
        ProxyPreserveHost On
        <Proxy *>
          Require all granted
        </Proxy>
        ProxyPass / http://172.16.250.169:8080/ 
        ProxyPassReverse / http:// 172.16.250.169:8080/ 
        <Location />
          Require all granted
        </Location>
      </VirtualHost>

proxy_ajp_module代理配置示例:

 

     <VirtualHost *:80>
        ServerName     www.jev6.com
        ProxyRequests Off
        ProxyVia        On
        ProxyPreserveHost On
        <Proxy *>
          Require all granted
        </Proxy>
        ProxyPass / ajp:// 172.16.250.169:8009/ 
        ProxyPassReverse / ajp:// 172.16.250.169:8009/ 
        <Location />
          Require all granted
        </Location>
      </VirtualHost>

本为于httpd通过ajp模块反向代理tomcat为例:

 

(1)、安装Apache

 

[root@jev6 ~]#yum install httpd -y

安装Tomcat:

 

[root@jev6 ~]# yum install java-1.7.0-openjdk-devel tomcat-lib tomcat-admin-webapps tomcat-webapps -y
[root@jev6 ~]#vim /etc/httpd/conf.d/LAMT-ajp.conf

tomcat之-从AT到Cluster

[root@jev6 ~]#service httpd restart

 

(2)、安装Tomcat

 

[root@jev6 ~]#tomcat version

tomcat之-从AT到Cluster

[root@jev6 ~]#tomcat start

从浏览器访问http://172.16.250.169,注意:selinux以及iptables策略

tomcat之-从AT到Cluster

到此LAT部署完成;

 

(3)、安装Mysql5.1

 

 

[root@jev6 ~]#yum install mysql-server -y
[root@jev6 ~]#service mysqld start

授权jspxcms用户使用权限:

 

[root@jev6 ~]#mysql
mysql> grant all privileges on jspxcms.* to 'jspxcms'@'%' identified by 'jspxcmspass';

 

(4)、部署jspxcms应用

 

创建应用安装目录/var/lib/tomcat/webapps/jspxcms/(也可以直接使用webapps下的ROOT/,此时注意清空自带的ROOT/下的文件)

下载jspxcms(http://www.jspxcms.com)

解压后将解压后的ROOT目录里面的文件拷贝到/var/lib/tomcat/webapps/jspxcms/下

 

[root@jev6 ~]#wget http://www.jspxcms.com/info_download.jspx?id=239  
[root@jev6 ~]#mv  info_download.jspx\?id\=239 jspxcms-7.0.1-release.zip
[root@jev6 ~]#unzip jspxcms-7.0.1-release.zip
[root@jev6 ~]#mv ROOT/* /var/lib/tomcat/webapps/jspxcms/

在server.xml的host组件里面加入虚拟主机配置<Context path="/jspxcms" docBase="jspxcms" reloadable="true" />;

[root@jev6 ~]#vim /etc/tomcat/server.xml

tomcat之-从AT到Cluster

重启tomcat:

[root@jev6 ~]#service tomcat restart

在浏览器打开http://172.16.250.169/jspxcms/(如果应用部署在默认的ROOT下,直接输入IP即可如:http://172.16.250.169)

tomcat之-从AT到Cluster

tomcat之-从AT到Cluster

tomcat之-从AT到Cluster

tomcat之-从AT到Cluster

重启tomcat:

[root@jev6 ~]#service tomcat restart

从浏览器打开http://172.16.250.169/jspxcms/测试

tomcat之-从AT到Cluster

到此LAMT部署jspxcms到此成功;

【如果出现404报错】:

tomcat之-从AT到Cluster

[root@jev6 ~]#vim /etc/tomcat/web.xml

tomcat之-从AT到Cluster

将/etc/tomcat/web.xml 112行左右<init-param> 中<param-value>ture</param-value>的fslse改为ture;

tomcat之-从AT到Cluster

[root@jev6 ~]#service tomcat restart

 

2、LNMT部署

 

LNMT即Linux Nginx MySQL Tomcat,只需要将LAMT的httpd关闭替换为Nginx即可,其他配置依然保存不变,具体如下;

 

[root@jev6 ~]#httpd -k stop
[root@jev6 ~]#yum install nginx -y

在default.conf的server里面加入代理配置:

 

location / {
      proxy_pass http://172.16.250.169:8080;
    }
[root@jev6 ~]#vim /etc/nginx/conf.d/default.conf

tomcat之-从AT到Cluster

在浏览器打开http://172.16.250.169/jspxcms/

tomcat之-从AT到Cluster

注:

如果需要动静分离,只需要修改location配置:

 

   location ~* \.(jsp|do)$ {
      proxy_pass http://172.16.250.169:8080;
    }

需要后端程序设计时将动静态内容分开存储;

 

二、Tomcat简单会话保持集群

 

本文主要通过httpd(或nginx)负载均衡到后端tomcat服务器,并实现会话粘性;

两个tomcat节点:172.16.250.121(tomcatA.jev1.com),172.16.250.122(tomcatB.jev2.com)

一个负载均衡节点:172.16.250.169

主体架构:Clients–>172.16.250.169–>(tomcatA, tomcatB)

tomcat之-从AT到Cluster

1、后端tomcat环境搭建

注意:centos6只对java1.7的兼容性较好

【安装java虚拟机以及tomcat】:

 

[root@jev-1 ~]# yum install java-1.7.0-openjdk-devel tomcat-lib tomcat-admin-webapps tomcat-webapps -y
[root@jev-1 ~]# mkdir -pv /var/lib/tomcat/webapps/test/{WEB-INF,lib,classes}
[root@jev-1 ~]# vim /var/lib/tomcat/webapps/test/index.jsp
[root@jev-1 ~]# tomcat start


tomcat之-从AT到Cluster

TomcatB的软件布置操作同上;

【创建测试页】:

在TomcatA上某context中(如/test),提供如下页面

 

         <%@ page language="java" %>
          <html>
            <head><title>TomcatA</title></head>
            <body>
              <h1><font color="red">TomcatA.jev.com</font></h1>
              <table align="centre" border="1">
                <tr>
                  <td>Session ID</td>
                <% session.setAttribute("jev.com","jev.com"); %>
                  <td><%= session.getId() %></td>
                </tr>
                <tr>
                  <td>Created on</td>
                  <td><%= session.getCreationTime() %></td>
                </tr>
              </table>
            </body>
          </html>

【浏览器访问测试】

在浏览器打开172.16.250.121:8080/test/index.jsp测试【注意Chrome浏览器的本地缓存机制,建议使用其他浏览器】

tomcat之-从AT到Cluster

在TomcatB上某context中(如/test),提供如下页面

 

         <%@ page language="java" %>
          <html>
            <head><title>TomcatB</title></head>
              <body>
              <h1><font color="blue">TomcatB.jev.com</font></h1>
              <table align="centre" border="1">
                <tr>
                  <td>Session ID</td>
                <% session.setAttribute("jev.com","jev.com"); %>
                  <td><%= session.getId() %></td>
                </tr>
                <tr>
                  <td>Created on</td>
                  <td><%= session.getCreationTime() %></td>
                </tr>
              </table>
              </body>
          </html>

tomcat之-从AT到Cluster

2、nginx + tomcat cluser

前端通过nginx负载均衡到后端tomcat集群,并通过IP绑定的方式实现会话粘性;

【安装nginx】

[root@jev6 ~]#yum install nginx

【nginx负载均衡配置】

[root@jev6 ~]#vim /etc/nginx/nginx.conf

在http上下文加入upstream负载均衡配置

 

   upstream tcsrvs {
        server 172.16.250.121:8080
        server 172.16.250.122:8080
      }

tomcat之-从AT到Cluster

[root@jev6 ~]#vim /etc/nginx/conf.d/default.conf

在localtion中加入proxy_pass http://tcsrvs/;

tomcat之-从AT到Cluster

[root@jev6 ~]#nginx -t

tomcat之-从AT到Cluster

[root@jev6 ~]#nginx -s reload

【浏览器访问测试】

在浏览器打开172.16.250.169/test/index.jsp不断刷新测试,可以看到已经负载均衡,但无法绑定会话;

tomcat之-从AT到Cluster

【基于IP哈希绑定会话】

[root@jev6 ~]#vim /etc/nginx/nginx.conf

在upstream tcsrvs加入ip_hash;

tomcat之-从AT到Cluster

[root@jev6 ~]#service nginx restart

在浏览器打开172.16.250.169/test/index.jsp不断刷新测试,可以看到已经实现会话绑定;

 

tomcat之-从AT到Cluster

[root@jev6 ~]#service nginx stop

3、httpd + tomcat集群基于balancer实现

【安装httpd】

[root@jev6 ~]#yum install httpd

【确认balancer模块正常加载】

 

[root@jev6 ~]#httpd -M | grep proxy_balancer_module
proxy_balancer_module (shared)
[root@jev6 ~]#httpd -v
Server version: Apache/2.2.15 (Unix)

(1)、基于http模块实现会话粘性

【负载均衡配置】

基于http模块反向代理的负载均衡配置如下

 

     <proxy balancer://tcsrvs>
        BalancerMember http://172.16.250.121:8080
        BalancerMember http://172.16.250.122:8080
        ProxySet lbmethod=byrequests
      </Proxy>
      <VirtualHost *:80>
        ServerName lb.jev.com
        ProxyVia On
        ProxyRequests Off
        ProxyPreserveHost On
#          <Proxy *>
#            Require all granted
#          </Proxy>
        ProxyPass / balancer://tcsrvs/
        ProxyPassReverse / balancer://tcsrvs/
#          <Location />
#            Require all granted
#          </Location>
      </VirtualHost>    
###如果httpd版本为2.4,需将上面的6行注释行全部掉,启用授权###
[root@jev6 ~]#vim /etc/httpd/conf.d/tomcat_http.conf

tomcat之-从AT到Cluster

[root@jev6 ~]#service httpd start

通过浏览器访问http://172.16.250.169/test/index.jsp,不断刷新,测试是否正常调度;

【基于route标签实现会话粘性】:

TomcatA:在Engine标签里面(在105行附近)加入jvmRoute="TomcatA"

[root@jev-1 ~]#vim /etc/tomcat/server.xml

tomcat之-从AT到Cluster

[root@jev-1 ~]#service tomcat restart

TomcatB:在Engine标签里面(在105行附近)加入jvmRoute="TomcatB"

[root@jev-2 ~]#vim /etc/tomcat/server.xml

tomcat之-从AT到Cluster

[root@jev-2 ~]#service tomcat restart

在前端httpd配置加入基于route标签粘性配置(下图红色框内部分):

 

     Header add Set-Cookie "ROUTEID=.%{BALANCER_WORKER_ROUTE}e; path=/" env=BALANCER_ROUTE_CHANGED
      <proxy balancer://tcsrvs>
        BalancerMember http://172.18.100.67:8080 route=TomcatA 
        BalancerMember http://172.18.100.68:8080 route=TomcatB 
        ProxySet lbmethod=byrequests
        ProxySet stickysession=ROUTEID
      </Proxy>
[root@jev6 ~]#vim /etc/httpd/conf.d/tomcat_http.conf

tomcat之-从AT到Cluster

重启httpd

[root@jev6 ~]#service httpd restart

【打开浏览器测试】

tomcat之-从AT到Cluster

(2)、基于ajp模块实现会话粘性:

【负载均衡配置】

基于jap模块反向代理的负载均衡配置如下:

 

       <proxy balancer://tcsrvs>
          BalancerMember ajp://172.18.100.67:8009
          BalancerMember ajp://172.18.100.68:8009
          ProxySet lbmethod=byrequests
        </Proxy>
        <VirtualHost *:80>
          ServerName lb.jev.com
          ProxyVia On
          ProxyRequests Off
          ProxyPreserveHost On
          <Proxy *>
            Require all granted
          </Proxy>
          ProxyPass / balancer://tcsrvs/
          ProxyPassReverse / balancer://tcsrvs/
          <Location />
            Require all granted
          </Location>
          <Location /balancer-manager>
            SetHandler balancer-manager
            ProxyPass !
            Require all granted
          </Location>
        </VirtualHost>

将上部分试验的配置文件tomcat_http.conf备份,将http协议改为ajp,端口改为8009,删除route标签,暂时注释掉通过Cookie保存会话的配置:

 

[root@jev6 ~]#cp  /etc/httpd/conf.d/tomcat_http.conf{,.bak}
[root@jev6 ~]#mv  /etc/httpd/conf.d/tomcat_http.conf  /etc/httpd/conf.d/tomcat_ajp.conf

tomcat之-从AT到Cluster

[root@jev6 ~]#vim  /etc/httpd/conf.d/tomcat_ajp.conf

tomcat之-从AT到Cluster

通过浏览器访问http://172.16.250.169/test/index.jsp,不断刷新,测试是否正常调度;

注意:如果http版本为2.4,需将注释掉的<Proxy>和<Location>组件启用;

【基于route标签实现会话粘性】:

恢复刚刚删除以及注释掉的配置,修改后如下图:

tomcat之-从AT到Cluster

到此httpd + tomcat cluster 基于ajp实现完成。

在浏览器打开172.16.250.169/test/index.jsp不断刷新测试,可以看到已经实现会话绑定;

(3)、启用管理接口:

httpd自带有balancer-managerGUI管理接口,可以通过图形界面对后端主机进行监控;

接口启用配置如下:

 

       <Location /balancer-manager>
          SetHandler balancer-manager
          ProxyPass !
#         Require all granted
        </Location>        
###如果httpd版本为2.4,需将去掉"Require all granted"前面的注释(显式授权)###
[root@jev6 ~]#vim  /etc/httpd/conf.d/balancer-manager.conf

tomcat之-从AT到Cluster

在浏览器输入http://172.16.250.169/balancer-manager打开管理界面

tomcat之-从AT到Cluster

[root@jev-1 ~]#service tomcat stop

暂停tomcatA服务,可以看到家tomcatA状态从Ok转为Err:

tomcat之-从AT到Cluster

选中"Worker URL"栏的URL,可以对后端主机进行负载均衡配置及控制;

tomcat之-从AT到Cluster

三、Tomcat 会话复制集群

1、负载均衡配置

前端负载均衡可以参考(二、2)或(二、3)中的负载均衡配置;

2、启用tomcat会话复制

确保server.xml配置文件Engine的jvmRoute属性配置正确,将下列配置放置于<engine>或<host>中,注意各节点配置不同(截图中黄色边框内部分)。

 

       <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.250.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>

【配置tomcatA节点】

[root@jev-1 ~]#vim /etc/tomcat/server.xml

tomcat之-从AT到Cluster

tomcat之-从AT到Cluster

【配置tomcatA节点】

[root@jev-2 ~]#vim /etc/tomcat/server.xml

tomcat之-从AT到Cluster

3、添加<distributable/>元素

拷贝tomcat自带模板到Webapp的WEB-INF/下面:

[root@jev-1 ~]#cp /etc/tomcat/web.xml /var/lib/tomcat/webapps/test/WEB-INF/web.xml

编辑WEB-INF/web.xml,添加<distributable/>元素;

[root@jev-1 ~]#vim /var/lib/tomcat/webapps/test/WEB-INF/web.xml

tomcat之-从AT到Cluster

tomcatB配置同tomcatA;

[root@jev-1 ~]#scp /var/lib/tomcat/webapps/test/WEB-INF/web.xml 172.16.250.122://var/lib/tomcat/webapps/test/WEB-INF/web.xml

tomcat之-从AT到Cluster

在局域网内任意的主机上抓包(本处我选择在centos7上),可以看到两台主机在互相通告:

~]#tcpdump -i eno16777736 -nn port 45564

tomcat之-从AT到Cluster

【测试】

打开浏览器测试,不断刷新,可以发现已经实现会话粘性:

tomcat之-从AT到Cluster

四、session会话保持之session服务器

【Memcached】是一款分布式的内存对象缓存系统,用于减少数据库的负载,加快web应用程序的访问. Memcached简单并且强大,其简单的设计加快了部署,易于开发,缓存解决了面临的大量数据时很多的问题;

【MSM(memcached session manager)】是一款实现Tomcat话保持的管理组件,支持粘性和无粘性的配置, 目前可以在Tomcat6,7,8中使用,并且支持Memcached会话故障转移;

注:本想在centos6.8上实现session会话保持之session服务器,但由于调试了几次,还是实现不了会话粘性,故转移到centos7上做,一次成功,下文调试系统为centos7。centos6.8等日后实现后再补充;

1、集群架构

两个tomcat节点:172.16.250.131(tomcatA.jev.com),172.16.250.132(tomcatB.jev.com)

两个memcache节点(tomcat节点兼):172.16.250.131(n1),172.16.250.132(n2)

一个负载均衡节点:172.16.250.169  (centos6.8)

主体架构:Clients–>172.16.250.169(httpd)–>(tomcatA, tomcatB)–> (n1<–> n2)

tomcat之-从AT到Cluster

各软件版本:

Memcached version "1.4.15", Java(Oracle) version "1.7.0_91",Tomcat version "7.0.54",Httpd version " 2.2.15"

软件环境布置(以节点1为例,节点2于1系统):

[root@jev71 ~]#yum install memcache java-1.7.0-openjdk-devel tomcat-lib tomcat-admin-webapps tomcat-webapps -y

[root@jev71 ~]#systemctl start memcached

[root@jev71 ~]#systemctl start tomcat

tomcat之-从AT到Cluster

2、配置tomcat

memcached-session-manager

项目地址:https://github.com/magro/memcached-session-manager

下载地址:http://repo1.maven.org/maven2/de/javakaffee/msm/

将memcached-session-manager jar添加到tomcat

下载如下jar文件至各tomcat节点的tomcat安装目录下的lib(/usr/share/tomcat/lib)目录中,其中的${version}要换成你所需要的版本号,tc${6,7,8}要换成与tomcat版本相同的版本号。

    memcached-session-manager-${version}.jar

    memcached-session-manager-tc${6,7,8}-${version}.jar

    spymemcached-${version}.jar

    msm-javolution-serializer-${version}.jar

    javolution-${version}.jar

注意:memcached-session-manager-tc7- $ {version} .jar要求tomcat 7.0.23+

本文以msm-1.8.1为例,各jar版本信息如下:

     memcached-session-manager-1.8.1.jar

     memcached-session-manager-tc7-1.8.1.jar

     spymemcached-2.10.2.jar

     msm-javolution-serializer-1.8.1.jar

      javolution-5.4.3.1.jar

分别在两个tomcat上的host上定义一个用于测试的context容器(两节点配置一样),并在其中创建一个会话管理器,如下所示:

 

          <Context path="/test" docBase="test" reloadable="true">
              <Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"
                memcachedNodes="n1:172.16.250.131:11211,n2:172.16.250.132:11211"
                failoverNodes="n2"
                requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$"
                transcoderFactoryClass="de.javakaffee.web.msm.serializer.javolution.JavolutionTranscoderFactory"
              />
             </Context>
[root@jev71 ~]#vim /etc/tomcat/server.xml

tomcat之-从AT到Cluster

[root@jev71 ~]#systemctl restart tomcat

TomcatB配置同上;

3、创建测试页面

【tomcatA】的context提供测试页面:

 

[root@jev71 ~]#mkdir -pv /var/lib/tomcat/webapps/test/WEB-INF/{classes,lib}
[root@jev71 ~]#vim /usr/local/tomcat/webapps/test/index.jsp

添加如下内容:

 

<%@ page language="java" %>
<html>
  <head><title>TomcatA</title></head>
  <body>
    <h1><font color="red">TomcatA.jev.com</font></h1>
    <table align="centre" border="1">
      <tr>
        <td>Session ID</td>
    <% session.setAttribute("jev.com","jev.com"); %>
        <td><%= session.getId() %></td>
      </tr>
      <tr>
        <td>Created on</td>
        <td><%= session.getCreationTime() %></td>
     </tr>
    </table>
  </body>
</html>

tomcat之-从AT到Cluster

从浏览器打开http://172.16.250.131:8080/test/index.jsp效果如下:

tomcat之-从AT到Cluster

【tomcatB】的context提供测试页面:

 

[root@jev72 ~]#mkdir -pv /var/lib/tomcat/webapps/test/WEB-INF/{classes,lib}
[root@jev72 ~]#vim /usr/local/tomcat/webapps/test/index.jsp

添加如下内容:

 

<%@ page language="java" %>
<html>
  <head><title>TomcatB</title></head>
  <body>
    <h1><font color="blue">TomcatB.jev.com</font></h1>
    <table align="centre" border="1">
      <tr>
        <td>Session ID</td>
    <% session.setAttribute("jev.com","jev.com"); %>
        <td><%= session.getId() %></td>
      </tr>
      <tr>
        <td>Created on</td>
        <td><%= session.getCreationTime() %></td>
     </tr>
    </table>
  </body>
</html>

从浏览器打开http://172.16.250.131:8080/test/index.jsp效果如下:

tomcat之-从AT到Cluster

4、配置前端调度器:

注:本章节使用httpd为前端调度器,也可以使用其他调度器;

[root@jev6 ~]#yum install httpd

在172.16.250.169上配置反向代理的负载均衡内容,类似如下所示:

 

<Proxy balancer://tcsrvs>
    BalancerMember  http://172.16.250.121:8080 loadfactor=1
    BalancerMember  http://172.16.250.122:8080 loadfactor=1
    ProxySet  lbmethod=byrequests
</Proxy>
 
ProxyVia Off
ProxyRequests Off
ProxyPass / balancer://tcsrvs/
ProxyPassReverse / balancer://tcsrvs/
<Proxy *>
    Order Allow,Deny
    Allow From all
</Proxy>
 
<Location />
    Order Allow,Deny
    Allow From all
</Location>
[root@jev6 ~]#vim /etc/httpd/conf.d/tomcat_msm.conf

tomcat之-从AT到Cluster

[root@jev6 ~]#service httpd start

5、测试会话保存功能

在浏览器中访问http://172.16.100.6/test,不断刷新,结果如下所示,其session ID在负载均衡环境中保持不变。

tomcat之-从AT到Cluster

tomcat之-从AT到Cluster

从测试结果可以看出,现在启用会话共享服务的memcache节点为n1,此时将n1节点的memcache关闭;

[root@jev71 ~]#systemctl stop memcached

不断刷新,结果如下所示。

tomcat之-从AT到Cluster

tomcat之-从AT到Cluster

此时,其session ID在负载均衡环境中保持不变,只是提供memcache服务的节点转为n2;

实现了基于memcache的会话保持集群;

 

【本文完】

【返回页首】

 

 

 

 


 

原创文章,作者:Jev Tse,如若转载,请注明出处:http://www.178linux.com/68388

(0)
Jev TseJev Tse
上一篇 2017-02-13
下一篇 2017-02-13

相关推荐

  • Linux基础知识—文件系统和常用命令解读

    一、    计算机组成         计算机组成(Computer Composition)指的是计算机系统结构(Computer Architecture)的逻辑实现,包括机器机内的数据流和控制流的组成及逻辑设计等。其任务是在指令集系统结构确定分配给硬件系…

    Linux干货 2016-09-18
  • MHA

    1.关于MHA MHA是一款开源的mysql的高可用程序,它为mysql主从复制架构提供了automating master failover功能。MHA在监控到master节点故障时,会提升其中拥有最新数据的slave节点成为新的master节点,在此期间,MHA会通过与其他从节点获取额外的信息来避免不一致性的问题。MHA还提供了master节点的在线切换…

    2016-11-26
  • MHA安装包及其依赖包下载

    MySQL MHA是一款在业界广泛部署的MySQL高可用软件。但是在安装时,需要安装较多依赖包,并且有些依赖包在操作系统中默认的yum源是不存在的,因此需要到多个地方去寻找相应的包,费时费力。特别是在某些公司的网络政策,只允许少数机器连接外网,因此部署MHA更是苦不堪言。     为了方便大家也是方便以后我自己的使用,…

    Linux干货 2016-12-05
  • 编译内核——制作最适合自己系统的内核

    编译内核: ·程序包的编译安装:         ./configure ,make ,make install ·前提:开发环境(开发工具、开发库),头文件:/usr/include ·开源:源代码–>可执行格式    &nbsp…

    Linux干货 2016-09-11
  • Linux高级文件系统管理之磁盘配额、RAID和LVM的使用

    磁盘配额Quota 磁盘配额(Quota)的作用:   在Linux系统中,由于是多用户、多任务的环境,所以会有多用户共同使用一个硬盘空间的情况发生,如果其中有少数几个用户大量占掉了硬盘空间的话,那肯定影响其他用户的使用权限。因此管理员应该适当限制硬盘的空间给用户,以妥善分配系统资源。 磁盘配额的一般用途    比较常使用的几种…

    Linux干货 2016-09-02
  • Linux 进程及作业管理

    Linux 进程及作业管理 概述:      我们在实际的运维工作中经常要对服务器做各种监控,以了解其相关状态,比如,CPU利用率,磁盘空间利用率,等等,这就需要我们了解相关的数据并学会使用各种工具来分析数据。本章就将总结Linux系统中进程管理和作业管理的相关命令、参数和工具,包括:进程的相关定义、分类、状态以及进程查看和管理…

    Linux干货 2016-09-10