65.9K
CodeProject 正在变化。 阅读更多。
Home

CodeProject.com 迁移到新主机

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.97/5 (53投票s)

2011年6月6日

CPOL

9分钟阅读

viewsIcon

53613

省略了脏话的精简版,讲述了我们如何迁移到新的托管中心

CodeProject.com 迁移

他们看起来很舒服吧几年左右,我们都会问自己:“是自己管理服务器还是花钱请别人来做?”每次我们计算一下,结果总是倾向于我们自己管理硬件。这包括许可、带宽、电力和托管、购买、升级和维护硬件、备份、防火墙、我们的时间、汽油、咖啡因以及那些小小的魔术贴线束。

我们花了比往常更长的时间来研究、定价、参考检查和试驾各种托管中心,直到我们找到了一家,它价格合理、管理良好、设计周到,而且其暖通空调系统不像旧的那么离谱,旧的甚至会在后门放一个风扇来给服务器降温。他们甚至还有免费的咖啡。我们被说服了。

合同经过考虑、调整、签署和交付,很快我们就拿到了新家的钥匙。

多少台服务器才够?

我们的旧设置(如图右)看起来有很多硬件。它多,也不算多。根据一些评论,Digg 使用 40-50 台服务器运行,分布在两个数据中心。有时会提到“500”这个数字,这可能是把备份和暂存等辅助服务器也算进去了。在 CodeProject.com,我们可以在一台 Web 服务器和一台数据库服务器上运行整个站点。没问题。但是,我们选择不这样做。

首先,“服务器”是什么意思?是一台 1GB 内存的 DELL 1U 双核机器,还是一个 64GB 内存、12 核的大型 2 处理器机器?我们两者都有,您可以猜猜我更喜欢哪一个。我们选择拥有大量的(大约六台)超便宜的 Web 服务器,这使我们能够进行一些不错的缓存,同时还拥有大量的冗余。我可以拔掉其中一半的服务器进行维护,而没有人会注意到。

我们的服务器也经常会坏。我们买过便宜的,也买过贵的,现在我们只为方便和一致性而购买。我们还有一台暂存服务器,两台通用服务机(可以说是在“休息”状态),一台备份服务器,一台备份磁带机,一对 Active Directory 服务器,DNS、邮件服务器和转发器,两台健康监控服务器,当然还有巨大的 SQL 服务器,它们听起来像喷气发动机。一对这种服务器。

那么这给了我们什么?8 台服务器用于实际提供内容。另外十几台则在那里显得很有用。有点像“拧一个灯泡需要多少台服务器”的笑话,但又不完全是。

迁移

Coffee. For the love of all things holy, coffee.

如果你要搬运精密且重要的设备,那么最好是在前一晚大醉一场后,在周六早上 5 点起床。等等——不,这实际上是错误的做法,但不管怎样,我们还是这样做了。

Garden shears?

早上 7 点,天已微亮,咖啡因已注入我们的血管,我们开始拔出服务器、松开电缆(有时是反过来),很快我们就准备好出发了。机架上留下了几台勇敢的服务器,它们将坚守阵地,直到新地点设置好并稳定下来。

我们最初的计划——嗯,是我们众多原始计划之一——是将服务器分成两组:一组去新中心,一组留在原地。每组将包含 3 台 Web 服务器和 1 台数据库服务器,在分组的那一刻,我们将网站切换到只读模式,以便内容仍然可用,但不会有更新,因此无需进行复杂的重新同步。

这是一个绝妙的主意,直到我们意识到我们可以在 4 小时内完成所有工作,而且这可能是冬季降雪来临前的最后一个好天气,让大家无法浏览网站,被迫做一些享受自然光之类的事情,对大家都有好处。或者,如果他们有点脑子,可以睡个懒觉。我们显然没有。

为了搬运这些精密易碎的服务器,我们仔细选择了 Vince 的卡车,因为它承载能力强、安全性高、运输重要物品的辉煌历史悠久,而且这是我们仅有的选择。它还有一个滑动托盘盖,这很方便,因为搬家过程中预计会下雨,而且没有人带任何防水布。

Buckle up
以前
Did we forget any of them?
     之后

将旧服务器安装到新机架上是一个直接但繁琐的过程。寻找丢失的电缆、导轨、电源板、交换机以及打开盖子所需的异形内六角扳手,既令人兴奋又令人沮丧。很快,服务器就安装到位、连接好并通电了,我们又开始营业了。

Locked and Loaded

我们还活着。总迁移时间为 3 小时,包括应对交通拥堵。

现在乐趣开始了

我受不了网络管理。它让我抓狂。迁移很简单。真正的困难在于处理让服务器之间相互通信的“黑魔法”。DNS、AD、DC、WINS——我的头疼欲裂,咖啡因也失效了。

我们做的第一件事是在两周前:我们将 DNS 的生存时间 (TTL) 设置为一分钟,这意味着我们要求 DNS 服务器只缓存我们的 DNS 条目一分钟。这样做意味着当需要将我们的地址切换到新位置时,应该在一分钟左右内完成传播。

我们做的第二件事是设置一个骨干设备和硬件团队,为我们提供可以连接的东西。一台漂亮的新机箱交换机、两个新防火墙以及新的计量电源板。Vince 说我们需要它们,但我认为他只是想要一些额外的闪烁 LED 灯来陪伴他设置新网络。我们拆卸了一些服务器,将 AD 和 DNS 等一些东西放在两个位置的单个故障模式下。

我们按下了开关。我们紧紧抓住扎根在地上的东西,用身体和脸部遮挡住攻击的群众,然后等待。

等待。

继续等待。

嗯。

如果你没有更新所有管理你 DNS 的服务器,DNS 就会变得很棘手。我们登录到我们的托管 DNS 帐户并更新了那里的条目,然后退后一步,躲避着成千上万急切会员的攻击,他们渴望体验更多带宽、更多动力、更多空间。

我们的 SQL RAID 上的小 LED 灯闪烁得更快一些,Web 服务器上的风扇转得也更快一些。我们上线了,群众找到了我们。最终,这有点反高潮,因为一切都像预期的那样工作了。简直有点令人失望。除了它并没有,显然。令人失望,我是说。

我们遇到的唯一真正问题是在网站上线并运行之后。显然,域控制器不喜欢与主控分离几周然后重新连接。在经历了一些像《奥普拉家庭团聚》与《杰里·斯普林格》中的双胞胎姐妹冲突一样的混乱之后,一切都恢复正常,每个人都知道自己应该成为谁。

伤亡

我们的一些服务器已经接近可以申请养老金的年龄了。它们在温暖、离子化的空气的舒适的“茧”中,过着舒适、有时甚至是安逸的生活。不幸的是,并非所有这些服务器都能经受住寒冷的多伦多早晨的考验。

迁移后,Vince 正在以冷静、镇定但肯定带有一定音量的方式与惠普的服务部门交谈。我们的主数据库服务器是一堆 15k 硬盘、64GB 内存、4 个 Xeon CPU 的 24 核处理器以及一只梨树上的鹧鸪。这是一笔相当大的购买,因为当时我们正处于 4 路 6 核 Xeon 的最前沿。此服务器的问题似乎在我们迁移后逐渐显现。一切都始于几次随机重启,导致了几次短暂的停机。早期类似谷歌风格的“凭感觉”诊断,明确指向了 RAM 或板载缓存控制器。

谈话是这样的

Vince:你好,我有一个 G5 正在崩溃。看起来像是一个 DIMM 坏了,或者板载缓存控制器有问题,我们可以更换它吗?

支持聊天:请更新固件。

在反复更新固件、运行诊断、技术支持、重新安装 Windows、运行诊断、技术支持之后,Vince 在事情发生两周后才开始收到一系列更换零件。我们收到了 2 个 DIMM 来更换主板上的内存。这没有任何效果。实际上不是这样的。机器从每周崩溃一次变成了每天崩溃一次。现在是时候从聊天支持转向电话支持了。你知道那种你可以“伸手触碰某人”的支持。勒死、扼杀、触碰:这之间的界限是如此之细。

一名技术人员被派来,并安排上门更换扩展卡。结果送货员只带了一张扩展卡。好吧。有 4 张扩展卡,我们应该换哪一张?好吧,让我们从右到左开始,因为此时逻辑似乎已经不重要了。总共有 4 位不同的技术人员到场,更换了处理器模块/主板两次、RAID 控制器、网卡和几根随机的内存条。

现在我们已经运行备用数据库服务器 4 周了。

这时,Vince 建议他把服务器放在卡车后面,用《垃圾场战争》风格的弹射器把它运到总部。他们决定最好派一名技术人员来取走它,并带到异地进行进一步诊断。几天过去了,令人难以置信的是,服务器又回来了并且功能正常。我们让这个精密的设备处理了一些 SETI 数据包来热身,然后它就又开始工作了,重新挤进了数据中心,舒适地安装在一个新的 SQL 故障转移集群中。

问题的真正原因是什么?两个有问题的 DIMM 和一个糟糕的 IO 控制器,它无法检测到有问题的 DIMM。

结语

现在我们在 Peer1 的新托管中心已经运行了几个月了,生活,奇怪地,迷人地,平静。我们已经移除了最初迁移的许多服务器,并正在逐步将我们的服务器迁移到虚拟化解决方案。我们以前至少每个月都会去我们旧的托管中心,但上次我去那里时,地上还有雪。现在是六月了。我们没有停电,没有网络问题,我们的成本大幅降低,而且中心过热导致服务器关机的次数为零。那个关于后门风扇用来给服务器降温的笑话?那不是开玩笑。

© . All rights reserved.