Questions tagged «high-availability»

高可用性是一种体系结构考虑因素,通常涉及冗余度以确保在系统或组件出现故障时的可用性。

11
多个数据中心和HTTP流量:DNS Round Robin是确保即时故障转移的唯一方法吗?
指向同一域的多个A记录似乎几乎专门用于将DNS Round Robin作为一种廉价的负载平衡技术来实现。 通常,针对DNS RR的警告是它不利于高可用性。当1个IP发生故障时,客户端将继续使用几分钟。 通常建议使用负载平衡器作为更好的选择。 两种说法都不完全正确: 如果流量为HTTP,则大多数HTML浏览器都可以在前一个A记录关闭时自动尝试下一个A记录,而无需进行新的DNS查找。阅读此章节3.1和这里。 当涉及多个数据中心时,DNS RR是在它们之间分配流量的唯一选择。 那么,在多个数据中心和HTTP流量存在的情况下,使用DNS RR是确保一个数据中心发生故障时立即进行故障转移的唯一方法吗? 谢谢, 华伦天奴 编辑: 当然,每个数据中心都有一个带热备用的本地负载均衡器。 为了即时故障转移而牺牲会话亲和力是可以的。 AFAIK DNS推荐数据中心而不是另一个数据中心的唯一方法是仅使用与该数据中心关联的IP进行答复。如果数据中心无法访问,那么所有这些IP也将无法访问。这意味着,即使智能HTML浏览器能够立即尝试另一个A记录,所有尝试都将失败,直到本地缓存条目到期并且完成新的DNS查找,从而获取新的工作IP(我假设DNS会自动向A建议一个新的数据中心发生故障时)。因此,“智能DNS”不能确保即时故障转移。 相反,DNS轮询允许它。当一个数据中心发生故障时,智能HTML浏览器(大多数)将立即尝试将另一个缓存的A记录跳转到另一个(工作)数据中心。因此,DNS循环并不能确保会话亲和性或最低的RTT,但似乎是确保客户端为“智能” HTML浏览器时即时故障转移的唯一方法。 编辑2: 有人建议使用TCP Anycast作为最终解决方案。在此纸(第6章)中说明了任播故障转移有关BGP收敛。因此,Anycast可能需要15分钟到20秒才能完成。在为此优化拓扑的网络上,可能需要20秒。可能只有CDN运营商可以授予这样的快速故障转移。 编辑3:* 我做了一些DNS查找和跟踪路由(也许有些专家可以仔细检查),并且: 使用TCP Anycast的唯一CDN似乎是CacheFly,其他运营商(如CDN网络和BitGravity)都使用CacheFly。似乎它们的边缘不能用作反向代理。因此,它们不能用于授予即时故障转移。 Akamai和LimeLight似乎使用了可感知地理位置的DNS。但!他们返回多个A记录。从traceroutes看来,返回的IP在同一数据中心上。因此,我对一个数据中心出现故障时它们如何提供100%SLA感到困惑。

6
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继续与辅助框通信。 有什么方法可以强制Windows 2008接受免费ARP请求?

9
心跳,起搏器和CoroSync的替代产品?
除了典型的Heartbeat / Pacemaker / CoroSync组合以外,Linux上是否还有其他主要的自动故障转移替代方案?特别是,我正在EC2实例上设置故障转移,该实例仅支持单播-不支持多播或广播。我专门尝试处理我们拥有的几套软件,这些软件还没有自动故障转移功能,并且不支持多主机环境。这包括HAProxy和Solr之类的工具。 我有Heartbeat + Pacemaker,但是我对此并不感到兴奋。这是我的一些问题: 心跳-仅限于两个节点。我想要3岁以上。 Pacemaker-无法自动配置。群集必须以仲裁运行,然后仍需要手动配置。 CoroSync-不支持单播。 尽管Pacemaker的功能强大,但安装起来很困难,因此效果很好。Pacemaker的真正问题在于,没有简单的方法可以自动执行配置。我真的很想启动EC2实例,安装Chef / Puppet,并在没有我干预的情况下启动整个集群。


1
statsd和石墨的高度可用,可通过网络访问和可扩展的部署
我想设置statsd / graphite,以便我可以记录在HTML设备上运行的JS应用程序(即不在封闭的LAN环境中,并且可能包含大量我不直接控制的传入数据)。 我的约束: 入口点必须使用HTTP:这是通过简单的HTTP-to-UDP-statsd代理(例如github上的httpstatsd)解决的 必须抵抗单个服务器的故障(以对抗墨菲定律:) 必须水平可扩展:网络规模,宝贝!:) 架构应尽可能简单(且便宜) 我的服务器是虚拟机 数据文件将存储在Filer设备上(带有NFS) 我可以使用tcp / udp硬件负载平衡器 简而言之,数据路径:[客户端]-(http)-> [http2statsd]-(udp)-> [statsd]-(tcp)-> [石墨]-(nfs)-> [文件管理器] 到目前为止,我的发现: 缩放http2statsd部分很容易(无状态守护程序) 缩放statsd部分似乎并不简单(我想对于诸如sum,avg,min,max ...之类的汇总数据,我最终会在石墨中得到不连贯的值)。除非HTTP守护程序进行一致的哈希处理以分片密钥。也许是个主意...(但接着是HA的问题) 缩放石墨零件可以通过分片(使用碳中继)来完成(但这也不能解决HA问题)。显然,几个耳语实例不应该写入相同的NFS文件。 扩展文件管理器部分不是问题的一部分(但是IO越少越好:) 缩放Web应用程序似乎很明显(尽管我尚未测试),因为它们仅读取共享的NFS数据 因此,我想知道是否有人可以共享可靠的statsd / graphite部署经验和最佳实践?

8
dns服务器发生故障时避免DNS超时
我们有一个小型数据中心,其中约有一百台主机指向3个内部dns服务器(绑定9)。当内部dns服务器之一不可用时,就会出现我们的问题。那时,指向该服务器的所有客户端开始执行时都非常缓慢。 问题似乎是库存的Linux解析器实际上并没有“故障转移”到其他dns服务器的概念。您可以调整超时和重试次数(并设置轮换以使它可以在列表中使用),但是如果主dns服务器不可用,则无论使用哪种服务,服务执行的速度都会慢得多。目前,这是我们最大的服务中断源之一。 我理想的答案应该是“ RTFM:像这样调整/etc/resolv.conf ...”,但是如果那是一个选项,我还没有看到。 我想知道其他人如何处理这个问题? 我可以看到3种可能的解决方案类型: 使用linux-ha / Pacemaker和故障转移ips(因此dns IP VIP始终可用)。las,我们没有好的围栏基础设施,没有围栏的起搏器也无法很好地工作(以我的经验,Pacemaker会在没有围栏的情况下降低可用性)。 在每个节点上运行本地dns服务器,并使resolv.conf指向localhost。这会起作用,但是它将为我们提供更多监视和管理服务。 在每个节点上运行本地缓存。人们似乎认为nscd“已损坏”,但是dnrd似乎具有正确的功能集:它将dns服务器标记为已启动或已关闭,并且不会使用“已关闭”的dns服务器。 任何广播似乎仅在ip路由级别起作用,并且取决于服务器故障的路由更新。多播似乎是一个完美的答案,但是bind不支持广播或多播,我能找到的文档似乎表明多播dns更针对服务发现和自动配置,而不是常规的dns解决。 。 我是否缺少明显的解决方案?

3
Anycast和GeoDNS / GeoIP wrt HA有什么区别?
根据对Anycast的Wikipedia描述,它既包括跨多个DNS服务器的域名到多IP映射的分布,也包括答复地理位置最接近(或最快)的服务器的客户端。 在像google.com(或具有许多全球边缘位置的任何CDN服务)这样的全球分布的高可用性网站的背景下,这听起来像是一个人需要的两个关键功能。 诸如Amazon的Route53,EasyDNS和DNSMadeEasy之类的DNS服务都将自己宣传为支持Anycast的网络。 因此,我的假设是,每个DNS服务都为我透明地提供了这两个杀手级功能:多IP到域的映射以及将客户端路由到最近的节点。 但是,每种服务似乎都将这两种功能分开,将第二种功能(将客户端路由到最近的节点)称为“ GeoDNS”,“ GeoIP”或“ Global Traffic Director”,并对该服务收取额外费用。 如果具有Anycast功能的系统的核心租户已经这样做了,为什么将此功能指定为该额外功能?什么是标准的Anycast DNS服务无法实现的“ GeoDNS”功能(根据Wikipedia的Anycast的定义-我了解正在宣传的内容,而不是为什么它尚未隐含)。 当不支持这种模糊的“ GeoDNS”功能的DNS服务(如Route53)列出以下功能时,我会感到非常困惑: 快速– Route 53使用全球DNS服务器的全球任播网络,旨在根据网络条件自动将用户路由到最佳位置。结果,该服务为最终用户提供了低查询延迟,并为DNS记录管理需求提供了低更新延迟。 ...听起来完全像GeoDNS打算做的那样,但是地理上定向客户是他们明确不支持的东西。 最终,我正在寻找DNS提供者的以下两个功能: 将多个IP地址映射到一个域名(例如google.com,amazon.com等) 利用DNS服务,该服务将使用与被请求方最近的服务器的IP地址响应对该域的客户端请求。 如前所述,这似乎是“ Anycast” DNS服务(所有这些服务都是)的一部分,但是我从中看到的功能和市场营销表明存在其他问题,这使我认为我需要学习更多有关如何DNS在做出部署选择之前起作用。 预先感谢您的任何澄清。

8
什么时候该为网站引入高可用性?
什么时候该为网站引入高可用性? 关于高可用性选项有很多文章。并不是很明显,但是何时才是从单服务器切换到高可用性配置的最佳时机。 请考虑我的情况: http : //www.postjobfree.com是24/7的网站,访问量很大:http : //www.similarweb.com/website/postjobfree.com 当前,我在单个服务器上运行它:IIS 7.0 Web服务器和SQL Server 2008都在同一硬件盒上运行。 偶尔(约一个月)〜5分钟的停机时间通常是由某些Windows Server更新所需的重新启动引起的。通常,停机时间是有计划的,发生在晚上。仍然令人不快,因为Google Bot和某些用户在夜间仍然活跃。 当前的网站收入约为每月$ 8K。 我考虑切换到两台服务器的配置(两台Web服务器的Web场和两台硬件服务器上托管的2台SQL Server的群集)。 优点: 1)高可用性(理论上没有停机时间)。即使其中一台服务器出现故障,另一台服务器也将接管。 2)没有数据丢失:如果没有SQL群集,则在硬件故障的情况下最多可能会丢失一天的数据(我们每天进行备份)。 缺点: 1)更加努力地设置和维护这种配置。 2)较高的托管成本。而不是每月约600美元,而是每月约1200美元。 您的建议是什么?

5
拔掉A Web服务器后,如何自动将所有用户重定向到另一个城市的B Web服务器,反之亦然?
拔掉A Web服务器后,如何自动将所有用户重定向到另一个城市的B Web服务器,反之亦然? 负载平衡开关可以满足我的要求,除非除非两个Web服务器都位于同一建筑物中,否则我不知道如何使它工作。 高可用性群集系统可以满足我的要求,除非除非两个Web服务器都位于同一建筑物中,否则我不知道如何使它正常工作。 公认的“ 当主Web服务器关闭时重定向到另一Web服务器上的静态页面 ”的答案似乎支持2个不同城市的Web服务器。但是,在拔出某个盒子后,将软件安装在一个盒子上对我有什么帮助? 如何循环DNS和内容分发网络(CDN的)做呢? 我想一种方法的开始是这样的: 我获得了每台物理Web服务器的IP地址。 我将每个物理网络服务器的IP地址放入“该”网站的单个域名的DNS记录中(多个A记录或AAAA记录或两者)。 ...那我该怎么办? 我想另一种方法开始像 我为单个域名使用一些动态DNS提供程序,希望用户在Web浏览器中键入该域名 我在每个Web服务器上设置了一个cron作业,该作业定期告诉DNS提供程序其自己的IP地址(更新A记录或AAAA记录)或自己的域名(更新CNAME记录或DNAME记录)。 ...那我该怎么办? (就目前而言,如果用户拔出一个静态网页,其中包含我的联系信息和一个脚注,当拔掉Web服务器A时“主A Web服务器似乎已关闭”,我会很高兴。这已经比。目前的系统,仅仅提供了一个“服务器未找到”错误理想情况下,我想A和B是完全同步的,显然相同的-但是,这东西另一个问题:等同于CDN但对于动态内容?)。

3
多站点高可用性
我们需要一个高度可用的SaaS应用程序。我们已经有一个昂贵且维护良好的Hyper-V故障转移群集,但是如今托管该群集的数据中心发生了五个小时的断电,这使我们完全脱机。所以现在我们想知道更好的方法是否是在两个单独的数据中心使用服务器。假设我们在这两个站点之间完成了所有后端文件复制和数据复制,我们想知道如何处理前端路由-难怪我们如何解决该问题,我们总是在负载均衡器不断完善的情况下单点故障。 所以问题是……我们如何在两个托管站点之间设置负载平衡,以使负载平衡器不是单点故障?有没有办法使用两个单独的负载均衡器,每个站点一个?我们是否应该考虑循环DNS?

1
复制beantalkd以实现高可用性
标题说明了一切。 有谁知道复制beantalk的方法,以便如果beantalk服务器关闭,其他从属可以接管? 这是我想到的一种方法:我可以使beantalk将其binlog(与-b一起)写入共享位置,然后如果主节点失败,则以某种方式使辅助/备份服务器启动beantalk。 当然,必须有更好的方法。

2
Puppet的多站点高可用性选项
我维护着两个数据中心,并且随着我们越来越多的重要基础架构开始受到puppet的控制,如果我们的主站点发生故障,第二个站点上的puppet master工作非常重要。 更好的做法是进行某种主动/主动设置,以使第二个站点的服务器不会通过WAN进行轮询。 有多站点木偶高可用性的任何标准方法吗?


8
在预算上负载均衡Apache?
我试图绕过负载平衡的概念,以确保可用性和冗余以在出现问题时使用户满意,而不是为了向数百万用户提供更快的速度而进行负载平衡。 我们的预算有限,并且一直坚持要掌握很多知识,因此在一些著名的搜索引擎收购Apache之前,在Ubuntu VPS上运行Apache似乎是一种策略(包括周六具有讽刺意味的请注意)。 至少对我而言,这是一个可用的不同解决方案的完整丛林。Apache自己的mod_proxy和HAproxy是我们通过谷歌快速搜索找到的两个,但是负载平衡经验为零,我不知道什么适合我们的情况,或者在选择解决方案来解决我们的问题时需要注意什么可用性问题。 对我们来说最好的选择是什么?我们如何做才能在不超出预算的情况下提高可用性?

3
RabbitMQ-如何为零停机时间升级配置服务器?
仔细阅读docs和RabbitMQ in Action之后,创建RabbitMQ集群似乎很简单,但是升级或修补现有RabbitMQ集群似乎需要重新启动整个集群。 有没有一种方法可以将群集,铲斗,联合身份验证和负载平衡相结合,从而在不丢失队列或消息的情况下进行滚动升级,或者我错过了一些更明显的东西?

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.