解说Apache+Tomcat+JK实现Tomcat的负载和集群(2)

所要做工作就是开启虚拟主机,并加上mod_jk.conf这个模块,如下所示:

 

# cp httpd.conf httpd.conf.bak (改变之前要备份一下) 

# vim httpd.conf 

在httpd.conf文件中找到:“Include conf/extra/httpd-vhosts.conf”把前的#号去掉即可。 

接着在后面加入一行: 

Include conf/mod_jk.conf 

完成之后,首来做虚拟主机吧。

 

# cd /usr/local/apache/conf/extra 

# vim httpd-vhosts 

把原有的虚拟主机注释掉,加入如下所示的行: 

<VirtualHost *:80> 

    ServerName  

    JkMountFile conf/uriworkermap_app1.properties 

</VirtualHost> 

在这里我们看到有两个我们不明白的一个就是mod_jk.conf, 一个就是:

uriworkermap_app1.properties

这两个文件中做什么的,接着看下面:

先来创建mod_jk.conf这个文件,这个文件当然是在/usr/local/apache/conf/这个目录下创建了,在httpd.conf中你指定的目录,我指定的是这个目录,所以我在这个目录下创建。内容如下:

 

# vim mod_jk.conf 

 

LoadModule jk_module modules/mod_jk.so   

JkWorkersFile conf/workers.properties   

JkLogFile "logs/mod_jk.log"   

JkLogLevel info   

JkLogStampFormat "[%a %b %d %H:%M:%S %Y]"   

JkOptions +ForwardKeySize +ForwardURICompat -ForwardDirectories   

JkRequestLogFormat "%w %V %T"   

JkShmFile logs/jk.shm   

HostnameLookups Off   

在这里说明一下文件的内容:

第一句是加载mod_jk.so这个模块的。

第二名是JKWorkersFile 指定负载均衡服务器的配置文件,文件名为相对于apache服务器所在目录的

第三句是JKLogFile 指定JK连接器的日志输出文件,文件为相对于apache服务器所在目录的logs/mod_jk.log文件

第四句:JKLogLevel 是指的日志级别。级别为warn以上的日志将被输出到日志文件中,可选的值级别由低到高分别为:TRACE DEBUG INFO WARN ERROR FATAL

下面的几句我也不知道是什么意思,这个是在网上找的某大神的作品,

好了,下面再来说一下,workers.properties这个文件

同样在/usr/local/apache/conf/目录下创建,内容如下:

 

worker.list=tomcat,jkstatus   

#107     

worker.server107.port=8009   

worker.server107.host=192.168.1.107   

worker.server107.type=ajp13   

worker.server107.lbfactor=10   

worker.server107.cachesize=5   

   

#139   

worker.server139.port=8009   

worker.server139.host=192.168.1.139   

worker.server139.type=ajp13   

worker.server139.lbfactor=10   

worker.server139.cachesize=5   

   

worker.tomcat.type=lb   

worker.tomcat.balance_workers=server107, server139 

worker.tomcat.sticky_session_force=false 

   

 

worker.jkstatus.type=status 

worker.jkstatus.mount=/admin/jk 

worker.retries=3 

解释一下:

worker.list 是定义了两个工作列表:一个是tomcat,一个是jkstatus 。在tomcat列表中定义了两个tomcat_server,一个是:server107,一个是:server139。

worker.server107.port=8009 是定义了端口号,一定是tomcat中server.xml中的8009 。这里我是在两台不同机器上的虚拟机做的,所以端口号没有改变。如果是在一台虚拟上做的两个Tomcat,那么只需要第二个Tomcat的端口号设置的与第一个Tomcat的端口号不同就行了,具体随意,只要能用就行。

worker.server107.host 这个是定义主机。

worker.server107.type=ajp13 JK模块实现负载均衡采用的是AJP协议1.3版本,因此第一台负载均衡服务器的类型配置为ajp13

worker.server107.lbfactor 第一台负载均衡服务器在整个负载均衡系统中所占的权重,这里配置为10,权重越大,越有可能处理更多的请求,建议给性能好的机器配置更高的权重。

worker.s1.cachesize:apache服务器是多线程的,tomcat能够利用这一优势来维持一定数量的连接作为缓存。根据用户的多少来配置一个合适缓存连接数量有助于提高性能。这里配置为5

 

下面的都相同了,如果有多个Tomcat同样一样的配置,所用的参数自己来调即可。

 

worker.tomcat.type=lb  这个是配置tomcat的类型为“lb”也就是Load Balance负载均衡。

worker.tomcat.balance_workers=server107,server139 这个是负载均衡的两个tomat的server名称。

worker.tomcat.sticky_session_force=flase 

  设置负载均衡是否采用粘性会话。如果该属性设置为true,假设一个请求被server107处理了,下次来源于同一个客户端的请求也将被server107处理。直到server107已经达到最大连接数,JK才会将会话切换到其他服务器上。但是如果恰巧一直负责处理该会话的服务器down掉了,则会话将会丢失,明显的故障现象就是关于session的操作会出现莫名其妙的错误(例如你所运行的应用中用户可能已经登录了,但突然在一次访问后莫名其妙地提示没有登录)。这里配置为false,不启用粘性会话,让服务器都有机会处理请求,提高了系统的稳定性。

worker.jk_watcher.type=status 这里配置为status,用于监视各个负载均衡服务器实例的运行状态

worker.jk_watcher.mount=/tomcat/jk 设置名称为“jk_watcher”的worker(负载均衡服务器实例监视器)的挂载路径,这里配置为/tomcat/jk

worker.retries=5 这是worker全局的重试次数。在apache服务器启动后,会最多尝试若干次去连接这些负载均衡服务器,若连接不上就认为是down掉了,这里配置为3

下面再来说一下 uriworkermap_app1.properties 这个文件

这个文件的作用是告诉apache服务器哪些请求由负载均衡服务器处理,文件内容如下:

 

/*=tomcat 

/jkstatus=jk_watcher 

!/*.gif=tomcat 

!/*.jpg=tomcat 

!/*.tif=tomcat 

!/*.png=tomcat 

说明一下,在配置文件中,以“!”开头的条件表示“不要”,“=”表示交给。

/*=tomcat

其中“/*”表示所有的请求都给tomcat(就是在worker.properties中定义的那个worker.list中的tomcat)

/jkstatus=jk_watcher

 

!/*.gif=tomcat

!/*.jpg=tomcat

!/*.tif=tomcat

!/*.png=tomcat

这些表示以“.gif”等结尾的不交于tomcat处理。

 

以上完成了在Apache上的配置,下面先来配置Tocmat中的sever.xml文件来实现简单的负载均衡。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/f365350e13185f12e3b1d01ff6962c43.html