Ruby on rails apache中有3台精简服务器,但配置文件中有2台—精简服务器会做什么?

Ruby on rails apache中有3台精简服务器,但配置文件中有2台—精简服务器会做什么?,ruby-on-rails,thin,Ruby On Rails,Thin,我刚刚注意到生产服务器上的一个问题,即apache平衡器的配置如下: <Proxy balancer://thin_cluster> BalancerMember http://127.0.0.1:6000 BalancerMember http://127.0.0.1:6001 BalancerMember http://127.0.0.1:6002 ProxySet lbmethod=bybusyness maxattempts=1 timeout=30 <

我刚刚注意到生产服务器上的一个问题,即apache平衡器的配置如下:

<Proxy balancer://thin_cluster>
  BalancerMember http://127.0.0.1:6000
  BalancerMember http://127.0.0.1:6001
  BalancerMember http://127.0.0.1:6002
  ProxySet lbmethod=bybusyness maxattempts=1 timeout=30
</Proxy>

平衡员http://127.0.0.1:6000
平衡员http://127.0.0.1:6001
平衡员http://127.0.0.1:6002
ProxySet lbmethod=bybusyness maxattempts=1超时=30
但是精简配置文件只指定了2台服务器

thin.yml (condensed for brevity)
address: 127.0.0.1
port: 6000
servers: 2    # <-- wrong!!
thin.yml(为简洁起见而压缩)
地址:127.0.0.1
港口:6000

服务器:2#Thin不知道或不关心Apache配置。它只遵循自己的配置,因此只会生成2台服务器

每三个请求都有点慢的原因可能是Apache重新路由了请求。由于两台精简服务器使用的是端口6000和6001,因此从Apache到端口6002的引用无法到达服务器-任何服务器都不使用该端口

Apache仍然尝试将请求发送到那里,因为它也不知道该地址/端口后面是否有服务器。然后它等待超时(几秒钟?),因为没有响应,然后将请求重新路由到其他端口之一(6000或6001)

Apache不会“保存”无法访问的服务器,因为这可能只是一次临时中断。您可能可以通过一些设置来更改此行为(至少在Nginx中是可能的)


您应该删除Apache中的第三个端口定义,或者添加另一个精简服务器。

第三个精简服务器是由monit在我们的机器上启动的,即使第三个服务器正在运行,精简配置文件是否仍然不允许请求进入该服务器?如果第三个服务器在端口6002上运行,这应该没问题,但如果从一个点控制三个实例会更好,这将是使用精简配置(扩展到3台服务器)的
bundle exec
。否则,使用配置关闭服务器只会关闭已知的两台服务器,而不是全部三台。通常,配置仅用于启动和停止-当服务器已经运行时,它不会动态控制服务器,因此2服务器限制不会干扰正在启动的其他服务器。