Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/tfs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Tomcat HTTP负载平衡行为_Tomcat_Architecture_Load Balancing - Fatal编程技术网

Tomcat HTTP负载平衡行为

Tomcat HTTP负载平衡行为,tomcat,architecture,load-balancing,Tomcat,Architecture,Load Balancing,我试图了解在应用程序服务器出现故障时这种设置的系统行为: 两台托管web应用程序的tomcat服务器前面的硬件负载平衡器 负载平衡器粘性激活 使用持久会话管理器或在集群中配置的两个Tomcat 我的理解是,如果两个tomcat中的一个在服务请求时崩溃,用户会收到一条http错误消息,当他尝试刷新页面时,均衡器会将用户重定向到工作的tomcat,该tomcat将再次开始处理请求 这是正确的吗?当处理请求的服务器出现故障时,无法避免用户收到错误消息?行为取决于负载平衡器的配置方式、从tomcat

我试图了解在应用程序服务器出现故障时这种设置的系统行为:

  • 两台托管web应用程序的tomcat服务器前面的硬件负载平衡器
  • 负载平衡器粘性激活
  • 使用持久会话管理器或在集群中配置的两个Tomcat
我的理解是,如果两个tomcat中的一个在服务请求时崩溃,用户会收到一条http错误消息,当他尝试刷新页面时,均衡器会将用户重定向到工作的tomcat,该tomcat将再次开始处理请求


这是正确的吗?当处理请求的服务器出现故障时,无法避免用户收到错误消息?

行为取决于负载平衡器的配置方式、从tomcat服务器收到的错误以及应用程序的行为

负载平衡器将定期(每隔几秒钟)检查其监控的服务器的运行状况;因此,单个服务器完全有可能在用户请求之间崩溃并引起负载平衡器的注意。然后,服务器从组中取出,当用户下次刷新时,它们被引导到剩余的服务器中,不知道中间有任何错误。p> 然而,这取决于您的应用程序是无状态的。如果任何状态存储在单个服务器上(这意味着使用粘性会话),那么当用户重定向到另一个服务器时,他们可能会遇到会话超时或其他错误,必须重新登录并重新启动。因此,避免用户出错的第一步是使应用程序无状态或以某种方式有效地共享状态

还值得考虑应用程序是如何失败的,以及负载平衡器是否会检测到它。通常为第4层或第7层健康检查配置负载平衡器

第4层检查Web服务器是否正在侦听给定端口(例如端口80)。只要有响应,服务器就保持在组中。这对于服务器向上/向下类型的监视很好,但您可能会遇到这样的情况:应用程序出错或冻结,但Web服务器在端口80上响应,用户仍被定向到它


第7层检查配置为监视的网页上的给定内容。这更像是“真实世界”的监控,因为它查看的内容与用户相同,并且会因为应用程序级问题而将服务器从组中移除。

好的,在您的回答中一切都很清楚,但我仍然有疑问。假设我们有一个负载平衡器在第7层工作,对后端服务器设置进行适当的健康检查。后端服务器正在工作,请求被路由到后端1。现在,后端服务器开始处理请求,当它处理请求时,发生了一些事情,服务器崩溃。在这种情况下,我认为用户将收到错误消息,没有办法避免这种情况。我说的对吗?是的,如果在处理请求时发生崩溃,则该请求将出错。根据应用程序的配置方式,接下来会发生什么变化。如果是无状态的,则刷新,然后转到良好的服务器,并继续。如果是有状态的,那么他们的会话数据将丢失,他们可能需要重新登录,等等。