首先我们需要下载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复制到Apache24modules目录下,然后我们在Apache24conf目录下新建一个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中引入上面配置的文件,即在Apache24confhttpd.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实现集群的全部操作