我有一个networking服务器在生产。 它的IP是111.111.111.111,它被称为ServerA。 除了存储脚本文件之外,服务器还存储用户上传的文件并具有数据库。 该应用程序使用通配符子域,其中foo.example.com,bar.example.com等转到一个公共虚拟主机,服务器代码根据给定的子域名称作出适当的响应。 我有我的域名注册商指向IP 111.111.111.111,也设置为支持通配符。
我将需要更改networking服务器到一个新的服务器与IP 222.222.222.222它被称为ServerB。
以最less的停机时间来迁移服务器应该采取哪些步骤?
以下是我最初的想法。 请评论如果不正确或如果我缺less步骤。
- 在ServerA上发布通知,系统将closures进行维护。
- 在ServerB上设置Apache类似于ServerA上的设置,并在ServerB上添加ServerName为222.222.222.222的另一个虚拟主机(稍后会详细介绍)。
- 在ServerA上设置Apache以显示closures维护页面而不是访问应用程序脚本。
- 将脚本文件,上传的用户文件和数据库从ServerA复制到ServerB。
- 更改域名注册商指向IP 222.222.222.222。
- 在ServerA上设置Apache将所有请求redirect到IP 222.222.222.222。 这将如何与子域的要求工作?
- 等待域名更改传播。 在这段时间里我会摔倒吗?
- 在ServerB完全testing之后,取消ServerA的服务计划。
如何零宕机迁移?
这是我对这种迁移的总体计划:
- 在旧服务器和新服务器之间build立一个专门的VPN(例如使用OpenVPN)。
- 将整个应用程序从旧服务器复制到新服务器。
- 通过VPNbuild立旧服务器和新服务器之间的数据库复制,旧服务器作为主服务器,新服务器作为从服务器。
- 等待所有数据库被复制。 可能还要等一下。
- 一旦复制完成,直接连接到新的服务器(使用/ etc / hosts技巧),并validation应用程序似乎工作,Web服务器configuration正确等。
- 打破主/从关系,并将旧服务器上的应用程序configuration为通过VPN与新服务器上的数据库进行通信。
- 更改DNSlogging。 在等待TTL过期的时候,有些用户会碰到旧的服务器,有些用户会碰到新的服务器,但是两者都会使用新服务器上的数据库。
- 当TTL到期并且旧的服务器不再接收stream量时,停止使用它。 取下临时的VPN。