网站升级 - 避免停机

网站升级 - 避免停机

我被要求调查如何减少我们网站升级的停机时间。

我们维护一个 DNN 网站,其中包含面向公众的页面和仅限会员的页面。仅限会员的页面直接链接到我们的核心应用程序数据库,而面向公众的页面则不链接。

我们目前的流程是在升级过程开始后立即重定向网站用户,其中包括

  • Prod DB 的备份
  • 更新产品数据库
  • 更新可执行文件(应用程序)
  • 升级网站应用程序(如果需要更新)
  • 安装依赖项
  • 升级通信引擎、支付代理等子系统
  • 更新各种配置文件
  • 执行系统测试
  • 重启所有服务
  • 允许访问网站

此过程可能需要 2 到 8 个小时,具体取决于所需的升级、要运行的脚本、数据库的大小以及门户的数量。

我最初的想法是限制用户只能阅读页面,并且任何更新页面都不可用。

有人能针对我认为常见的问题提供最佳实践建议吗,以便我们可以减少停机时间,如果我们需要改变基础设施,我可以把这个问题提交给我们的技术部门。

答案1

您是否实践过任何敏捷部署方法?我的第一个建议是衡量部署的哪些部分花费的时间比预期的要长,并对其进行优化。尝试将数据库部署与代码部署计划分开。

由于您每晚都会备份数据库(对吗?),因此如果需要,应该不会有太多数据需要回滚。虽然我不是数据库专家,但我确信您可以简单地使用脚本更新需要更新的数据库架构,而无需花费太多时间。

您可以通过脚本轻松地将 dll 和资源部署到站点,而无需中断现有会话。

在部署到生产环境之前,您应该在临时服务器上进行大部分测试。因此,一旦部署完成,您就不需要在生产环境中进行太多测试。

我鼓励你研究持续集成或持续部署(http://continuousdelivery.com/)。

答案2

我会建议:

a) 设置站点 RO

b) 进行数据库备份//应该很快。如果不是,请使用 redgate 或其他东西来加快速度

c) db update:// 应该很快。如果不是,则说明您经常进行太大的更改。

d) 所有代码都应该在准备阶段进行预测试。您应该能够启动网站,然后在网站上线时进行测试(因为您非常有信心测试会通过)

我们有一个非常大的.net 应用程序,位于 500gb sql 服务器数据库之上,我们的步骤与您的相同,但我们只有几分钟的停机时间来进行升级(我们每周进行几次)。

相关内容