我们正准备从以下环境迁移:
Apache 2.0.2 –AJP – > JBoss4.2.2
至
Apache 2.2.3 – ??? – > JBoss 5.1.0
你将如何join到一起?
选项是:
选项2是目前最stream行的解决scheme,因为由于不再需要翻译来自AJP的JBoss响应,这似乎意味着处理较less,CPU时间是我们需要密切关注的基础设施。 选项2和3也与Red Hat支持的Apache版本一起提供。
目前我看不到我们select1,因为我们通过选项3获得AJP'免费'。
因此,选项2和3有什么优点和缺点? 关于CPU负载的担忧是否真的是我们需要担心的事情? 在处理二进制数据(AJPstream量)时,我们会减less带宽和IO吗?
我们的基础设施将是Apache在同一个RHEL 5机器上面对9个经严格调整的JBoss(但通常约为其一半),这是在私有云中虚拟化的。
预先感谢任何指针/build议。
丰富
2 mod_proxy_http ,除非你需要客户端的主机头。
我不build议使用经典的mod_jk,因为它的function已经被mod_proxy_ajp所替代了,正如你自己所说的,它需要自己构build和维护这个模块。
我认为mod_proxy_http是一个非常干净的解决scheme,它需要从图片中的ajp。 但是,您应该注意从ajp到http的一些注意事项。 如果您需要访问服务器标题完全按照apache接收(包括主机标题),您应该使用ajp。 JBoss将会看到来自apache的新的http请求,而不是原来的客户端。 如果你只需要客户端的远程IP地址,你仍然可以通过一个特殊的头文件来获得这个头文件。 但是,如果您正在从应用程序层进行虚拟主机托pipe,则最好使用ajp。
就性能而言,ajp或http将需要JBoss和一些本地套接字TCPstream量的一些处理。 您将不得不尝试两种方式来查看哪一个更有效,但是我认为总的来说,这只占服务器总负载的一小部分。 Http是一个更复杂的协议,而且ajp专门devise用于在Web和应用程序层之间进行高效的处理,所以理论上ajp可能更好。 也就是说,我发现http通常在Tomcat应用程序服务器行之外受到更好的支持。
我使用mod_proxy_ajp和mod_proxy_http,我没有任何问题。
如果使用ProxyPreserveHost On , Host标头将正确传递