我正在将许多网站从旧 Web 服务器迁移到新服务器。此过程需要尽可能透明地完成。
这些网站由 WCMS 支持,因此客户可能会更改他们的旧网站。为了避免这种情况,我考虑在旧机器上设置 TCP 或 HTTP 代理,以透明方式转发到新机器。这将大大减轻处理 DNS 的压力,由于过去的一些错误决策,这本身就是一项艰巨的工作。
我应该使用 HTTP 还是 TCP 代理,或者这通常是一个错误的选择?请注意,我基本上独自处理了几千个网站。
答案1
有几种方法可以做到这一点,可能适合你的情况,也可能不适合,但这里有一个选择:
- 在新服务器上设置网站的副本,并让网站所有者确认它们是正确的(通过新的或测试 IP)
- 如果你无法转移 IP,请提前一天将 DNS 上的 TTL 设置为很低,例如 5 分钟
- 在网站上运行 robocopy,将所有内容推送到新服务器。经常运行它,并在上线前再次运行它
- 为了确保您的用户无法写入旧位置,请在最佳非高峰时间上线时停止旧服务器上的 IIS
- 执行最后的 robocopy 以确保新服务器 100% 更新
- 在新服务器上启动 IIS 并更新 DNS 或移动 IP
您可以在旧服务器上设置重定向,而不是直接停止它,但它需要重定向到另一个 IP,因此这并不总是很干净。如果您认为您可以设置代理,那不会有什么坏处,但您仍然需要设定停止网站、进行最终 robocopy 和启动新网站的时间。否则数据可能会不同步。
如果您的网站所有者管理自己的 DNS,而您无法同时完成所有工作,那么代理听起来不错。如果您可以移动 IP,则无需担心代理,但如果不能,则 HTTP 代理可能是最佳选择。
答案2
当我准备将收到的邮件发送到新服务器时,我只需更改防火墙上的 NAT 规则,将外部 IP 指向更新后的内部 IP。快速、简单,最重要的是 - 如果我需要快速恢复,只需几秒钟即可完成更改。
答案3
如果您在两台服务器上都使用 IIS(如果您使用 IIS 7+ 则更好),您可以在旧服务器上设置转发规则,将所有流量转发到新 IP。这可能不太干净,因为用户可能会看到新服务器的 IP 地址。另一种选择是在旧服务器上放置一个新页面,所有流量都通过该页面发送,该页面重写新 IP 的输出。(即旧服务器http://www.example.comIP = 0.0.0.1 新 IP = 0.0.0.2,0.0.0.1 有一个页面请求http://0.0.0.2/whatever,并将该响应发送回用户)。诀窍是将表单数据从一台服务器发送到另一台服务器。