标签: failover

如何使用故障转移设置 HAProxy?

我明白,要在 HAProxy 负载平衡设置上进行故障转移,您需要两台运行 HAproxy 的机器(并将其路由到多个网络服务器实例)。但是在这种情况下,比如说 abcd.com,我们如何将此流量拆分/路由到 2 个 IP 地址而不是一个?DNS 通常将域名解析为单个 IP。我们如何使用免费/廉价的工具/服务来做到这一点?

failover load-balancing haproxy

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

当负载均衡器出现故障时会发生什么?

假设我正在使用 Amazon 的 EC2 负载均衡器。我将它连接到两个实例(如果我的术语不正确,请原谅)。如果负载均衡器出现故障会怎样?两个实例现在都无法工作吗?

networking windows failover load-balancing amazon-ec2

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

您如何在 EC2 上自动进行故障转移?

在管理自己集群的人中(即不使用/支付 Amazon Autoscale、Rightscale、Scalr 等),您如何管理 EC2 上的实例并处理(例如)故障转移?我想知道是否大多数人最终会像我怀疑的那样针对 EC2 API 编写自己的大量脚本。

这当然是我们的方法:启动我们自己的基于 Python Boto 的监控/重启守护进程,该守护进程在异地运行,从我们的实例中监听 UDP 保持活动。失败时,我们对卷进行快照、注册映像、启动新实例、删除旧卷等。

每隔一段时间,当对我们的脚本进行黑客攻击时,我认为必须有一些开源工具已经可以处理这些问题,并且没有(比如)Scalr 的限制,但我总是从谷歌回来空手而归。(像 Scalr 这样的东西在支持的软件集/版本/配置方面非常有限,并且有专门的和 IMO 繁琐的方法来操纵这些设置。)

此外,Linux-HA/Pacemaker 生态系统(Heartbeat、ldirectord 等)听起来并不适合 EC2。(但后来我发现了这一点——尽管我不确定这是否真的是一个高质量的解决方案)。

failover heartbeat amazon-ec2 scalr amazon-elastic-ip

13
推荐指数
1
解决办法
2万
查看次数

浏览器如何处理多个 IP

当浏览器获取给定主机名(例如 ip1 和 ip2)的多个 A 记录并且其中一个无法访问时,有人可以指导我了解有关确切浏览器行为的信息。

我对确切的细节感兴趣,例如(但不限于):

  1. 浏览器会从操作系统获得 2 个 IP,还是只会获得一个?
  2. 浏览器将首先尝试哪个 ip(随机或总是第一个)?现在,假设浏览器以失败的 ip1 启动
  3. 浏览器会尝试多长时间 ip1 ?
  4. 如果用户在等待 ip1 时点击“停止”,然后点击刷新
    • 浏览器会尝试哪个 IP?
  5. 当它超时时会发生什么 - 它会开始尝试 ip2 还是给出错误?(如果出现错误,当用户点击刷新时浏览器将尝试哪个 ip)。
  6. 当用户点击刷新时,任何浏览器都会尝试新的 DNS 查找吗?

现在让我们假设浏览器首先尝试使用 ip2。

  1. 对于下一个页面请求,浏览器是否仍然使用ip2,或者它可能会随机切换ips?
  2. 浏览器在其缓存中保留 IP 多长时间?
  3. 当浏览器发送一个新的 DNS 请求并获得相同的 ips 时,它会继续使用相同的已知正在工作的 IP,还是该过程从头开始,它可能会尝试两者中的任何一个?

当然,这一切都可能取决于浏览器,也可能因版本和平台而异,我很乐意提供最多的细节。

这样做的目的 - 我试图了解当使用基于循环 DNS 并且其中一台主机出现故障时,用户会体验到什么。

拜托,我不是在问 DNS 负载平衡有多糟糕,请不要回答“不要这样做”、“这是一个坏主意”、“您需要心跳/代理/BGP/任何东西”等等。

domain-name-system failover timeout

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

如果后端关闭,nginx 使用代理缓存

如果后端服务器关闭,我需要 nginx 代理使用缓存:

这是我的配置。但似乎是 nginx 使用缓存而不检查后端服务器。

http {

  # ...

  proxy_set_header Host $host;
  proxy_set_header X-Real-IP $remote_addr;
  proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  proxy_cache_path /tmp/nginx levels=1:2 keys_zone=tmpzone:10m inactive=60m;
  proxy_cache_key "$scheme$request_method$host$request_uri";


  server {
    server_name _;

    location / {
      proxy_connect_timeout 5s;
      proxy_read_timeout 5s;
      proxy_cache tmpzone;
      proxy_cache_valid      200 304 1d;
      proxy_cache_use_stale  error timeout invalid_header updating http_500 http_502 http_503 http_504;
      proxy_set_header X-Real-IP  $remote_addr;
      proxy_set_header X-Forwarded-For $remote_addr;
      proxy_set_header Host 'www.example.com';
      proxy_pass http://www.example.com;
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

问题是,如果后端服务器已启动,我如何绕过代理缓存?当后端服务器启动时,我的代理服务器根本不使用缓存。

nginx failover proxy cache

11
推荐指数
1
解决办法
5950
查看次数

全局高可用性设置问题

我拥有并经营visualwebsiteoptimizer.com /。该应用程序提供了一个代码片段,我的客户将其插入到他们的网站中以跟踪某些指标。由于代码片段是外部 JavaScript(位于站点代码的顶部),因此在显示客户网站之前,访问者的浏览器会联系我们的应用服务器。如果我们的应用服务器出现故障,浏览器将在超时(通常为 60 秒)之前继续尝试建立连接。可以想象,在任何情况下我们都不能让我们的应用程序服务器停机,因为这不仅会对我们的网站访问者的体验产生负面影响,还会对我们客户的网站访问者的体验产生负面影响!

我们目前使用 DNS 故障转移机制,一台备份服务器位于不同的数据中心(实际上是不同的大陆)。也就是说,我们从 3 个不同的位置监控我们的应用服务器,一旦检测到它关闭,我们将 A 记录更改为指向备份服务器 IP。这适用于大多数浏览器(因为我们的 TTL 是 2 分钟),但 IE 将 DNS 缓存了 30 分钟,这可能是一个交易杀手。请参阅我们最近发布的visualwebsiteoptimizer.com/split-testing-blog/maximum-theoretical-downtime-for-a-website-30-minutes/

那么,我们可以使用什么样的设置来确保在应用程序数据中心遭受重大中断时几乎即时的故障转移?我在这里读到 www.tenereillo.com/GSLBPageOfShame.htm有多个 A 记录是一种解决方案,但我们无法负担会话同步(还)。我们正在探索的另一种策略是拥有两条 A 记录,一条指向应用服务器,第二条指向反向代理(位于不同的数据中心),如果主应用服务器启动,则解析为主应用服务器,如果启动则解析为备份服务器。你觉得这个策略合理吗?

只是为了确定我们的优先事项,我们有能力让我们自己的网站或应用程序关闭,但我们不能因为我们的停机时间而让客户的网站变慢。因此,如果我们的应用服务器关闭,我们不打算使用默认应用程序响应进行响应。即使是一个空白的响应就足够了,我们只需要浏览器完成该 HTTP 连接(除此之外别无他物)。

参考:我读了这个有用的线程serverfault.com/questions/69870/multiple-data-centers-and-http-traffic-dns-round-robin-is-the-only-way-to-assure

domain-name-system failover high-availability bgp

10
推荐指数
1
解决办法
972
查看次数

为什么我的 HyperV 虚拟机会随机失去连接?

我有一个奇怪的间歇性连接问题,大约每两周发生一次。

首先是我的配置:我正在运行一个带有两个物理主机(node01 和 node02)的 HyperV 故障转移集群。主机都运行带有 SP1 的 Windows Server 2008 R2 HyperV 服务器(免费的)。在这些主机上,我运行了两个 VM,每个 VM 都运行带有 SP1 的 Windows Server 2008 R2 Web 版。我的存储服务器是通过 iSCSI 连接的 Windows Storage Server 2008。主机和存储服务器都运行直接从英特尔网站下载的最新网络驱动程序。

问题是:在 99.99% 的情况下,一切正常。大约每两到三周一次,VM 将同时失去传入和传出的网络连接。当这个情况发生时,

  1. 我无法 RDP 到任一 VM。
  2. 我可以 RDP 到任一主机。
  3. 我可以通过右键单击节点并选择“连接到虚拟机”从故障转移群集管理器连接到任一 VM
  4. 一旦我按照上面 #3 中的描述连接到 VM,我就无法访问 LAN 上的任何网站或机器。禁用并重新启用 VM 内的虚拟网络连接并不能解决问题。
  5. 如果我将 VM 移动到不同的节点,就可以解决问题(在接下来的两周内)。
  6. 如果我重新启动主机并将 VM 移回主机上,就可以解决问题(在接下来的两周内)。
  7. 发生这种情况时,故障转移群集不会自动对 VM 进行故障转移。
  8. 任何主机或 VM 上都没有异常事件日志条目。

这种情况已经发生了大约 5 次,症状与上述相同。我怀疑是网络驱动程序或网络硬件问题,但由于我已经在运行最新的驱动程序,我不知道该怎么办。

这真是令人头疼……有什么想法吗?

更新

我在这里发现了一个非常相似的案例:虚拟机失去了 Hyper V 集群上的网络连接

2011 年 7 月 29 日更新 …

networking failover hyper-v hyper-v-server-2008-r2 failovercluster

10
推荐指数
3
解决办法
7万
查看次数

跨多个交换机的链路绑定?

我已经阅读了一些关于将 nics 与 ifenslave 结合的内容;我无法理解的是是否需要特殊配置才能在两个交换机之间拆分绑定。例如,如果我有几台服务器,每台服务器都有两个网卡和两个独立的交换机,我是否只需配置绑定并将每个网卡的 1 个插入交换机 #1,将另一个插入交换机 #2?或者还有更多吗?

如果绑定是主动备份,单台机器上的网卡故障是否意味着服务器可能会断开连接,因为其余机器正在使用主网卡而它正在使用辅助网卡?或者你也用一根电缆连接交换机?

networking failover switch bonding lag

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

Keepalived 定期发送免费 ARP

有没有办法让keepalived定期发送免费的ARP?

我们有以下情况:

  1. 交换机故障(VLAN 设置)
  2. keepalived 故障转移到备份实例
  3. 备份实例发送了无偿 ARP,但 Cisco ASA 设备没有收到(因为交换机故障)
  4. 当交换机恢复时(几分钟后)VIP 无法访问,因为 ASA 没有刷新 ARP 表(ARP 表到期时间设置为 4h)
  5. 由于 ASA 已经拥有来自先前活动节点的 MAC,因此它没有发送 ARP 请求
  6. VIP 无法访问,直到我们重新启动了启动新 GARP 的 keepalived 实例

因此,我们认为我们可以通过定期 GARP 来避免这种情况。这是一个好方法吗,有没有办法在keepalived中做到这一点?

还有其他建议可以避免此类问题吗?

保活配置:

global_defs {
   notification_email {
     email@address.com
   }

   notification_email_from SERVER_1
   smtp_server smtp.server.local
   smtp_connect_timeout 30
   router_id SERVER_1
}

vrrp_instance V1 {
    state BACKUP
    nopreempt
    interface eth0
    lvs_sync_daemon_interface eth0
    virtual_router_id 150
    priority 120
    advert_int 1
    persistence_timeout 0
    smtp_alert

    authentication {
        auth_type PASS
        auth_pass xxx
    }

    virtual_ipaddress {
    10.xxx.xxx.xxx …
Run Code Online (Sandbox Code Playgroud)

failover high-availability arp linux-networking keepalived

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

Server 2016 MSMQ 故障转移

我想在故障转移系统中设置 MSMQ。

我没有共享存储设置(硬件不可用 - 预算),但我有三个运行 Windows Server 2016 的 dl380。

我想使用仲裁服务器设置故障转移。

这个设置可以吗?

failover msmq

10
推荐指数
2
解决办法
1592
查看次数