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  

                     tomcat-connectors-1.2.30-src.tar.gz   等三个版本 都作过测试 ,可以使用

 

平台: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

 

 

 

 

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 

 

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

这个时候 访问

http://127.0.0.1/index.jsp

出现的就是tomcat 默认的页面

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

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

你可能感兴趣的:(apache,tomcat,session,负载均衡,servlet,测试)