多个Apache mod_jk服务器指向同一个Tomcat worker?

4
我们有一个Tomcat应用服务器和一个运行Apache和mod_jk的前端Web服务器。我们是否可以添加第二个前端Web服务器,指向相同的应用服务器,并且也运行Apache和mod_jk?
我们这样做不是为了负载均衡,而是为了迁移的原因。新的Web服务器将是完全不同的操作系统,并使用不同的SSO身份验证模块。我们想要能够进行分阶段测试,切换DNS条目使其生效,并停用旧服务器。
当前的workers.properties文件如下:
worker.list=worker1
worker.worker1.type=ajp13
worker.worker1.host=10.x.x.x
worker.worker1.port=8009

我能否将配置文件复制到第二个Web服务器上?

我对这方面没有任何经验或背景,但被要求协助进行服务器迁移并尽力提供帮助。

我一直在阅读mod_jk和Tomcat的文档。我找到了所有指向单个mod_jk实例的多个Tomcat应用程序服务器的各种文档,但没有描述相反情况的文档,而这正是我想要实现的。

这种情况是否可行?

编辑:值得注意的是,我们无法访问Tomcat服务器,因为它由第三方供应商管理。 我们肯定会要求他们进行更改,但我们无法自己登录。


能否使用代理服务器来处理迁移过程?请参考haproxy。 - Siddharth Tyagi
3个回答

2
当然可以。我已经做过几次,甚至只是为了更改Apache提供的静态文件(js、images、css)并使用不同的“皮肤”测试Tomcat应用程序。
通常,在构建高可用性系统时,不仅需要复制Tomcat或其他后端服务器,还需要复制前端Apache、IIS或任何其他使用的服务器。
正如您所说,只需复制workers.properties文件和Apache httpd的*.conf文件中的映射规则即可。
此外,请与Tomcat管理团队核实,Tomcat的AJP端口的传入连接没有受到网络规则或防火墙的限制,以便只有旧的Apache能够访问Tomcat。

2
是的 - 复制将是最容易的。最重要的**是保持工作人员的名称相同。
一个需要注意的问题是确保Tomcat有足够的连接可供两个Web服务器处理。通常默认值足够高,但如果您尝试进行压力测试,则tomcat服务器可能需要在Web服务器上可用的工作进程总和。但是,如果您没有足够的连接,Tomcat会向日志中写入警告。
** 最重要的 - 好吧 - 如果您不使用粘性会话,则不那么重要。但是,如果您在切换Web服务器时尝试使用2个Tomcats进行此实验,则可能会造成混淆。

0
我能否将该配置复制到第二个Web服务器上?
是的,当你想要访问同一个Tomcat服务器时,你可以简单地将Apache实例1中的worker.properties复制到Apache实例2中。如果你只有这4个属性,那么就不需要做任何修改。但是,如果你有一些属性,比如worker.worker1.cachesize=10worker.worker1.cache_timeout=600,并且你想要进行一些调整,那么就可以进行更改。但是最重要的是,因为你想要访问同一个Tomcat实例,所以你可以直接复制。
非Tomcat方式理解 - 你可以有多个HTTP Web服务器(如Apache)拦截所有请求,然后将其转发到同一个应用程序或Web服务器。然而,这种情况并不常见,因为通常的情况是Web服务器负载均衡后端应用程序服务器的请求。
我一直在阅读mod_jk和Tomcat的文档。我找到了各种指向多个Tomcat应用服务器的单个mod_jk实例的文档,但没有描述相反情况的文档,这正是我想要实现的。这是否可能?

你在阅读中找不到答案,因为你正在尝试一个边缘情况。通常人们配置多个Tomcat工作进程来代表某个Web服务器提供Servlet服务,以实现负载均衡、虚拟主机等功能。

你提到你正在做所有这些是为了测试在不同操作系统上运行的Apache,并使用不同的SSO。我假设你的Web服务器(Apache)前面没有硬件负载均衡器,那么你如何访问你的新Apache呢?我认为你需要明确地做这个,因为你当前的URL将指向你的第一个Apache,所以为了访问第二个/新的Apache,你需要给你的测试人员/用户提供包含第二个/新的Apache终端点(IP:端口)的URL。即使你在本地进行所有这些操作,你仍然需要让你的第二个Apache监听不同的端口,或者可能是不同的IP,但这并不常见。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接