AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 927157
Accepted
Craig
Craig
Asked: 2018-08-21 01:21:29 +0800 CST2018-08-21 01:21:29 +0800 CST 2018-08-21 01:21:29 +0800 CST

更改 Web 服务器的快速方法

  • 772

我有 2 个具有 2 个不同主机的 CentOS Web 服务器

  • 1 正在直播 ( Server A)
  • 第二个将取代第一个 ( Server B)

我们的域名目前指向Server A

在服务器之间切换的正常情况下,我们只需简单地更新域的 DNS 即可在服务器之间切换。此操作显然可能需要长达 72 小时。

当我们在 上启动一个新平台时Server B,我想要一个应急计划,允许我在 2 个服务器之间即时切换,而不是等待 DNS 传播。我对负载均衡器之类的东西没有任何经验,但是这可以通过使用配置在 DNS 和 2 个服务器之间切换流量来帮助解决问题吗?

在此处输入图像描述

欢迎对这种情况提出任何建议。

编辑:重新措辞的问题和添加的示例流程图

domain-name-system
  • 2 2 个回答
  • 84 Views

2 个回答

  • Voted
  1. Best Answer
    ETL
    2018-08-21T05:43:23+08:002018-08-21T05:43:23+08:00

    有很多方法可以做到这一点,每种方法都有不同程度的确定性、风险和复杂性。其中一些在评论中有所提及。

    • 在移动前几天减少 DNS 记录的 TTL。执行移动,然后您可以将 TTL 恢复到之前的值。这并不能保证世界上所有的 DNS 服务器都会更新。您可能仍然有一些用户使用过时的 DNS 记录。但这就是您通过 DNS 获得的结果。一般都很好。但不能保证。您甚至无法真正验证,因为您必须检查世界上所有的 DNS 服务器,许多服务器会进行缓存,有些则不会遵守 TTL。但总的来说,这是一种非常安全的方法。除非您拥有 1000 万或更多用户,否则我认为潜在风险相对较低,即您的一个用户将使用损坏的 DNS 服务器。
    • 用最新版本更新两台服务器,那么没关系。假设 A 当前是 DNS 指向的服务器,更新 B,更改 DNS,更新 A。在 A 的更新过程中有一个小的可能问题窗口,用户将获得一个损坏的站点。
    • 在前面放置一个负载均衡器,它将接管 DNS 当前指向的 IP 地址。这是对您现有设置的更复杂的更改,但更多的是一般情况。
    • 快速交换 IP 地址。为服务器 B 提供服务器 A 的 IP 地址并更改服务器 A。停机时间非常短 - 如果您准备好使用脚本,则只需几秒钟。由于您不更改 DNS,因此没有过时 DNS 的风险。
    • 使用 Keepalived 或类似工具。然后 DNS 指向一个浮动 IP 地址。当前具有该 IP 的服务器需要被赋予不同的 IP 地址。这是一个比大多数其他解决方案更高的复杂性级别,但它对您的设置有很大的改进。现在,你处于危险之中。对于指向服务器 A 的 A 记录,DNS 有一个“长”的 TTL。如果服务器 A 发生故障,您必须将 DNS 更改为指向服务器 B,这将需要很长时间才能传播。使用浮动 IP,您无需更改 DNS。如果服务器 A 发生故障,服务器 B 会在几毫秒后自动接管浮动 IP,一切都会继续工作。
    • 使用新代码更新服务器 B。切换服务器 A 上的配置,以便 Web 服务器将请求代理到服务器 B,而不是为网站提供服务。(如果它的 Apache httpd、NGINX、IIS 很容易。许多其他人应该能够做到这一点,如果没有,你可以把HAProxy,快速停止web服务器并启动HAProxy。)此时,所有请求都由新代码上的服务器B处理。更改您的 DNS。
    • 3
  2. patok
    2018-08-21T04:39:51+08:002018-08-21T04:39:51+08:00

    如果您只需要解决网络问题,为什么不在主索引文件中进行 302 重定向,然后更改您的 A/AAAA DNS 记录?当然你还是可以先改一下 TTL,这样就不用等这么久的 DNS 记录改变了,但是 302 重定向会立即生效。

    带有负载均衡器的解决方案也不错,在反向代理模式下配置例如 HAProxy 或 NginX(甚至微软的 IIS)并不难。您可以先在不同的端口(比如说端口 8080/4443)上对其进行测试,然后将其切换到端口 80/443。但在 LB 解决方案中,可能会出现短暂的服务中断,而您将更改端口,因为您必须将 Web 服务器的端口从服务器 A 上的 80/443 更改为其他端口,并将这些端口用于 LB -这取决于你的速度。

    或者,如果您的两个 Web 服务器都位于防火墙后面,则可能存在 NAT 端口转发,因此您只能将目标 IP 地址从服务器 A 更改为服务器 B。

    • 0

相关问题

  • Solaris DNS

  • resolv.conf 在经过一段时间后被更改

  • 为什么有些网站的网址中没有“www”就无法显示?[关闭]

  • 为本地网络中的名称解析添加自定义 dns 条目

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve