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 文件 增加一点特殊 的内容 , 看一看是不是有区别就可以确认了