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