繁体   English   中英

将代码推送到生产环境时保持服务器网关处于活动状态

[英]Keep server gateway alive when pushing code to production

所以这是我最近遇到的事情,因为这经常发生在我身上,而且不得不让办公室里的每个人都知道由于我将代码推送到生产环境而导致服务器停机,这有点烦人。 这通常只发生在热修复/错误修复期间。 我在网上搜索了这个问题,但实际上并没有太多关于如何做这样的事情的信息。 有没有办法在我将代码推送到生产环境而不中断服务的情况下保持服务器网关正常运行?

我正在运行一个使用expressReact应用程序,该应用程序托管在AWS EC2服务器上,我在该服务器上提取代码并重新启动应用程序。 如果有帮助的话,我还使用NGINX作为我服务器的网关。

我唯一能想到的是,如果有一种方法可以在我推送新代码时让服务器识别出应用程序已中断并使用旧代码。 推送新代码后,它会识别出应用程序再次运行,而是在不中断服务的情况下使用新代码运行它。

这可能是一个非常模糊的描述,但希望有人能理解我在这里想要表达的意思。 如果有人有任何建议,我将不胜感激。 谢谢!

您通常需要运行服务器的多个实例,因此您配置路由器或负载平衡器,以便一个实例是主要实例(接收所有传入请求),当另一个实例完成处理它正在处理的任何请求时,您可以停止它并升级它,然后启动新升级的服务器,然后反向升级另一个实例。

这两个实例可以始终运行并且每个都服务于一些新请求,或者第二个实例只能在升级过程中使用。

这是一个简化的序列:

  1. 创建升级的服务器实例(在磁盘上的新目录位置)
  2. 启动那个服务器
  3. 配置负载均衡器或路由器以将所有新传入请求路由到新升级和启动的服务器实例
  4. 等到原始服务器实例完成为它正在处理的所有请求提供服务(此时它应该没有新的传入请求),然后将其关闭。
  5. 如果你一次只打算保持一个服务器实例运行,那么删除原始服务器实例的代码,这样它就不会意外地被再次使用,这样你就只使用新升级的实例。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM