Apache httped 与Tomcat 通过jk实现负载均衡

apache :  httpd-2.2.15.tar.bz2

tomcat   apache-tomcat-6.0.26.zip  (  也用apache-tomcat-5.5.29.zip测试过可以使用)

mod_jk.so :  mod_jk-1.2.27-httpd-2.2.6.so

                    mod_jk-1.2.26-httpd-2.2.6.so 

平台:gentoo linux   (通过 gentoo emerge 安装的apache httped 测试没通过 ,但用的是同一个版本,估计是Use 标记中某些选项用的不对  ,几经调试没通过后,直接 ./configuration , make make install 方式安装)

安装httped到/opt 目录

./configuratin --prefix=/opt/apache2.2.15

make

sudo make install

由于不是安装的默认目录 ,好像找不到配置文件 httped.conf

可以用命令

 /opt/apache2.2.15/bin/apachectl  -f /opt/apache2.2.15/conf/httpd.conf -k  start

启动服务器

访问 http://127.0.0.1/

确认apache 安装正确

安装tomcat  到  任意 目录


/resource/java/tomcat1/          

  /resource/java/tomcat2/

直接解压即可

,因为是将两个tomcat 装在同一机器 上  默认配置肯定会出现端口冲突

所以对tomcat2 的

  /resource/java/tomcat2/conf/server.xml 进行一定配置

我把所有出现端口的地方均进行了修改

如8080 改为9080 ,  8443 改为9443

除此之外两个

<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />  

这个8009 端口会在apache 中用到,apache 会通过这个端口与tomcat进行通信

我的两个tomcat 中的相应配置如下

<Connector port="8009 " protocol="AJP/1.3" redirectPort="8443" />  

<Connector port="9009 " protocol="AJP/1.3" redirectPort="9443" />  

 


另外

   <Engine name="Catalina"  defaultHost="localhost">

分别 加一个jvmRoute 参数  注意 参数的值 tomcat1 tomcat2 也会在apache 中的配置文件 中用到


   <Engine name="Catalina"  defaultHost="localhost"  jvmRoute="tomcat1" >

   <Engine name="Catalina"  defaultHost="localhost"  jvmRoute="tomcat2" >

下面配置apache

在/opt/apache2.2.15/conf/httped.conf 最末尾加一句

Include /opt/apache2.2.15/conf/mod_jk.conf
也就是把与tomcat 相关的配置想不到 mod_jk.conf 文件 中

注意 需要把下载的 mod_jk-1.2.27-httpd-2.2.6.so    copy 到 /opt/apache2.2.15/modules/下并重命名为mod_jk.so 与上面配置文件 中指定的文件 名相同

 


mod_jk.conf


  
#加载 mod_jk Module  
LoadModule jk_module modules/mod_jk.so                 
  
#指定 workers.properties文件路径    
JkWorkersFile conf/workers.properties   
  
#指定哪些请求交给tomcat处理,"controller"为在workers.propertise里指定的负载分配控制器 
#注意 controller 这个词它会在workers.properties  中出现多次,通常 嵌在某个属性名中,如worker.controller.type=lb  表示与controller 相关的配置  
JkMount /*.jsp controller  
#  你也可以写成   JkMount /* controller   把所有请求交给tomcat  
 
#加载 mod_jk Module
LoadModule jk_module modules/mod_jk.so               
 
#指定 workers.properties文件路径 
JkWorkersFile conf/workers.properties 
 
#指定哪些请求交给tomcat处理,"controller"为在workers.propertise里指定的负载分配控制器
#注意 controller 这个词它会在workers.properties  中出现多次,通常 嵌在某个属性名中,如worker.controller.type=lb  表示与controller 相关的配置
JkMount /*.jsp controller
#  你也可以写成   JkMount /* controller   把所有请求交给tomcat 

conf/workers.properties   文件 中的内容

 #这里只有一个负载均衡器,名字叫controller   
worker.list=controller 
#与controller 相关的配置 , 
#类型lb 不太懂也不用懂  
worker.controller.type=lb 
# controller 会把给它的请求交给tomcat1 ,tomcat2 进行处理, 
#注意 tomcat1 ,tomcat2 就是在tomcat/conf/server.xml 中jvmRoute="tomcat2" 指定的名字  
worker.controller.balance_workers=tomcat1,tomcat2 
# 这个参数,好像是说servlet 中的session 相同的话会发给同一个tomcat 来处理,没加确认 (如果按这个理解 的话如果设为0 可能它会进行会话同步,就是会把tomcat1中的session copy 一份到tomcat2 中以保持 会话的连续性,好像耗流量)  
worker.controller.sticky_session=1  
下面就分别是tomcat1 tomcat2 相关的配置  
#========tomcat1======== 
#这个8009 端口需要注意 要与server.xml 中的配置相同 ,上文提到过  
worker.tomcat1.port=8009   #tomcat1的ajp端口 
# 这个可以写成ip 地址  
worker.tomcat1.host=localhost  
worker.tomcat1.type=ajp13  
worker.tomcat1.lbfactor=1 
#worker.tomcat1.stopped=1 
#========tomcat2========  
worker.tomcat2.port=9009   #tomcat2的ajp端口  
worker.tomcat2.host=localhost  
worker.tomcat2.type=ajp13  
worker.tomcat2.lbfactor=1 
#worker.tomcat2.stopped=1  
#这里只有一个负载均衡器,名字叫controller
worker.list=controller
#与controller 相关的配置 ,
#类型lb 不太懂也不用懂
worker.controller.type=lb
# controller 会把给它的请求交给tomcat1 ,tomcat2 进行处理,
#注意 tomcat1 ,tomcat2 就是在tomcat/conf/server.xml 中jvmRoute="tomcat2" 指定的名字
worker.controller.balance_workers=tomcat1,tomcat2
# 这个参数,好像是说servlet 中的session 相同的话会发给同一个tomcat 来处理,没加确认 (如果按这个理解 的话如果设为0 可能它会进行会话同步,就是会把tomcat1中的session copy 一份到tomcat2 中以保持 会话的连续性,好像耗流量)
worker.controller.sticky_session=1
下面就分别是tomcat1 tomcat2 相关的配置
#========tomcat1========
#这个8009 端口需要注意 要与server.xml 中的配置相同 ,上文提到过
worker.tomcat1.port=8009   #tomcat1的ajp端口
# 这个可以写成ip 地址
worker.tomcat1.host=localhost
worker.tomcat1.type=ajp13
worker.tomcat1.lbfactor=1
#worker.tomcat1.stopped=1
#========tomcat2========
worker.tomcat2.port=9009   #tomcat2的ajp端口
worker.tomcat2.host=localhost
worker.tomcat2.type=ajp13
worker.tomcat2.lbfactor=1
#worker.tomcat2.stopped=1 

之后分别启动 tomcam1 tomcat2 apache   三个服务器,(看一看两个tomcat 的日志 有没有报错,一般会出现端口冲突  )

这个时候 访问

http://127.0.0.1/index.jsp

出现的就是tomcat 默认的页面

此时还没法确认是否两个tomcat 都正常工作

以可以修改 tomcat/webapps/Root/index.jsp 文件 增加一点特殊 的内容 , 看一看是不是有区别就可以确认了

相关推荐