1 安装apache,我安装的版本是apache_2.0.55-win32-x86-no_ssl.msi,如果安装后能够正常开启和关闭即表示可以使用
2 下载mod_jk-1.2.8-apache-2.0.52.so,将这个文件复制到apache安装目录下的modules文件夹
3 下面开始配置集群
a: 在apache的安装目录的conf目录下找到httpd.conf文件并打开,在文件的最下面添加以下内容
include conf/mod_jk.conf
b: 在conf目录下新建mod_jk.conf,并用记事本打开,并添加以下内容
#加载mod_jk Module
LoadModule jk_module modules/mod_jk-1.2.31-httpd-2.0.52.so
#指定 workers.properties文件路径
JkWorkersFile conf/workers.properties
#加载workers的请求处理分配文件
JkMountFile conf/uriworkermap.properties
#指定jk的日志输出文件
JkLogFile logs/mod_jk.log
#指定日志级别
JkLogLevel warn
#指定那些请求交给tomcat处理,"controller"为在workers.propertise里指定的负载分配控制器
JkMount /* controller
c: 在conf目录下新建workers.properties文件,并添加以下内容
#server 列表
worker.list = controller,tomcat1,tomcat2
#========tomcat1========
#ajp13 端口号,在tomcat下server.xml配置,默认8009
worker.tomcat1.port=8019
#tomcat的主机地址,如不为本机,请填写ip地址
worker.tomcat1.host=localhost
worker.tomcat1.type=ajp13
#server的加权比重,值越高,分得的请求越多
worker.tomcat1.lbfactor = 2
#========tomcat2========
#ajp13 端口号,在tomcat下server.xml配置,默认8009
worker.tomcat2.port=8029
#tomcat的主机地址,如不为本机,请填写ip地址
worker.tomcat2.host=localhost
worker.tomcat2.type=ajp13
#server的加权比重,值越高,分得的请求越多
worker.tomcat2.lbfactor = 1
#========controller,负载均衡控制器========
worker.controller.type=lb
#指定分担请求的tomcat
worker.controller.balanced_workers=tomcat1,tomcat2
#重试次数
worker.retries=3
#粘性Session(默认是打开的) 当该属性值=True(或1)时,代表Session是粘性的,
#即同一Session在集群中的同一个节点上处理,Session不跨越节点。在集群环境中,一般将该值设置为False
worker.controller.sticky_session=False
以上内容中的tomcat端口号需要根据tomcat的配置进行相应的修改,如果tomcat中的端口按照上面的配置配置的话是不需要修改的,这个后面再说。
c: 在conif目录下新建uriworkermap.properties文件(内容为空),同时在安装目录下logs文件夹中新建mod_jk.log文件(内容为空),
两个文件都必须要创建,否则会导致apache无法启动.
到此为止,apache的配置基本结束了,为了保险起见,建议将apache重新启动试一试,如果启动和停止正常则表示配置正确,如不能启动可能是配置有错误。
假设以上配置正确,下一步需要配置tomcat,等tomcat配置好之后,再根据目录下的workers.properties文件配置相关的端口。
--------------------------
tomcat配置
tomcat+JDK的安装就不一一介绍了,直接介绍配置集群的配置。
1 首先准备两个完全一致的tomcat,就叫tomcat1和tomcat2吧(以下内容以tomcat1的配置为主,因为两个配置都大部分一样),
同一机器中实现集群需要使用免安装的版本的tomcat。
2 打开tomcat1目录下的conf文件夹,找到server.xml文件并打开
将
<Server port="8005" shutdown="SHUTDOWN">
改成
<Server port="8015" shutdown="SHUTDOWN">
同理需要修改tomcat2中的内容,可以将端口改成8025,目的是为了避免端口冲突
3 将
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
改成
<Connector port="8081" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
同样修改tomcat2中的内容,端口改成8082,目的还是为了避免端口冲突
4 将
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
改成
<Connector port="8019" protocol="AJP/1.3" redirectPort="8443" />
同样修改tomcat2中的端口为8029
在这里配置的端口需要与刚刚配置在apache中workers.properties文件里端口一致
#========tomcat1========
#ajp13 端口号,在tomcat下server.xml配置,默认8009
worker.tomcat1.port=8019
#========tomcat2========
#ajp13 端口号,在tomcat下server.xml配置,默认8009
worker.tomcat2.port=8029
以上所有修改都必须tomcat1和tomcat2同步修改,且端口不能一样。
配置到这里,集群就算是完成了,但是有一点需要说明的是,以上的配置并不能实现Session的共享,
在实际项目当中,Session必须是要实现多tomcat之间共享的。
所以,接下来我们开始配置Session共享。
同样打开tomcat目录中conf文件夹下的server.xml文件。
A、修改Engine节点信息
将
<Engine name="Catalina" defaultHost="localhost" >
改成
<Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcat1">
同理将tomcat2中的改为
<Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcat2">
B、去掉tomcat1和tomcat2中<Cluster> <\Cluster> 的注释符
C、将以下内容添加到<Cluster> <\Cluster>节点中,修改Cluster 节点信息
<Membership
className="org.apache.catalina.cluster.mcast.McastService"
mcastBindAddress="127.0.0.1"
mcastAddr="224.0.0.1"
mcastPort="45564"
mcastFrequency="500"
mcastDropTime="3000"/>
<Receiver
className="org.apache.catalina.cluster.tcp.ReplicationListener"
tcpListenAddress="127.0.0.1"
tcpListenPort="4001" 这里一定要修改,tomcat1和tomcat2不能相同
tcpSelectorTimeout="100"
tcpThreadCount="6"/>
修改mcastBindAddress属性和tcpListenAddress属性的值为本机IP地址
修改tcpListenPort属性的值,且tomcat1和tomcat2的值不能相同,tomcat2中可设置为4002
完成以上的配置之后,apache和tomcat的配置就完成了,但是需要实现Session共享还需要最后关键的配置,需要对发布的项目进行相关的修改。
1 发布的项目中,所有需要放置在Session中的对象必须实现序列化接口
implements java.io.Serializable
2 发布的项目中的web.xml文件中加入<distrbutable/>标签,放置在</web-app>之前即可
以上两项缺一不可,否则发布的系统会出现莫名其妙的问题,如无法登录/系统报错等等。
以上就是所有关于apache集群的所有配置。
提供两篇文章供参考:
http://blog.youkuaiyun.com/yipanbo/article/details/44079083
http://liuyu.blog.51cto.com/183345/113544/
2 下载mod_jk-1.2.8-apache-2.0.52.so,将这个文件复制到apache安装目录下的modules文件夹
3 下面开始配置集群
a: 在apache的安装目录的conf目录下找到httpd.conf文件并打开,在文件的最下面添加以下内容
include conf/mod_jk.conf
b: 在conf目录下新建mod_jk.conf,并用记事本打开,并添加以下内容
#加载mod_jk Module
LoadModule jk_module modules/mod_jk-1.2.31-httpd-2.0.52.so
#指定 workers.properties文件路径
JkWorkersFile conf/workers.properties
#加载workers的请求处理分配文件
JkMountFile conf/uriworkermap.properties
#指定jk的日志输出文件
JkLogFile logs/mod_jk.log
#指定日志级别
JkLogLevel warn
#指定那些请求交给tomcat处理,"controller"为在workers.propertise里指定的负载分配控制器
JkMount /* controller
c: 在conf目录下新建workers.properties文件,并添加以下内容
#server 列表
worker.list = controller,tomcat1,tomcat2
#========tomcat1========
#ajp13 端口号,在tomcat下server.xml配置,默认8009
worker.tomcat1.port=8019
#tomcat的主机地址,如不为本机,请填写ip地址
worker.tomcat1.host=localhost
worker.tomcat1.type=ajp13
#server的加权比重,值越高,分得的请求越多
worker.tomcat1.lbfactor = 2
#========tomcat2========
#ajp13 端口号,在tomcat下server.xml配置,默认8009
worker.tomcat2.port=8029
#tomcat的主机地址,如不为本机,请填写ip地址
worker.tomcat2.host=localhost
worker.tomcat2.type=ajp13
#server的加权比重,值越高,分得的请求越多
worker.tomcat2.lbfactor = 1
#========controller,负载均衡控制器========
worker.controller.type=lb
#指定分担请求的tomcat
worker.controller.balanced_workers=tomcat1,tomcat2
#重试次数
worker.retries=3
#粘性Session(默认是打开的) 当该属性值=True(或1)时,代表Session是粘性的,
#即同一Session在集群中的同一个节点上处理,Session不跨越节点。在集群环境中,一般将该值设置为False
worker.controller.sticky_session=False
以上内容中的tomcat端口号需要根据tomcat的配置进行相应的修改,如果tomcat中的端口按照上面的配置配置的话是不需要修改的,这个后面再说。
c: 在conif目录下新建uriworkermap.properties文件(内容为空),同时在安装目录下logs文件夹中新建mod_jk.log文件(内容为空),
两个文件都必须要创建,否则会导致apache无法启动.
到此为止,apache的配置基本结束了,为了保险起见,建议将apache重新启动试一试,如果启动和停止正常则表示配置正确,如不能启动可能是配置有错误。
假设以上配置正确,下一步需要配置tomcat,等tomcat配置好之后,再根据目录下的workers.properties文件配置相关的端口。
--------------------------
tomcat配置
tomcat+JDK的安装就不一一介绍了,直接介绍配置集群的配置。
1 首先准备两个完全一致的tomcat,就叫tomcat1和tomcat2吧(以下内容以tomcat1的配置为主,因为两个配置都大部分一样),
同一机器中实现集群需要使用免安装的版本的tomcat。
2 打开tomcat1目录下的conf文件夹,找到server.xml文件并打开
将
<Server port="8005" shutdown="SHUTDOWN">
改成
<Server port="8015" shutdown="SHUTDOWN">
同理需要修改tomcat2中的内容,可以将端口改成8025,目的是为了避免端口冲突
3 将
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
改成
<Connector port="8081" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
同样修改tomcat2中的内容,端口改成8082,目的还是为了避免端口冲突
4 将
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
改成
<Connector port="8019" protocol="AJP/1.3" redirectPort="8443" />
同样修改tomcat2中的端口为8029
在这里配置的端口需要与刚刚配置在apache中workers.properties文件里端口一致
#========tomcat1========
#ajp13 端口号,在tomcat下server.xml配置,默认8009
worker.tomcat1.port=8019
#========tomcat2========
#ajp13 端口号,在tomcat下server.xml配置,默认8009
worker.tomcat2.port=8029
以上所有修改都必须tomcat1和tomcat2同步修改,且端口不能一样。
配置到这里,集群就算是完成了,但是有一点需要说明的是,以上的配置并不能实现Session的共享,
在实际项目当中,Session必须是要实现多tomcat之间共享的。
所以,接下来我们开始配置Session共享。
同样打开tomcat目录中conf文件夹下的server.xml文件。
A、修改Engine节点信息
将
<Engine name="Catalina" defaultHost="localhost" >
改成
<Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcat1">
同理将tomcat2中的改为
<Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcat2">
B、去掉tomcat1和tomcat2中<Cluster> <\Cluster> 的注释符
C、将以下内容添加到<Cluster> <\Cluster>节点中,修改Cluster 节点信息
<Membership
className="org.apache.catalina.cluster.mcast.McastService"
mcastBindAddress="127.0.0.1"
mcastAddr="224.0.0.1"
mcastPort="45564"
mcastFrequency="500"
mcastDropTime="3000"/>
<Receiver
className="org.apache.catalina.cluster.tcp.ReplicationListener"
tcpListenAddress="127.0.0.1"
tcpListenPort="4001" 这里一定要修改,tomcat1和tomcat2不能相同
tcpSelectorTimeout="100"
tcpThreadCount="6"/>
修改mcastBindAddress属性和tcpListenAddress属性的值为本机IP地址
修改tcpListenPort属性的值,且tomcat1和tomcat2的值不能相同,tomcat2中可设置为4002
完成以上的配置之后,apache和tomcat的配置就完成了,但是需要实现Session共享还需要最后关键的配置,需要对发布的项目进行相关的修改。
1 发布的项目中,所有需要放置在Session中的对象必须实现序列化接口
implements java.io.Serializable
2 发布的项目中的web.xml文件中加入<distrbutable/>标签,放置在</web-app>之前即可
以上两项缺一不可,否则发布的系统会出现莫名其妙的问题,如无法登录/系统报错等等。
以上就是所有关于apache集群的所有配置。
提供两篇文章供参考:
http://blog.youkuaiyun.com/yipanbo/article/details/44079083
http://liuyu.blog.51cto.com/183345/113544/