如何以最less的停机时间从一台服务器迁移到另一台服务器?

我有一个服务器托pipe一个网站和其他服务,需要重新安装。 我想暂时将这些服务重新定位到另一台服务器上,尽可能减less停机时间。 两台服务器都在同一个数据中心,可以在同一个networking交换机上。

用最less的停机时间来移动这些服务的最佳技术是什么? 该网站是数据库驱动的,所以理想情况下,我想要一个“铁路交换机”事件,我可以确保所有的stream量一次移动到新的服务器。 我不希望在将数据迁移到新数据库后,旧数据库会得到更新。

我考虑过两件事情:

更改DNS以指向临时服务。 这里的主要问题是,我不控制DNS的传播时间,其他服务器可以暂时保留caching的结果,从而使旧url的用户“closures”网站。

有没有办法解决这个问题与Apache +redirect? 我怀疑,因为基于名称的虚拟主机断开没有域名,我不能使用,因为它是陈旧的。

将旧IP地址绑定到新服务器,并在重新安装期间(暂时)为旧服务器分配不同的IP。 在这种情况下,我可以单独离开DNS。

还有其他简单的解决scheme,我忽略了吗?

这听起来像你可能最好的服务相对简单的解决scheme…因为你可以容忍一点宕机。 我会避免与DNS混淆,因为你几乎无法控制传播/caching延迟。

1-build立临时服务器
2,closures主服务器上的服务
3-将主要服务器上的密钥数据移动/复制到临时服务器
4-将主服务器更改为另一个IP地址
5-将临时服务器更改为主IP地址,调出
6-修复主服务器(在不同的IP上)
7,closures临时服务器上的服务
8-将临时服务器的密钥数据移动/复制到主服务器
9-closures临时服务器
10-将主服务器改回主IP地址,调出

唯一的停机时间是数据在服务器之间移动的时间,取决于数据的移动方式。

注意:如果您有防火墙并正在执行NAT,则更改主服务器和临时服务器之间的NAT是交换IP地址的一个很好的select,并且可以减less停机时间。

提供没有其他服务绑定到IP然后去切换。 这不需要很长时间,您可以绝对确定交通是否会到达正确的目的地。

只要知道邻居机器的ARPcaching。 改变之后使用arping -s是一个很好的习惯。

如果您有两个系统之间的Lan速度连接和完全访问,使用drbd(drbd.org)可能是一个很好的select,以便在切换之前使系统之间的数据同步。

设置DRBD并让它同步
closures数据库和Web服务器
将原机上的drbd切换到辅助
将第二台机器上的drbd切换到主机
更改原始服务器IP
将旧的IP添加到新的服务器
调用二级系统上的db和web服务器

在原始系统重build时翻转它们

如果您的“数据”主要在数据库中,那么使用数据库复制的选项也是很好的select

即使TTL较低,等待DNS传播也会提供“不一致”的结果

我写了关于如何将Web服务器移动到我的博客上的另一个。 包括很多,包括数据库问题。

http://mysqlbarbeque.blogspot.com/2009/03/how-to-move-your-web-server-with-no.html

迁移服务器..真是痛苦。

幸运的是,你拥有同一个数据中心的所有东西。

但是,这真的取决于你有什么样的应用程序,并确保你已经在新的盒子上configuration了所有的应用程序。

一般来说,在我的工作场所,我们不使用configuration中的IP地址,我们使用DNS名称。 但是这些DNS名称只能在/ etc / hosts中引用

这意味着如果我们需要更改某个IP地址,我们只需更改hosts文件,并且所有内容都指向新的位置。

再次说明,这取决于你想如何切换 – 渐进与否。 您至less需要确保数据源等在两台机器上完全相同,因此,为数据库创build一个复制的从机等等。基本上,当您在一台机器上拔插头时,另一台机器应该是能够立即接pipe,并处于同一状态。 这是保持服务器分离的一个很好的理由。 所以,不要有一台服务器运行所有的邮件,你的数据库,你的web应用程序等。确保你没有一个单一的故障点。

以下是我们如何进行最近的服务器迁移(从一个数据中心到另一个数据中心)

  1. 几周前,更改域名的DNS上的TTL
  2. 安装新的服务器,确保它有完全相同的代码
  3. 设置主设备 – 在新数据中心中主设备复制的从设备
  4. 在testing时指向旧数据中心的所有东西(SSH隧道是你的朋友!)
  5. “翻转交换机” – 运行一个脚本,将所有服务器(旧的和新的)上的所有内容都更改为指向新服务器(确保同时这样做,否则可能会出现复制问题!)
  6. 迁移DNSlogging – 将DNS指向新服务器
  7. 监视器 – 观看旧服务器,直到stream量尾巴。
  8. 废除旧的服务器

虽然这并不完全是我们所做的一切的“一击一击”。 它给出了一个很好的概述。

如果您拥有相关域名,则可以通过DNSpipe理员(例如3-5分钟)将该DNS条目的TTL更改为较低的值。 让这个新的设置通过互联网传播了几天,然后再进行实际的DNS IP更改。 这应该确保任何caching的DNS条目在更改后都会得到快速更新。

你说得对,DNS切换是完全不可靠的。 我更喜欢的是,在DNS更改的同时,切换旧站点的数据库configuration,以便连接到新服务器的数据库。 大达,所有的更新去一个地方。

当然,对于连接到旧服务器的人来说,该网站的运行速度可能会比较慢,但这只会持续到他们同步。

你的服务器是否有服务器上的公共IP地址。 如果存在NAT映射,则可以将NAT映射更改为具有与新服务器的新内部IP相同的公共IP点。

我认为最好有一个简短的维护页面和testing,而不是自己的零停机时间。

在数据库服务器上使用复制。 这将解决您在中间时间在两台服务器上更新数据库的问题。

理想情况下,您可以在预定的时间之前将DNS主机logging的TTL设置为提前两天,但是如果您无法控制(或者无法与其他人一起工作),那么就会出现这种情况。

如果不是的话,唯一真正的是build立新的服务器,直到它准备好生产,然后安排几分钟的停机时间,然后再切换出箱子。