标签: high-availability

多个数据中心和 HTTP 流量:DNS Round Robin 是确保即时故障转移的唯一方法吗?

指向同一个域的多个 A 记录似乎几乎专门用于将 DNS 轮询作为一种廉价的负载平衡技术来实现。

针对 DNS RR 的常见警告是它不利于高可用性。当 1 个 IP 出现故障时,客户端将继续使用它几分钟。

通常建议使用负载平衡器作为更好的选择。

这两种说法都不完全正确:

  1. 当流量为 HTTP 时,大多数 HTML 浏览器能够自动尝试下一条 A 记录(如果前一条记录出现故障),而无需进行新的 DNS 查找。阅读此章节3.1这里

  2. 当涉及多个数据中心时,DNS RR 是在它们之间分配流量的唯一选择。

那么,对于多个数据中心和 HTTP 流量,使用 DNS RR 是确保在一个数据中心出现故障时立即进行故障转移的唯一方法吗?

谢谢,

华伦天奴

编辑:

  • 当然,每个数据中心都有一个带有热备份的本地负载均衡器。
  • 为即时故障转移牺牲会话亲缘关系是可以的。
  • AFAIK DNS 建议数据中心而不是另一个数据中心的唯一方法是仅回复与该数据中心关联的 IP(或多个 IP)。如果数据中心变得无法访问,那么所有这些 IP 也无法访问。这意味着,即使智能 HTML 浏览器能够立即尝试另一个 A 记录,所有尝试都将失败,直到本地缓存条目过期并完成新的 DNS 查找,获取新的工作 IP(我假设 DNS 自动建议给一个一个失败时的新数据中心)。因此,“智能 DNS”不能保证即时故障转移。
  • 相反,DNS 循环允许它。当一个数据中心出现故障时,智能 HTML 浏览器(大多数)会立即尝试将其他缓存的 A 记录跳转到另一个(工作)数据中心。因此,DNS 循环不能保证会话亲和性或最低的 RTT,但当客户端是“智能”HTML 浏览器时,它似乎是确保即时故障转移的唯一方法。

编辑2:

  • 有些人建议将 TCP Anycast 作为最终解决方案。在纸(第6章)中说明了选播器故障切换是关系到BGP收敛。出于这个原因,任播可以使用 15 分钟到 20 秒来完成。在为此优化拓扑的网络上,20 秒是可能的。可能只有 …

domain-name-system high-availability anycast cdn geodns

81
推荐指数
4
解决办法
3万
查看次数

Windows 2008 忽略免费 ARP 请求

我们最近在路由器故障转移后发现了一个问题,即我们的 Windows 2008 Boxes 在故障恢复后没有开始与主路由器通信。

当我们进行一些挖掘时,他们仍然拥有来自辅助路由器的 ARP 条目。根据TechNet 博客,这是故意设计的:

首先,如果接收到 ARP 广播,Windows Vista 或 Windows Server 2008 将不会更新邻居缓存,除非它是接收者的广播 ARP 请求的一部分。这意味着,当在装有 Windows Vista 和 Widows Server 2008 的网络上发送免费 ARP 时,如果存在 IP 地址冲突,这些系统将不会使用不正确的信息更新其缓存。

其次,似乎只有当机器无法再与当前位于其缓存中的机器交谈时,Windows 邻居缓存(arp-cache)才会更新。它不会偶尔发出 ARP 请求以确保缓存未过期。虽然这在初始故障转移期间不是问题,但在故障恢复期间,当两个框都处于活动状态时,这会导致窗口继续与辅助框通话。

有什么办法可以强制 Windows 2008 接受免费 ARP 请求?

networking windows-server-2008 high-availability arp

38
推荐指数
1
解决办法
9204
查看次数

Heartbeat、Pacemaker 和 CoroSync 的替代品?

除了典型的 Heartbeat/Pacemaker/CoroSync 组合之外,在 Linux 上是否还有其他主要的自动故障转移替代方案?特别是,我正在 EC2 实例上设置故障转移,它只支持单播 - 没有多播或广播。我专门尝试处理我们拥有的少数软件,这些软件还没有自动故障转移功能并且不支持多主环境。这包括 HAProxy 和 Solr 等工具。

我有 Heartbeat+Pacemaker 工作,但我对此并不感到兴奋。以下是我的一些问题:

  • 心跳 - 就其本身而言,仅限于两个节点。我想要 3+。
  • 起搏器 - 无法自动配置。集群必须以法定人数运行,然后它仍然需要手动配置。
  • CoroSync - 不支持单播。

起搏器工作得很好,尽管它的功率使其难以设置。Pacemaker 的真正问题在于没有简单的方法来自动化配置。我真的很想启动一个 EC2 实例,安装 Chef/Puppet 并在没有我干预的情况下启动整个集群。

linux high-availability heartbeat pacemaker corosync

27
推荐指数
3
解决办法
4万
查看次数

当 DNS 服务器出现故障时避免 DNS 超时

我们有一个小型数据中心,大约有一百台主机指向 3 个内部 DNS 服务器(绑定 9)。当其中一台内部 DNS 服务器不可用时,我们的问题就出现了。那时所有指向该服务器的客户端开始执行非常缓慢。

问题似乎是股票 Linux 解析器并没有真正具有“故障转移”到不同 DNS 服务器的概念。您可以调整它使用的超时和重试次数(并设置轮换,以便它可以在列表中工作),但无论使用什么设置,如果主 DNS 服务器不可用,我们的服务执行速度会慢得多。目前,这是我们服务中断的最大来源之一。

我的理想答案是“RTFM:像这样调整/etc/resolv.conf...”,但如果这是一个选项,我还没有看到。

我想知道其他人是如何处理这个问题的?

我可以看到 3 种可能的解决方案:

  • 使用 linux-ha/Pacemaker 和故障转移 IP(因此 DNS IP VIP“始终”可用)。唉,我们没有良好的围栏基础设施,没有围栏起搏器不能很好地工作(根据我的经验,没有围栏的 Pacemaker 会降低可用性)。

  • 在每个节点上运行本地 DNS 服务器,并将 resolv.conf 指向 localhost。这会奏效,但它会给我们更多的服务来监控和管理。

  • 在每个节点上运行本地缓存。人们似乎认为 nscd “已损坏”,但 dnrd 似乎具有正确的功能集:它将 DNS 服务器标记为启动或关闭,并且不会使用“关闭”的 DNS 服务器。

Any-casting 似乎只在 IP 路由级别工作,并且依赖于服务器故障的路由更新。多播似乎是一个完美的答案,但 bind 不支持广播或多播,我能找到的文档似乎表明多播 DNS 更侧重于服务发现和自动配置,而不是常规 DNS 解析.

我错过了一个明显的解决方案吗?

domain-name-system high-availability datacenter

22
推荐指数
2
解决办法
3万
查看次数

keepalive 和 heartbeat 有什么区别?

我想构建一个高可用的服务器集群。现在我想知道关于keepalive和heartbeat的细节,两者有什么区别,以及如何选择一个。

high-availability heartbeat keepalive

21
推荐指数
2
解决办法
3万
查看次数

Anycast 和 GeoDNS / GeoIP wrt HA 有什么区别?

根据维基百科对Anycast 的描述,它既包括跨多个 DNS 服务器的域名到多 IP 映射的分布,也包括使用地理位置最接近(或最快)的服务器回复客户端。

在像 google.com 这样的全球分布、高度可用的站点(或具有许多全球边缘位置的任何 CDN 服务)的上下文中,这听起来像是人们需要的两个关键功能。

亚马逊的 Route53、EasyDNS 和 DNSMadeEasy 等 DNS 服务都宣称自己是支持 Anycast 的网络。

因此,我的假设是,这些 DNS 服务中的每一个都透明地为我提供了这两个杀手级功能:多 IP 到域的映射和将客户端路由到最近的节点。

然而,这些服务中的每一个似乎都将这两个功能分开,将第二个(将客户端路由到最近的节点)称为“GeoDNS”、“GeoIP”或“全球交通指挥”,并为该服务收取额外费用。

如果支持任播的系统的核心租户已经这样做了,为什么要将此功能指定为此额外功能?这个“GeoDNS”功能是什么,标准 Anycast DNS 服务不会做(根据 Wikipedia 中 Anycast 的定义——我理解正在宣传的内容,只是不知道为什么它没有被暗示)。

当不支持这种模糊的“GeoDNS”功能的 Route53 等 DNS 服务列出的功能如下时,我感到非常困惑:

快速 – Route 53 使用全球 DNS 服务器的全球任播网络,旨在根据网络状况自动将您的用户路由到最佳位置。因此,该服务为您的最终用户提供低查询延迟,并为您的 DNS 记录管理需求提供低更新延迟。

...这听起来与 GeoDNS 的意图完全一样,但地理定向客户是他们明确不支持的事情

最终,我正在从 DNS 提供商那里寻找以下两个功能:

  1. 将多个 IP 地址映射到单个域名(如 google.com、amazon.com 等)
  2. 利用 DNS 服务,该服务将使用距离请求者最近的服务器的 IP 地址响应对该域的客户端请求。

如前所述,这似乎是“任播”DNS 服务(所有这些服务都是)的一部分,但我从他们那里看到的功能和营销表明并非如此,让我觉得我需要更多地了解如何DNS 在做出部署选择之前起作用。

提前感谢您的任何澄清。

domain-name-system high-availability anycast geodns amazon-route53

19
推荐指数
3
解决办法
1万
查看次数

DNS Round Robin:浏览器只要在线就坚持一个IP吗?

如果大多数浏览器从 DNS 服务器获得多个 A 记录,它们会如何表现?只要可以访问就坚持使用一个IP(并且只有在IP关闭时才使用另一个)?或者他们总是无缘无故地切换?

如果当前的大多数浏览器都坚持使用一个 IP,那么 DNS-RR 作为一种简单的故障转移解决方案对我来说就足够了。

domain-name-system failover high-availability round-robin

19
推荐指数
3
解决办法
2万
查看次数

statsd 和 Graphite 的高可用、Web 可访问和可扩展部署

我想设置 statsd/graphite,以便我可以记录在 HTML 设备上运行的 JS 应用程序(即不在包含的 LAN 环境中,并且可能有大量我无法直接控制的传入数据)。

我的限制:

  • 入口点必须说 HTTP:这是通过一个简单的 HTTP-to-UDP-statsd 代理解决的(例如 github 上的 httpstatsd)
  • 必须抵抗单个服务器的故障(与墨菲定律作斗争:)
  • 必须是水平可扩展的:webscale,宝贝!:)
  • 架构应该尽可能简单(和便宜)
  • 我的服务器是虚拟机
  • 数据文件将存储在文件管理器设备上(使用 NFS)
  • 我可以使用 tcp/udp 硬件负载平衡器

总之,数据路径:[client] -(http)-> [http2statsd] -(udp)-> [statsd] -(tcp)-> [graphite] -(nfs)-> [filer]

到目前为止我的发现:

  • 扩展 http2statsd 部分很容易(无状态守护进程)
  • 缩放 statsd 部分似乎并不简单(我想我最终会在石墨中得到不连贯的值,例如 sum、avg、min、max ...)。除非 HTTP 守护进程进行一致的散列以对密钥进行分片。也许是一个想法......(但接下来是 HA 问题)
  • 缩放石墨部分可以通过分片(使用碳继电器)来完成(但这也不能解决 HA 问题)。显然,多个耳语实例不应写入相同的 NFS 文件。
  • 缩放文件管理器部分不是问题的一部分(但 IO 越少越好:)
  • 扩展 webapp 似乎很明显(虽然我没有测试过),因为它们只读取共享的 NFS 数据

所以我想知道是否有人有经验和最佳实践可以分享一个可靠的 statsd/graphite 部署?

http scalability high-availability graphite statsd

17
推荐指数
1
解决办法
1034
查看次数

什么时候是为网站引入高可用性的合适时机?

什么时候是为网站引入高可用性的合适时机?

有很多关于高可用性选项的文章。这不是很明显,但是何时是从单服务器切换到高可用性配置的合适时机。

请考虑我的情况:
http : //www.postjobfree.com是 24/7 的网站,流量很大:http :
//www.similarweb.com/website/postjobfree.com

目前我在一台服务器上运行它:IIS 7.0 Web 服务器和 SQL Server 2008 运行在同一个硬件设备上。

偶尔(~每月一次)~5 分钟的停机时间通常是由某些 Windows Server 更新所需的重新启动引起的。通常停机时间安排在晚上。仍然令人不快,因为谷歌机器人和一些用户在晚上仍然活跃。

当前的网站收入约为 8000 美元/月。

我考虑切换到两台服务器配置(两台 Web 服务器的 Web 场和托管在两台硬件服务器上的 2 个 SQL Server 的集群)。

优点:
1)高可用性(理论上没有停机时间)。即使其中一台服务器出现故障,另一台服务器也会接管。
2)无数据丢失:没有SQL集群,硬件故障最多可以丢失1天的数据(我们每天做备份)。

缺点:
1) 设置和维护此类配置需要付出更多努力。
2)更高的托管成本。而不是〜$ 600 /月,它将约为$ 1200 /月。

你的建议是什么?

cluster iis-7 high-availability sql-server

16
推荐指数
2
解决办法
2116
查看次数

多站点高可用

我们有一个需要高度可用的 SaaS 应用程序。我们已经拥有一个昂贵且维护良好的 Hyper-V 故障转移集群,但今天我们托管该集群的数据中心断电了五个小时,使我们完全离线。所以现在我们想知道是否有更好的方法是在两个独立的数据中心使用服务器。假设我们让所有的后端文件复制和数据复制在这两个站点之间工作,我们想知道如何处理前端路由——难怪我们如何解决这个问题,我们总是以负载均衡器结束单点故障。

所以问题是......我们如何在两个托管站点之间设置负载平衡,以使负载平衡器不是单点故障?有没有办法使用两个单独的负载平衡器,每个站点一个?我们应该考虑轮询 DNS 吗?

failover high-availability load-balancing fault-tolerance

16
推荐指数
1
解决办法
7327
查看次数