使用apache+tomcat+mod_jk.so实现集群

首先我们需要下载apache服务器,这是win下64位下载地址

下载地址:https://www.apachehaus.com/cgi-bin/download.plx?dli=VtWR5V1QNVzTEp0KldUMUBlVOpkVFVFdPZlStRWU

然后我们下载 mod_jk.so

下载地址:http://archive.apache.org/dist/tomcat/tomcat-connectors/jk/binaries/windows/

然后我们准备两个tomcat,注意,如果你配置tomcat的环境变量,需要删除掉,不然会导致无论你启动哪个tomcat都会是启动环境变量下的那个。

我们将两个tomcat分别明明为tomcata和tomcatb

 

在tomcata中我们需要修改配置文件,打开conf/server.xml文件 ,修改端口如下:

<!--添加jvmRoute="tomcat_a"实现集群-->
<Engine defaultHost="localhost" name="Catalina"  jvmRoute="tomcat_a">
<!--注释放开-->
<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/>
<Server port="10005" shutdown="SHUTDOWN">
  <Listener className="org.apache.catalina.startup.VersionLoggerListener"/>

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

<!-- 如果你这里是注释的,需要打开,并且按照我这样配置,不然可能会出错-->
   <Connector protocol="AJP/1.3"
               address="127.0.0.1"
               port="10009"
               redirectPort="8443" secretRequired="" />

 

同样的需要在tomcatb中做同样的配置,记得端口要区别

在tomcata中我们需要修改配置文件,打开conf/server.xml文件 ,修改端口如下:
<!--添加jvmRoute="tomcat_a"实现集群-->
<Engine defaultHost="localhost" name="Catalina"  jvmRoute="tomcat_a">
<!--注释放开-->
<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/>
<Server port="20005" shutdown="SHUTDOWN">
  <Listener className="org.apache.catalina.startup.VersionLoggerListener"/>

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

<!-- 如果你这里是注释的,需要打开,并且按照我这样配置,不然可能会出错-->
   <Connector protocol="AJP/1.3"
               address="127.0.0.1"
               port="20009"
               redirectPort="8443" secretRequired="" />

然后需要将apache服务注册到系统中使用管理员模式打开cmd,进入apache/bin目录

输入以下命令

httpd.exe -k install -n "apache24"

执行成功后就可以在服务里面看到我们注册的服务了,如下

接着我们配置mod_jk.so

首先将我们刚才下载的mod_jk.so复制到Apache24\modules目录下,然后我们在Apache24\conf目录下新建一个workers.properties,内容如下:

worker.list=controller,tomcata,tomcatb

#tomcata
worker.tomcata.type=ajp13
worker.tomcata.host=127.0.0.1
worker.tomcata.port=10009


#负载均衡的权重
worker.tomcata.lbfactor=1

#tomcata
worker.tomcatb.type=ajp13
worker.tomcatb.host=127.0.0.1
worker.tomcatb.port=20009


#负载均衡的权重
worker.tomcatb.lbfactor=2

#controller
worker.controller.type=lb
#负载均衡所用tomcat
worker.controller.balanced_workers=tomcata,tomcatb
worker.controller.sticky_session=false

然后再听一个目录下新建mod_jk.conf文件,里面的配置如下:

#加载mod_jk.so
LoadModule jk_module modules/mod_jk.so
#加载workers.properties
JkWorkersFile conf/workers.properties
JkMount /* controller

然后我们再Apache中引入上面配置的文件,即在Apache24\conf\httpd.conf最后追加

include conf/mod_jk.conf

关于集群的配置就完成了,然后我们新建一个Web项目

里面的web.xml配置如下

<?xml version="1.0" encoding="UTF-8"?>

<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
                      http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
  version="3.1"
  metadata-complete="true"
  >

     <welcome-file-list>
        <welcome-file>UpShow.jsp</welcome-file>
        <welcome-file>index.xhtml</welcome-file>
        <welcome-file>index.htm</welcome-file>
        <welcome-file>index.jsp</welcome-file>
    </welcome-file-list>


    <context-param>
            <param-name>GlobalParam</param-name>
            <param-value>GlobalValue</param-value>
    </context-param>
    
    <!--session共享策略-->
    <distributable/>
</web-app>

新建登录页面index.jsp如下:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>tomcata</title>
</head>
    <body>
        <服务器地址
        <%
            out.print(request.getLocalAddr()+"==="+request.getLocalPort());
        %>
        session
        <%
            out.print(session.getId());
        %>
    </body>
</html>

最后将这两个项目在tomcata和tomcatb中发布,然后我们依次启动apache、tomcata和tomcatb

访问index.jsp,效果如下

刷新一下

我们从tomcata到了tomcatb,表明我们的请求已经被分流了

以上就是使用apache、tomcat和mod_jk.so实现集群的全部操作

 

posted @ 2021-03-15 14:57  二五树  阅读(266)  评论(0编辑  收藏  举报