我有一台服务器托管网站和其他需要重新安装的服务。我想暂时将这些服务迁移到另一台服务器,尽量减少停机时间。两台服务器都位于同一个数据中心,可以位于同一个网络交换机上。
以最少的停机时间迁移这些服务的最佳方法是什么?该网站是数据库驱动的,因此理想情况下,我希望有一个“铁路转换”事件,这样我可以确保所有流量立即转移到新服务器。我不希望在将数据迁移到新数据库后,旧数据库得到更新。
我考虑了两件事:
更改 DNS 以指向临时服务。这里的主要问题是我无法控制 DNS 的传播时间,其他服务器可以暂时保留缓存的结果,从而导致网站对于获取旧地址的用户处于“关闭”状态。
有没有办法解决 Apache + 重定向的问题?我怀疑没有,因为基于名称的虚拟托管如果没有域名就会中断,而域名已经过时了,我无法使用。
将旧 IP 地址绑定到新服务器并在重新安装时(暂时)为旧服务器分配不同的 IP。在这种情况下,我可以不用管 DNS。
我是否忽略了其他简单的解决方案?
答案1
听起来你最好使用一个相对简单的解决方案……因为你可以忍受一点停机时间。我会避免使用 DNS,因为你几乎无法控制传播/缓存延迟。
1- 建立临时服务器
2- 关闭主服务器上的服务
3- 将关键数据从主服务器移动/复制到临时服务器
4- 将主服务器更改为另一个 IP 地址
5- 将临时服务器更改为主 IP 地址,启动
6- 修复主服务器(在不同的 IP 上)
7- 关闭临时服务器上的服务
8- 将关键数据从临时服务器移动/复制到主服务器
9- 关闭临时服务器
10- 将主服务器更改回主 IP 地址,启动
唯一的停机时间是当数据在服务器之间移动时,并且会根据数据移动的方式而有所不同。
注意:如果您有防火墙并且正在执行 NAT,则更改主 NAT 和临时 NAT 是交换 IP 地址的良好替代方法,并且可以减少停机时间。
答案2
只要没有其他服务绑定到该 IP,就可以切换。这不会花很长时间,而且您可以绝对确保流量流向正确的目的地。
只需注意邻近机器的 ARP 缓存。使用arping-s 改变后。
答案3
您的服务器本身是否有公网 IP?如果存在 NAT 映射,您只需更改 NAT 映射,让相同的公网 IP 指向新服务器的新内部 IP。
我认为,拥有一个较短的维护页面和测试通常比零停机时间更好。
答案4
我在我的博客上写了关于如何将 Web 服务器迁移到另一个服务器的文章。内容很多,包括数据库问题。
http://mysqlbarbeque.blogspot.com/2009/03/how-to-move-your-web-server-with-no.html