我们对目前的托管服务提供商不是很满意,因此我们希望搬到另一个城市的另一家公司。我们的业务是一所可在全球范围内访问的在线学校(这意味着我们的应用程序需要 24x7 可用性,但最多 1-2 小时的停机时间可能是可以承受的)。世界各地的学院和大学都将我们的课程作为他们自己的课程提供,因此这些协议的一部分规定,如果他们付钱给我们,我们在任何给定月份的停工时间不得超过 X。
所以我有一个计划,但我想公开它,看看是否有其他人看到我可能忽略的任何问题,或者如果你有更好的计划可以建议。
我们的设置:英特尔模块化服务器、带监狱的 FreeBSD、apache、mysql、php。学生登录的域类似于 portal.mydomain.com
我在想我们可以在站点 B(新站点)放置我们服务器的第二个实例并给它一个新域名 (portal1.mydomain.com)。然后我们可以强制所有来自 portal.mydomain.com 的流量重定向到 portal1.mydomain.com。届时,我们会对原始域名的 DNS 进行更改,使其具有新的 IP 地址。然后我们会给它 48 小时的时间来传播 DNS 更改。那时我们只需更改新实例上的 apache 以响应 portal.mydomain.com 而不是 portal1,然后一切照常进行。
我忽略了这个计划中的任何漏洞吗?有更好的方法吗?
为此,您必须绝对确保您的应用程序不依赖于当前域名并将在 portal1.mydomain.com 下运行。
我过去的经验是,可悲的是,情况并非总是如此。
如果您可以确定域名没有问题,那么您的计划听起来不错。
当你切换到新的数据中心时,你显然需要同步 MySQL 数据库(你没有在你的计划中提到这一点)。
我会将 portal.mydomain.com DNS 记录的 TTL 设置为较低的值,因此传播不需要 48 小时。
如果您不确定,我的建议如下:
* 降低 portal.mydomain.com 的 TTL(5 分钟)
* 在新 DC 中设置一个新实例,同时监听 portal.mydomain.com
* 保持 MySQL DB 从旧 DC 同步(复制)
* 停止旧 DC 中的 Apache
** 等待最后的 DB 更改复制
** 停止新 DB 上的复制,配置为独立
** 更改 DNS 记录portal.mydomain.com 指向新实例的 IP
** 配置旧 Apache 实例访问新 DC 中的 MySQL DB
* 等待,监视旧 Apache 上的请求,不再使用时关闭
* 将 TTL 设置为又是一个正常值
这也假设了一些事情,比如 DC 之间的 MySQL 连接是可能的。