问题标签 [downtime]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
2757 浏览

docker - 单页应用程序 (SPA) 的零停机/蓝绿部署

昨天,我们与团队一起讨论了使用零停机时间部署来支持我们的单页应用程序的可能性。

在讨论它时,我们确定了它的一个边缘案例。用户在浏览器中加载页面后,在重新加载页面之前无法将其从内存中删除。这意味着如果用户加载页面并开始使用该网站(例如开始像我现在所做的那样开始输入一篇长文章),那么在他重新加载页面之前,他无法接收到它的更新版本。

我们可以忽略用户在其浏览器中看到旧应用程序版本的事实,但下面列出了 2 点。

  1. 如果我们对用于服务 spa 的 HTTP Api 进行重大更改,那么用户将无法保存他的文章(数据丢失!)或者在执行其他后端相关操作时可能会收到其他错误。
  2. 当用户在不重新加载 SPA 的情况下导航到新页面时,他可以收到下一页的模板或与外部旧容器不兼容的某些控件的模板。它可能会导致标记或应用程序逻辑损坏。
  3. 我们不能强迫用户重新登录,因为他可能正在输入他的文章,这只是一个糟糕的用户体验。

考虑到所有这些要点,可以提出以下解决方案:

  1. 用户 1 将 SPA 的 v1 加载到他的浏览器中。
  2. 连同身份验证令牌一起,版本信息被发送到浏览器(例如使用 JWT)。
  3. 我们想要部署我们的应用程序的 v2 版本。我们启动了 v2 版本,但不禁用 v1。
  4. 用户 2 将 v2 的 SPA 加载到他的浏览器中
  5. 用户 1 转到 SPA 中的下一页。负载均衡器检查其令牌中的版本信息,并将用户 1 的流量路由到 v1 服务器。
  6. 用户 2 以相同的方式路由到 v2。
  7. 用户 1 注销应用程序并关闭浏览器。
  8. 用户 1 重新登录 - 这次他收到 v2。
  9. 在 v1 应用程序长时间没有收到任何流量后,它会被丢弃。

然而,在这种方法中,可以有多个版本,超过 2 个(例如,如果用户在一两天内保持在线)。这意味着在最后一个用户注销之前,我们将无法将数据库迁移到新模式(想象一下它如何适用于 Facebook 等网站)。拥有多个版本不是问题,但是像 Docker 和 Rancher 这样的工具让我们可以轻松地做到这一点。

同样在第 7 步中。用户需要重新加载页面或关闭浏览器——否则他仍将使用 v1,我们无法强制他进入下一个版本。

我的问题是您使用什么方法来进行单页应用程序的零停机/蓝绿部署?

当您将流量切换到“绿色”版本时,您如何管理应用程序的“蓝色”版本的生命周期,尤其是对于现有的“蓝色”客户端应用程序。

你解决了这些问题,你知道其他的解决方案吗?

0 投票
2 回答
1498 浏览

cassandra - 实现零停机时间 Cassandra/DataStax 迁移

我有一个 Cassandra 集群(3 个节点,所有节点都部署到 AWS),我正在尝试迁移到 DataStax 集群。现在是时候停止自己管理这些节点了。

我有多个生产者和消费者整天读/写数据到我的 Cassandra 集群。我没有将应用程序/服务/代理放在我的 Cassandra 集群前面的选项,然后只是干净地翻转开关,以便所有读/写都去/来自我的 Cassandra,转到 DataStax。因此,没有一种干净的方法可以一次迁移一个表。我还试图为数据的所有生产者/消费者实现零(或接近零)停机时间。一个硬性要求:迁移不能是有损的。没有丢失的数据!

我认为这里最好的策略是一个四步过程:

  1. 不知何故,将 DataStax 配置为我的 Cassandra 集群的副本,有效地创建到 DataStax 的流复制
  2. 一旦 DataStax 完全“赶上”我的 Cassandra 中的其他节点,让生产者继续写入我当前的 Cassandra 集群,但将消费者/读者切换到 DataStax(也就是说,重新配置它们以连接到 DataStax,然后重新启动它们)。不是零停机时间,但我可能可以接受简单的重启。(同样,零停机解决方案是非常受欢迎的。
  3. 将生产者切换到 DataStax。同样,停机时间几乎为零,因为这涉及重新配置生产者以指向 DataStax,然后需要重新启动以获取新配置。零停机解决方案将是首选。
  4. 一旦来自“旧” Cassandra 集群的复制流量减少到零,我们现在就没有我的非 DataStax 节点需要写入 DataStax 的“新”信息了。用火杀死那些节点。

这个解决方案是我能想到的最微创、最接近零停机时间的解决方案,但假设有以下几点:

  • 也许不可能将 DataStax 视为可以复制到的额外节点(是/否?
  • 也许 Cassandra 和/或 DataStax 有一些我不知道的神奇特性/功能,它们可以比这个解决方案更好地处理迁移;或者也许有可以更好地处理这个问题的第 3 方(理想情况下是开源的)工具
  • 我不知道如何监控从“旧”Cassandra 节点到 DataStax 的复制“流量”。在我可以安全地关闭+杀死旧节点之前需要知道如何做到这一点(同样,不能丢失数据)。

我想我想知道这个策略是否:(1)可行/可行,以及(2)最优;如果 Cassandra/DataStax 生态系统中有任何功能/工具,我可以利用这些功能/工具来使其变得更好(更快且零停机时间)。

0 投票
1 回答
343 浏览

graphite - Grafana / Graphite - 时间指标处于某种状态

我有度量值“monitor.status”,其值为 0 和 1。0 表示服务关闭状态和 1 - 启动状态。

我想在 Single stat 面板中以秒为单位呈现停机时间。如何获取时间指标处于 0 状态并进行渲染?

例子:

您对如何在石墨中正确跟踪停机时间有任何建议吗?

0 投票
1 回答
1177 浏览

node.js - 零停机部署 Nodejs 应用程序

我有一个 Nodejs 应用程序,其中包括用于正常运行时间的集群和用于错误处理的域。

现在为了实现零停机部署,我有一条指令,但我需要帮助才能将此指令转换为 Nodejs 代码(我需要一个示例)。

这是指令:

  1. 当 master 启动时,给它一个指向 worker 代码的符号链接。
  2. 部署新代码后,更新符号链接
  3. 向 master 发送信号:fork new workers!
  4. Mater 告诉旧工人关闭,从新代码中分叉新工人。
  5. 母校进程永不停止运行

说明来源-> 幻灯片编号 39

0 投票
3 回答
2054 浏览

docker - 如何以零停机时间更新无复制的 docker swarm 服务?

我想在不停机的情况下更新 docker swarm 服务。问题是我没有足够的资源来进行服务复制。有没有办法做到这一点?

0 投票
1 回答
138 浏览

java - Tomcat并行部署第二个app版本

我正在尝试在 Tomcat 中进行并行部署以实现零停机时间。我已阅读所有文档,并且我理解这几乎是默认选项,只是我需要正确的版本名称。

我在 webapps 文件夹 app##001.war 中运行正常。我将第二个版本上传到 webapps 文件夹 app##002.war 第二个版本部署没问题,但我在浏览器中的应用程序版本没有改变。

如果我重新启动 Tomcat,我会获得新版本的应用程序,但是如何在不重新启动 Tomcat 的情况下获得新版本。也许我错过了什么?

0 投票
1 回答
770 浏览

java - 如何确保 SpringBoot 应用程序始终在 Windows 上启动并运行?

我有一个在 Windows 服务器上运行的 Spring Boot 应用程序(jar 文件),用于在数据库中的某些表和基础设施的其他部分(通过 ActiveMQ 的消费者应用程序)之间同步数据。

让它 24/7 全天候运行而没有任何停机时间(或很少停机)至关重要。

我目前正在尝试找到最好的方法来做到这一点,因为我们当前的解决方案是运行同一个应用程序的多个实例并定义一个处于活动状态并连续 ping 它(通过数据库中的一个条目,它每 15 秒写入一次),而其他实例只是在运行并且什么都不做(非活动状态,导致锁定)。如果活动实例已停止更新数据库中的锁定条目(冻结或崩溃),则可用实例之一将取代它并开始处理数据。

我有一种感觉,它不是那么灵活的解决方案,尤其是当我需要准备我的代码的不同部分来检查锁定条目并同步所有这些实例时。它增加了代码的复杂性,我想避免它。

有没有更好的解决方案?插件、实现模式或工具?

PS:我阅读了 SpringBootApplication 中可用的健康端点,并认为它可以以某种方式帮助我(可能从其他一些看门狗软件\工具中对它们进行 ping\检查?),但不知道如何。

0 投票
1 回答
316 浏览

sql-server - Uptime / Downtime Production Batch Report via SSRS SQL Server 2012 Updated

I am working on another report using SSRS via Visual Studio 2010. I am a rookie with SQL but things are starting to make sense as the weeks go on.

Purpose is to create a report that displays the Batch up time / downtime calculated from the timestamps taken from a SQL server database. The time stamp is represented as a date/time input, an example, 2018-02-09 14:43:29.193.

There are 4 Event ID's 1-4 that must be met to trigger a time stamp in the database. Each batch has it's own 3 digit integer ID.

The difference between,

Database

I have done my best with this report with limited knowledge, and in the report I have created parameters to choose dates for the report, along with asking the user to pick the Batch ID along with Batch 1-4 Event's, however I am not sure how to tackle the calculated fields.

Below is the SQL code,

Current Report

I have been reading up on pivoting tables and I think this may be the way to go in calculated the up / downtime, however I need a bit of help on this part.

Thanks again

0 投票
1 回答
140 浏览

hbase - HBase 压缩如何影响客户端?

我确实知道 hbase 压缩的基本知识,即它如何在 HFiles 上工作。但是,我很想知道在两个压缩(次要和主要)期间其他服务会发生什么,这会是 hbase 的停机时间吗?即在压缩时,如果客户端运行get 或put 查询会怎样?在压缩期间该查询会被响应还是挂起?

任何回应将不胜感激。

谢谢,

维卡什

0 投票
1 回答
1791 浏览

docker - 在 docker swarm 中推出更新

使用 spring 初始化器创建了一个微服务应用程序并使用 docker 部署。

为了推出最新的更改,使用最新的代码更改创建 docker 映像

应用程序正在运行 2 个副本。使用 docker service update 更新服务。

任何人都可以帮助我提供示例堆栈和最佳实践来部署零停机时间。