网站的简单故障转移(监控+动态DNS)

在本文中,我想展示如何轻松且免费地使用监控组合为网站(或任何其他互联网服务)制定故障转移方案 奥克尔 和动态 DNS 服务。 也就是说,如果主站点出现任何问题(从页面上的“PHP 错误”问题到空间不足或在线商店中订单数量可疑),新访问者将被定向到第二个(第三个,等等)一个已知的工作服务器,或者在“抱歉”页面上,他们会礼貌地解释“存在问题,我们已经意识到并且已经在修复它,我们很快就会修复它”(在这种情况下,您实际上已经知道并且可以修复)。

有故障转移还是没有故障转移?

在出现问题之前,没有太大区别。 但是,当发生这种情况时,如果没有故障转移,通常会发生以下情况:您试图快速找出问题所在,但它不起作用(备份未部署,软件由于某种原因无法按照文档中应有的方式工作等),但是没有时间,没有服务器 - 站点处于闲置状态,客户正在打电话,每个人都处于紧张状态,您试图以某种方式“用磁带”粗略且肮脏地修复它,然后不知何故它似乎启动了拄着拐杖,带着生命。 你认为在业余时间你需要更详细地弄清楚并把一切重做得漂亮,但没有什么比暂时的更永久的了。

现在,在带有文件管理器的漂亮版本中这是如何发生的:

  • 发生错误
  • 自动检测到错误
  • 警报已发出
  • 切换到其中一台备份服务器进行转移
  • 冷静地、毫不惊慌地,问题得到解决、纠正,服务器重新投入运行。

当然,这个方案也可能有自己的问题,但是,该方案是线性的,每个阶段都很简单,最主要的是它可以单独调试,所以这个方案失败的机会要低得多,并且所有操作都可以自动化并快速执行(与查找和修复未知的史诗垃圾的任务不同)。 你的飞机降落在遥远的国家,你打开手机,看到电报中的通知,服务器崩溃了,但一切都很好,备份服务器已经激活,你可以继续你的旅程,你不需要从最近的有 WiFi 的咖啡馆飞回来或通过 SSH 进行修复。 等更方便的时候你就会明白了。

未来已经来临!

以前,导致故障转移解决方案常常不可接受的主要问题是它所花费的成本。 或者有必要购买昂贵的硬件(并邀请更昂贵的专家)。 或者根据指南集体农场一些复杂的东西(我什至遇到了一个选项,其中两台服务器另外用零调制解调器电缆连接,并且它们通过它发送心跳,以便备份服务器在正确的时间识别它并接管控制)。 现在有更简单、免费的方法。 如果您有一个有猫的网站,那么您没有理由不为其实施故障转移!

嗯,此外,对于故障转移方案,您需要另一台服务器(可能不止一台),以前这是一笔很大的开支,现在您可以花几分钱购买 VDS。

最可靠的猫网站

为了实际说明 okerr + 动态 dns 的解决方案,我们推出了带有 cats 的网站 猫.oker.com。 我们讨厌猫,所以那里不会有很多猫。 总共有三个站点,每个站点看起来都大致相同(都在同一个模板上),但有不同的小猫,以便于区分,并且每个站点都编写了技术信息以了解故障转移是如何工作的。 该页面每 1 分钟自行更新一次,但您始终可以在浏览器中单击“重新加载”。

技术信息中有一行“status=OK”。 有时服务器会假装出现问题并写入状态=ERR。 主服务器似乎在每小时 20 分钟(0:20、1:20、2:20……)“崩溃”。 40分钟备份服务器。 最后一个服务器(“抱歉”服务器)始终运行。 每小时0分,主备服务器进行“恢复”。

网站的简单故障转移(监控+动态DNS)

如果您打开该站点并将其保留在选项卡中,您将看到它永远不会崩溃(尽管每个单独的服务器都会定期模拟问题),并且如果服务器出现问题,它只会在实时服务器之间“运行”。 服务器的图片、名称和地址及其角色将发生变化。 有时您可以捕捉到状态 = ERR 的时刻(问题已经存在,但整个故障转移方案尚未起作用),但下一次更新将向您显示工作站点的页面。

okrr + 动态 DNS 上的故障转移

让我们看看它在幕后是如何工作的。 文件管理器的任务是确保 cat.okerr.com 地址始终指向工作服务器的 IP 地址。
在 okerr 中托管我们的猫网站的每台服务器后面都有一个指示器,每分钟检查一次其状态。

网站的简单故障转移(监控+动态DNS)

在此屏幕截图中,我们看到如何从 alpha.okerr.com 服务器检查站点 cat.okerr.com。 该页面应该包含 status=OK,正如我们在上面看到的,我们的指示器状态现在是 OK。 当服务器“崩溃”时,就会出现ERR。 (这只是指标的一个例子,okerr正在监控,所以你可以附加任何类型的指标,例如检查磁盘上的可用空间、数据库中的新订单数量,甚至逻辑指标,例如,晚上会有一些错误标准,白天则有其他)。

在项目设置中,我们使用这些指标创建了一个故障转移方案:

网站的简单故障转移(监控+动态DNS)

该方案共有三个指标(三台服务器),优先级不同。 该站点的主服务器是 charlie,如果它不起作用(它不会有“状态 = OK”或根本不可用),则为 bravo,在后一种情况下为 alpha。 页面右侧显示不同服务器上 DNS 记录的状态。

对于那些注意到使用了 cat.he.okerr.com 这个名称的人:我们使用了稍微复杂的方案。 我们不只是更改 cat.okerr.com 的 DNS 记录,而是更改 cat.he.okerr.com(在动态 DNS 提供商上) 飓风电气),而cat.okerr.com是一个CNAME(别名),不会改变,始终指向cat.he.okerr.com。 我们只是更喜欢 Hurricane 作为动态 DNS,它具有管理单个条目(而不是整个区域)的密钥,我们认为它更安全。 您也不必在 okerr 中指定关键密码来管理整个域,而只需指定子域或记录的密钥密码。

从下跌到上涨

该方案如何逐步运作:

  1. 服务器出现问题(模拟)
  2. okerr传感器每分钟检查一次每个服务器的状态,并向okerr中的主项目服务器报告
  3. 对应的服务器指示灯由OK变为ERR
  4. 当指示灯状态发生变化时,重新计算failover,计算需要设置哪个地址(如果需要的话。例如主服务器正在工作,同时备份服务器挂掉了,则不会发生任何变化)制成)
  5. 该地址被报告给动态 DNS 服务。 完成此阶段后,您将在右侧看到“已同步”状态。
  6. 很快(几秒钟)该记录将到达您域的 DNS 服务器(对于 cat 站点,它是 ns1-ns5.he.net)。
  7. 从这一刻起,一些用户将已经在新的实时服务器上。 但并非世界上所有的 DNS 服务器都已更新记录,旧记录可能仍缓存在某处。 您可以看到公共 DNS 服务器上的数据如何“跳舞”,显示新值或旧值。 如果更新故障转移配置页面,运营商本身将向 DNS 服务器请求新数据。
  8. 数据稳定后,旧的缓存记录到处都腐烂了——所有 100% 的请求都转到新服务器。

为了加速第 7 阶段(通常是最长的阶段),动态 DNS 记录的 TTL 应设置得尽可能低。 通常,服务允许 90-120 秒的间隔。 这是一个完全合理的妥协。

另外

所有这些都可以在一个晚上完成配置(如果您已经有备份服务器)。 oker 和动态 DNS 服务都是免费的。 要在 oker 中获得更多检查并缩短验证周期,您需要完成培训(从您的个人资料页面)。 完成后,等级立即提升(每小时20个指标+1个快速,10分钟)。 如果其中很少,请写信给 [电子邮件保护],很有可能会有增加的可能(到目前为止一直有机会,我从来没有拒绝过,相反,我自己提供了)。 只是一开始我并不想向所有人承诺一切,我不确定自己是否有足够的能力信守诺言。 但目前为止用户还很少,所以增加限制是没有问题的。

okerr 一般可以做什么 - 查看网站 介绍。 一般来说,这就是监控(来自云端的zabbix),而filer是一个很好的附加功能。 您还可以从该网站访问演示,无需注册。

当指示器状态发生变化时,会通过电子邮件或 Telegram 发送通知。 (我们查看了发生的情况,并意识到 telegram 似乎是最可靠的信使。感谢 RKN 的压力测试!)正确配置 okerr 后,任何通知要么是一个信号“放弃所有内容,我们需要修复它!” ,或“熄灯!” okerra 不应该有任何额外的警报(如果有,则需要以某种方式进行不同的配置)。 例如,对于我们的 cat 网站,alpha 服务器是最后一个服务器,并且从不伪造错误。 如果他躺下了,我们需要知道。 但其他服务器不断假装错误,因此,为了不每小时多次收到警报,这些指示器处于“静默”状态。

创建一个抱歉服务器(在任何最便宜的托管上)也是有意义的,它要么有您的道歉页面(以防所有主服务器和备份服务器都关闭),要么会将您重定向到 okerr 上的状态页面(例如,我们的) cp.okerr.com/status/okerr) 或 statuspage.io。

来源: habr.com

添加评论