日期:2014-05-16  浏览次数:21005 次

Apache+Tomcat+Proxy集群要点
   近期在公司项目需要集群部署,根据以前的经验及网上收集的资料搭建了集群环境,但是不太符合要求(至少要求是:将所有的Tomcat服务器隐藏在内网,对外暴露的只是Apache服务器),便对Apache、Proxy、AJP等相关的文档进行了粗略的阅读,无意间搭建出了对应的环境,与之前的环境进行了比较,发现了几点没有注意到的问题,网上也没有明确提出(可能是默认如此的吧),总结了一下Apache集群环境的搭建尤其是Proxy方式的集群环境需要注意一下几点

1、集群分为两种
    一种是采用http协议:这种是直接将请求分派到对应的Tomcat服务器,之后所有的请求均直接由该Tomcat来处理,该方式Apache与Tomcat对用户均是可见的,即url重定向;
    一种是采用ajp协议:将所有的Tomcat服务器隐藏在内网,对外暴露的只是Apache服务器,即所有的请求都交由Apache来处理,Apache则在后台交由注册到Apache的Tomcat来完成,该协议为端口重定向,即根据Tomcat的ajp配置重定向端口,而请求ip地址不变。

2、采用http方式配置集群,Apache与Tomcat没有端口及环境的限制,可以配置在同一个环境上;采用ajp方式配置集群,Apache与Tomcat必须部署在不同的主机上,同时Apache与Tomcat必须使用相同的端口

3、安装Apache时可能需要安装openssl,在unix 64环境上安装openssl需要在config中添加参数-fPIC或者shared,否则安装Apache的时候就会失败,报错如下:
/usr/lib64/gcc/x86_64-suse-linux/4.1.2/../../../../x86_64-suse-linux/bin/ld: /home/apache400/ssl/lib/libssl.a(s2_srvr.o): relocation R_X86_64_32 against `a local symbol' can not be used when making a shared object; recompile with -fPIC
/home/apache400/ssl/lib/libssl.a: could not read symbols: Bad value collect2: ld returned 1 exit status