我需要更换运行繁忙网站的老化的networking服务器。 我有新的硬件和运行,所有的软件安装。 只有一个问题留在我正在寻找解决scheme:
当我在DNS中更改域的Alogging时,由于DNScaching,更改需要一段时间才能在Internet上传播。 在这段时间内,一些用户会碰到新的服务器,有些用户会碰到旧的,导致数据不一致,因为现在有两个数据库。 我怎样才能立即切换每个人? 我不运行DNS服务器,只能改变A和CNAMElogging,但是如果有帮助,我可以设置自己的DNSlogging。
过夜时我可能会有一两个小时的停机时间。
谢谢,西蒙
编辑 :谢谢你的答案。 我接受SmallClanger的答案,因为这是一个可行的解决scheme,我很高兴布赖恩,因为他的答案给了我一个新的想法:遵循SmallClanger的解决scheme,直到数据库迁移,然后用一个代理所有请求的HTTP代理replace旧的Apache到新的服务器。 我将代理configuration为通过IP地址寻址新服务器,并且不涉及可能(尽pipe302代码)在某个书签目录,社交networking或浏览器caching中的临时子域。
您拥有的基本问题是在交换过程中保持数据库的一致性。 为了实现零宕机,您将别无select,只能将这两台服务器设置为主动/主动群集。 (即使现在假设群集设置本身不涉及停机时间,这是一点点延伸)。
鉴于你不能改变TTL,你最好的办法就是尽量减less停机时间:
www2.example.com
),但也可以使其回复www.example.com
。 将www2
的DNS指向新服务器。 www
logging。 www2.example.com
replace旧的站点configuration 这将确保所有stream量在DNS传播过程中进入新网站,而不pipe最初使用哪个服务器,尽pipe它假设您的网站能够同时从多个域名提供服务。
对于单服务器LAMP堆栈(如果这是你所拥有的),那么这是你的最小(但不是零)停机时间的路线。
您可以将旧的Web服务器configuration为将所有请求redirect到新的IP。 这可以用apache中的mod_rewrite完成。
您可以在迁移之前的一两天将您的区域的TTL降低到一个较小的值。 在您更改了A资源logging之后,您可以再次将TTL提高到旧值。
您必须先迁移新服务器上的所有数据文件(apache和mysql文件)。 之后,当你有2 houres停止服务器,你可以同步rsync的所有数据文件。 使用rsync -avz / var / www / sites(旧服务器)user @ hosts2:/ var / www / sites(新服务器)。 并导出所有的数据文件在SQL Server从服务器1导入到新的服务器。 然后swich服务器2
并停止旧的服务器,如果你有一些问题再次启动服务器1并重新启动错误的新服务器。
但在你开始新的服务器检查错误之前,请自行testing。
降低TTL,并在旧页面上的维护标记下?
我的东西TTL是个坏主意。 如果旧服务器活着,一些用户将会连接旧服务器,另一个用户将使用新服务器。 如果你真的有2个小时使用syn并导出inport所有从sql到sql,然后在新的服务器上swich确保所有将罚款亩解决scheme
您可以使用旧的服务器IP为您的新的服务器。