我想知道有多大的应用程序(具有多个应用程序服务器和负载均衡器)可以热更新到实际版本而无需为用户脱机。在这里跳过数据库shema - 仅应用程序层。
例如,有几个由 haproxy 平衡的 glassfish 服务器,我们想要更新位于多个服务器上的应用程序。
在这种情况下使用什么?我知道这可能很复杂,但请告诉我方法。
我想知道有多大的应用程序(具有多个应用程序服务器和负载均衡器)可以热更新到实际版本而无需为用户脱机。在这里跳过数据库shema - 仅应用程序层。
例如,有几个由 haproxy 平衡的 glassfish 服务器,我们想要更新位于多个服务器上的应用程序。
在这种情况下使用什么?我知道这可能很复杂,但请告诉我方法。
Rails 网站经常使用 Capistrano 来部署代码。代码在每台服务器上更新,网络服务器(主要是 apache 或 nginx)通常使用像乘客这样的插件。乘客重新启动并重新加载已更新的代码库(通过 rails 根目录中的 touch tmp/restart 完成)。下一个 Web 请求将发送给使用更新代码的乘客。
Twitter 的大部分内容(据我所知后端处理是在 Erlang 中),我相信几乎所有的 Hulu 都使用与此类似的技术。
在 >1-server-shared-nothing-configuration 中执行此操作的经典方法是使一台服务器离线,即指示前端 Web 服务器或负载平衡器仅将流量引导到其他服务器。
然后可以升级并重新启动脱机服务器。然后重新配置前端以将流量分配到升级后的服务器。
对所有服务器执行此操作最终会导致完整的 umgrade。