原文来自:https://blog.railway.com/p/data-center-build-part-one 很少看到有从 IDC 基础设施开始写的文章,一时兴起借 AI 工具作了粗浅的翻译。

从一开始,Railway的计算能力就是建立在谷歌云平台之上的。该平台支持了Railway的初步发展,但它也引发了许多问题,这些问题给我们的业务带来了生存风险。更重要的是,构建在超大规模云服务提供商上,阻碍了我们为客户提供最佳平台的可能性。

它直接影响了我们能够提供的定价(有人知道公有云流出流量费用吗?),限制了我们能够提供的服务级别,还引入了工程限制,这些限制了我们能够构建的能力。

我们不仅很少理解上游环节出问题原因,而且尽管我们每年花费数百万美元,但能得到的支持也只相当于你花费100美元所得到的。

因此,我们去年启动了一个 Railway Metal 项目。九个月后,我们在加利福尼亚的第一个站点上线,设计、规划并落地了从机柜中的光纤电缆到与互联网服务提供商的各种合同的一切。就在我们发布这篇博客的时候,我们正在启动另外三个区域的数据中心。

为了向我们的客户提供“透明基础设施”的云体验。我们需要迅速且足够好的构建我们自己的物理基础设施。这就是我们今天博客文章的主题。

所以你想要搭建自己的“云”

从 2024 年 1 月启动 Railway Metal 项目开始,我们花了整整五个月时间才将第一批服务器接入。之后,又用了额外的三个月,我们才觉得可以让用户放心地使用这些硬件(并且又过了几个月,我们才开始在这里撰写相关的内容)。

第一步是找到合适的地方。

本地部署时,你需要有地方来放置你那些崭新的服务器以及可靠的电力来保持它们运行。另外,你还需要足够的冷却措施,防止它们“熔化”(保障服务器正常运行)。

一般来说,你有三种主要的选择:绿地建设(购买或租赁数据中心)、机笼托管(在供应商的数据中心内获取一个由网格墙围起来的私人空间)、或者机架托管(租赁托管数据中心中的单个机架或机架的分区)。

这句话的意思是:“我们选择了第二种选择:一个笼子,它能给我们四面墙、一扇安全的门,以及一个空白的画布,让我们可以自由地设计其他一切。

租用或购买足够的空间来放置设备等并不是主要的成本支出,电力(以及由此带来的冷却需求)却是成本最高的部分。根据地理位置的不同,每千瓦时($/kW)的电力价格可能会有很大的差异。--举个例子,在美国西海岸,我们支付的电力费用可能不到在新加坡支付的一半。电费是按照固定的月度承诺来支付的,无论是否实际消耗,都要支付这笔费用,以确保电力可以随时按需使用。

但是你需要多少电力呢?

能力越大,责任越大

理想情况下,如果你已经开始了数据中心迁移的任务,你应该对想要部署的计算资源数量有一个大致的概念。我们开始时设定了虚拟CPU(vCPU)的数量、内存容量(GBs)以及NVMe(一种高速存储设备)容量(TBs)作为目标,以匹配我们在谷歌云平台(GCP)的容量。

经过一系列指标、数据的分析、比较等过程,我们最终确定了合适的服务器和CPU。计算过程有很多因素、参数等可供选择、调整--甚至于都值得另外写一篇文章了--但对我们来说,最重要的因素是功耗密度。例如,我们如何在特定的功耗范围内获得我们想要的计算密度。

功率计算并不像简单地把瓦数加起来那么直接,尤其是涉及到三相电的情况。Cloudflare有一篇很棒的博客文章详细阐述了这个主题。

电力是数据中心最为关键的资源,一旦电力中断,可能需要数小时甚至数天才能完全恢复正常的运营状态。所以冗余是非常关键的,对每个机柜来说,两路独立的电力接入至关重要。在正常运行时,这两个独立的电源线路会共同分担机架设备的负载,共同为设备提供电力。这样可以保证电力供应的稳定性和效率。然而,更重要的是,这种设计必须能够抵御其中一个电源线路发生故障的情况。即使其中一个电源线路出现故障,另一个电源线路也能够立即接管全部负载,确保机架设备的持续运行,而不会因为电源故障而导致设备断电。

为了将这种电力传输到你的服务器上,你还需要一个电源分配单元(PDU),你需要根据它提供的插座数量和管理功能来选择它。基本款的 PDUI 就像是升级版的延长线,而我们部署的 PDU 则能够实现对每个插座的控制和计量。

凭借前面提及的相关能力,现在机柜里面可以正常供电了。

上帝说要有光

没有一台云机器是孤立存在的,这就是网络发挥作用的地方。

为了在Railway上实现尽可能低的延迟,我们需要为你建立到世界各地的稳定连接。

我们寻找的数据中心要具备与顶级(T1)互联网服务提供商(ISPs)处于同一网络、属于互联网交换点(IX)的一部分以及有可用光纤连接到附近其他数据中心等特性。

部署到Railway的应用程序会想要通过网络连接到各种各样的端点,无论是位于澳大利亚悉尼的家庭互联网用户,还是托管在美国AWS服务器上的API。为了给您提供尽可能低的延迟和最低的带宽成本,我们会与针对每种使用场景优化的多种互联网提供商签订合同

我们在选择互联网服务提供商(ISPs)时,会考虑它们在我们目标地区的网络成熟度。如果在一个地区选择了不合适的ISP,可能会导致到达特定目标的网络路径出现额外的网络跳数(从而产生延迟),或者在最糟糕的情况下,出现复杂的网络路由。因此,为了确保网络服务的质量和可靠性,我们会根据它们在各个地区的网络覆盖范围来选择至少两个不同的网络。

一旦连接建立,我们会从每个互联网服务提供商(ISP)那里接收完整的互联网路由表并将这些路由表整合到我们的网络交换机上以便为每个IP前缀解析出最佳路径。如果你有一个位于澳大利亚的终端用户试图连接部署在新加坡的应用程序,我们很可能会直接将这些数据包转交给Telstra。Telstra拥有澳大利亚最密集的接入网络之一。如果同一个应用程序需要将数据包发送到日本的终端用户或服务器,那么我们很可能会将这些数据包转交给PCCWPCCW直接与日本的NTT(日本电信电话公司)进行对等互联,并且在亚太地区(APAC,Asia-Pacific)拥有广泛的网络覆盖

👉 网络之间对等互联的信息是公开可获取的,可以访问bgp.tools这个网站来观察你感兴趣的网络之间是如何实现相互连接的。

为了实现冗余,我们正在每个区域构建多个可用区,并且这些站点之间的互联互通对我们扩展计划至关重要。我们正在寻找裸纤(dark fiber)或波分复用技术(wavelength services)这样的工具来规划这种扩展。其结果是,你的应用程序不会察觉数据库是位于同一个房间,还是在相邻建筑中相隔四个街区的位置——这是一个优势,而不是缺陷——因为它增强了系统对单个数据中心故障的韧性。

...

好的,现在你已经找到了一个你满意的场地,和一个数据中心签订了协议,还和几家互联网服务提供商签了约,你就可以着手安装服务器了,对吧?

嗯,不是完全这样。首先你需要很多其他的东西来给你的服务器一个舒适温暖的家来安顿下来。

通道,机架和头顶的基础设施

在数据中心里,机架是按行排列的,机架之间的空间,也就是通道,被用于空气流通。

冷通道是从数据中心设施吹入冷空气的地方,而机架中的服务器会吸入这些冷空气,并将其从后部排出到热通道。数据中心设施会从热通道中移除这些热空气。为了达到最佳效率,不希望冷通道和热通道之间的空气混合。

即使您选择使用传统的19英寸宽设备,机架本身也存在一定的可变性。您可以根据设备和布线需求选择机架的高度、宽度和深度。

大多数服务器设备都可以通过滑轨进行滑动,以便于维护,因此要确保机笼尺寸允许设备进行滑动。布线和线缆管理也需要一定的空间,所以要在每个机架的拥挤程度与机笼内可容纳的机架数量之间做出权衡。

在我们的经验中,电力和制冷常常是限制因素,而不是实际可用的空间。在新场地,我们倾向于选择宽度为800毫米的机架,以便通过将电缆移出排气口的路径来实现更好的空气流通。

除了机架之外,你还需要一些基础设施来将电力和数据传输到你的机架。这可能涉及安装一些顶部基础设施和托盘,这些托盘让你能够将光纤电缆从你的机笼边缘路由到每个机架,并在机架之间路由电缆。当报价时,数据中心运营商通常会包含这些内容。

根据你的设计,你可能需要通过确保架空基础设施、机架内布线以及设备朝向的一致性,来优化电缆路径,使其尽可能短。由于我们的机架中每个都包含密集的交换机到服务器的光纤布线,因此我们采购的交换机是端口朝向机架后部的(这些被称为反向气流交换机,因为它们的散热口位于网络端口所在的侧面)。

这使我们能够对齐电缆托架,从而让所有的布线都发生在机架的一侧,并且没有电缆在机架的前部和后部之间来回曲折。

你已经拥有了所需的空间,签约了互联网服务提供商(ISPs),订购了硬件,准备好了机架,并且对如何布置这一切有了一个相当不错的概念。但目前,这一切还只是像一套昂贵的乐高积木一样,静静地待在数据中心的装卸区。要将它们组装起来,你现在需要利用人类历史上最通用的编程工具——Microsoft Excel。

上架和堆叠

让我们先退一步,先发表一个免责声明:整齐有序的布线需要大量的实践;我们自己也尝试过,结果……喜忧参半。

为了正确安装它们,我们引入了专业人士,但专业人士需要知道要安装什么。一份全面的文档包是必不可少的。电缆矩阵和机架布局图是常见的文件,它们向承包商传达如何安装和连接服务器。

电缆矩阵(Cabling Matrix)描述了每根电缆的端接情况,指明了连接的每一端所对应的设备位置和端口号,同时还包括电缆本身的规格信息(例如光纤类型、长度等)。机架视图(Rack Elevation)是机架本身的视觉呈现,展示了每个设备的位置和朝向。

文档工作非常繁琐,每个安装阶段都涉及60多台设备、300多根独立电缆以及许多细微之处。这些内容都被精心整理成书面规范和电子表格,作为安装和调试的基础。从物料到场到完成安装,整个过程大约需要6到14天。

数据中心的建设与软件、DevOps以及人们通常所认为的“基础设施”相去甚远。确切的说,更类似于建造房屋,而不是 Terraform 部署。

更复杂的是,每一个数据中心设施、承包商和供应商在做事方式上都会存在细微的差别,即使在同一个组织内也是如此。因此这些事情会要求你始终保持警觉,并且极度注重细节。

迄今为止我们经历过的一些困域时刻:

  • 承包商说需要更长的电源线。原因是该站点的电源分配单元(PDU)是倒置的,因为电源是从地板接入的,这导致了插座编号在规划中被反向标记了。
  • 来自阿姆斯特丹的电话说:“这个站点没有分界点吗?” 一个特定的设施直接将外部光纤链路安装到我们机架中的一个盒子上,而不是通过一个专用的交接点。
  • Railway Discord:“为什么这个PDU的相位接线这么奇怪?” 该设施的接线方式与其他站点不同,电源插座是相线对中性线接线,而不是相线对相线接线(对于电气工程师来说,这是WYE和Delta电路的区别)。
  • 承包商说:“你的数据线太短了。” 承包商没有意识到网络设备是逆向气流的,试图以错误的方向安装设备。
  • 我们提交了一个支持工单:“这条电缆没有建立连接。” 光纤的极性接反了;那天我们学会了什么是“翻转光纤电缆”……这是指他们从LC连接器中拔出插头并交换它们的位置。
  • Railway Discord:“我今天从家得宝买了一个橡胶锤。” 一个供应商的近24个PDU批次被交付时带有有故障的插座,即使施加适当的极端机械力,这些插座也无法与电源插头正确接合。

但从这一点开始——硬件已经就位,任务开始变得熟悉起来;我们现在需要进行一些BGP(边界网关协议,是一种用于互联网自治系统之间的路由协议)操作,安装一些操作系统,配置监控并让一切工作起来。

把油门踩到底

安装好的机架就像是一块空白的画布,网络设备需要进行配置,路由器的配置文件需要编写,区域互联网注册机构(RIR)的记录需要更新,我们还需要与类似 Redfish API(用于服务器主板和电源分配单元的专用控制器的 HTTP 接口)和 PXE(一种通过网络启动服务器的协议)进行交互,以确保一切正常运行。

我们也还没有讨论网络是如何工作的。我们的设计使用了FRR(Free Range Routing)和运行SONiC(Software for Open Networking in the Cloud)操作系统的白盒网络交换机,构建了一个仅基于第三层(L3)的软件驱动网络,该网络与我们的控制平面深度集成。

我们已经给你讲了很多来自一线的故事……要是再讲下去,你今天就别想走了。

在未来的文章中,我们将讨论如何将一个房间里的一堆服务器转变为一个功能性的 Railway 区域。在过去的几个月里,我们开发了两个新的软件工具:Railyard 和 MetalCP,以实现从设计新的机架、追踪和可视化布线,到在服务器上安装操作系统并将其接入互联网的“一键式”体验。

直到那时,如果这些内容中有任何让你感到兴奋的,可以查看我们目前开放的基础设施工程职位,如果这些职位引起了你的兴趣,就联系我们。

您可能还喜欢以下文章


关于我

热爱开源、分享。目前主要从事混合云、数据库 SaaS 等运维开发及相关团队管理工作。