什么样的硬件配置在驱动 Etsy
前言:Etsy.com 是家手工艺品拍卖网站,据其 CEO 查德·迪克森(Chad Dickerson)日前透露,该公司今年截至目前处理的交易总额已经突破了5亿美元。他们目前拥有超过300名员工,80万活跃商户以及超过4000万月访问用户。那这样一个大网站,其硬件配置如何? Etsy 官方技术博客有文章介绍, @忘美流星 编译如下。
传统上来说,讨论运行一个大网站所需的硬件配置是在私下的圈子中进行,并且通常是在说某个牌子做得怎么怎么稀烂,或者某个牌子的硬件支持怎么怎么糟糕。
随着“云时代”的到来,这一情况有了些许变化。人们突然之间开始谈论某个牌子有多大或多少的实例,同时我也相信这是对于了解数据中心里物理服务器的一个很好的实践。毕竟这不是竞争,而是在帮助人们摆脱和我们一样的困境,也是在传播关于某些方面某些人还不知道的解决方案,很像我在这个博客上发表的内容。
37signals 的朋友在参加了 Velocity 大会(一个可以讨论硬件八卦内容的地方)后,他们也有这个趋势,最近 发布了他们的硬件配置。
因此,出于对这个趋势的兴趣,以下就是为我们 7月中6950万美元销售额供以动力的硬件类别。
数据库部分 | Database Class
正如你 或许已经了解的那样,我们有相当多的MySQL机器用来存储数据,性能和(相当一部分的)可靠性也依赖这些机器。
为了实现对高存储、高处理力、和好的冗余度的四周高性能盒(all round performant box)有要求的作业,我们使用 HP DL380服务器。这些服务器拥有2U储存架区的计时器、2个8核的Intel E5630 CPU(2.53 Ghz)、96G的RAM(对全部重要的MySQL高速缓存)和16个15000转速146GB的硬盘。这样的配置提供了平衡性良好的磁盘空间去存储用户数据,同时也方便主轴/RAM快速地获取这些数据。服务器拥有四个1GB的以太网端口,但是我们只使用了其中之一。
为什么不用固态硬盘(SSDs)?
我们刚开始第一轮测试使用固态硬盘的数据库。传统上来说,我们已有其他的问题先需要解决,比如达到用户数据量(例如某台机器上的磁盘空间使用量)和CPU与内存之间的平衡性。然而,正如我们其他的配置信息中所展现的那样,我们有大量的固态硬盘遍及和贯穿基础架构,所以我们也将同样为数据库进行良好的测试。
我们的多种硬件如图所示,左边和中间为HP,右边为网络/Utility 箱
Web/Gearman Worker/Memcache/Utility/Job
这是相当广的一个范围,但是通常我们尝试并赞同尽可能少的机器类别。所以我们在处理会执行大量通信或冗余的任务时,大部分网络通信(Apache/PHP)的任务会在只有一种机器的应用层被处理。通过这种方式,硬件的可重用性得到了提升,并且可以实现机器部分的快速便捷转换。话虽如此,仍然有发生一些组件种类配置的细微差别,例如内存和磁盘的数量。
这种在机箱前部允许共享两个电源和12个3.5英寸磁盘的 支持 4 节点 的2U 超微机箱(Supermicro chassis ),我们相当喜欢。
4个简易可用节点的超微机箱(Supermicro chassis)
这个的常规配置为两个8核Intel E5620的CPU(2.40GHz),12GB至96GB 的RAM, 和600GB的7200转速硬盘或Intel的160GB固态硬盘。
注意到这些配置缺乏RAID(独立磁盘冗余阵列),我们很大程度上依赖Cobbler和 Chef,这表示从零开始重建一个系统只需要10分钟。在我们看来,当数据中心的员工可以在20分钟内更换驱动、重建一个系统并回到生产的情况下,为什么要用两个驱动呢?显然这只在适当的情况下生效,既机器集群中每台独立的机器上的数据并不重要。例如,当日志不断发送至 集中日志主机,并且网络代码易于部署回本机时,网络服务器就可以被认为是没有重要的数据了。
我们用Nagios核对(同样SMART核对也可以)来帮助我们了解文件系统变得不可写入时的情况,于是可以得知机器是否需要新的磁盘了。
每台机器拥有两个1GB的以太网端口,在这种情况下,我们只是用了其中一个。
分布式计算(Hadoop )
在之前的12个月内,我们致力于构架我们的分布式计算集群,并一些最终与上述机箱设计相似的硬件配置进行了评估。但是,我们使用不是之前描述的12个3.5英寸的设计,而是采用 前端拥有24个2.5英寸软盘插槽的机箱。
分布式节点,和大量的磁盘灯
每个节点(每个2U机箱中有4个节点)拥有两个12核Intel E5646的CPU(2.40GHz),96GB的RAM,和6个1TB的2.5英寸7200转速的磁盘。也就是每个存储架区有96核,384GB的RAM和24TB的磁盘空间。
我们的分布式计算作业在CPU方面任务繁重,而因为每个节点的磁盘空间量不大的关系,在存储和磁盘吞吐量方面问题不大。如果拥有更多的输入/输出和存储需求,我们会考虑替换成每个节点12个3.5英寸磁盘的2U超微服务器。
正如以上机箱,尽管每个节点有两个1GB的以太网端口,我们仍然每分钟只使用其中一个。
如图所示为一系列机器之间分布式作业是否运行时电力供给的不同
搜索 /Solr
仅仅一个月前,这还未被归类于上述的通用盒中,但是我们在搜索堆中发现了很多新的令人兴奋的内容。使用与我们通用例子相同的机箱,但这次使用的是超赞的 Intel CPU 新的 Sandy Bridge 线路。我们在每个节点中使用了两个16核Intel E5-2690的CPU(2.90GHz),使机器可以处理之前通用例子中节点的四倍工作量,同时保持同样的密度配置和并没有多太多的电源功率。这可是每个机箱128核2.9GHz的CPU啊!(算是包括了超线程在内)
这个结果很好,因为搜索确实属于CPU范畴——而我们这些年一般用固态硬盘去规避这些机器的输入/输出问题。每个节点拥有96GB的RAM和一个单程的800GB的索引固态硬盘。这个遵循了不打扰RAID的同样的模式——固态硬盘本身已经足够快,而我们通过 BitTorrent索引分布让获取机器索引变得特别快。
更少的机器,意味着更少的管理,更少的耗电,更少的空间。
32核Sandy Bridge架构中“Top”命令的输出
备份
超微也在这场角逐中获胜。我们使用了名为 6047R-E1R36N的catchily。型号中的36是一个重要的部分—— 这表示一个拥有 36 个 3.5 英寸 磁盘的 4U 机箱。我们为这些机箱装载2TB的7200转速的驱动,外加一个LSI RAID控制器——拥有1GB电池供电的回写缓存,提供了猛烈的1.2GB每秒的顺序写入吞吐量和总共(两倍于RAID6的) 60TB 可用磁盘空间。
36磁盘的超微机箱。注意:机箱的正面及反面都插满了磁盘!
为什么是两倍于RAID6的空间呢?这表示多一点浪费(4个同等驱动取代了2个),但是结果是你会对失去的驱动数量多一点弹性,而且如果你只丢失了一个驱动,重建的时间会减少一半。显然,RAID的监控室很重要的,我们需要检查SMART(单个磁盘机器)或者使用Nagios检查我们所有其他机器的不同的RAID使用。
在这个情况下,我们利用两个1GB的以太网连接,与带给我们冗余和所需的额外带宽的交换机粘合在一起。在将来我们甚至可以在这些机器上运用光纤去充分发挥磁盘的潜力——但是目前我们未能为我们的备份实现超过1GB每秒的速率。
特殊部分
当然规则总是会有例外。我们的唯一硬件配置例外就是 HP DL360服务器(1U, 4个2.5英寸15000转速146GB SAS的磁盘),这个角色并不需要太强的马力,但是我们认为对于拥有RAID已足够重要。比如DNS(域名系统)服务器,LDAP(轻量级目录访问协议)服务器,和我们的分布式计算名节点都是对磁盘空间要求不多、但是需要RAID以支持(相对于一般单个磁盘配置来说是属于)额外的数据安全的机器。
网络
在这篇文章里,我并没有深入探讨网络方面的内容。敬请关注这个博客,在以后的日子里,会考虑到这个部分,并由我们的网络大师带领大家进入packet shuffling 基础架构。
后续趋势
如果你在任何方面像我们,我们希望这里是你的硬件热情的好归宿。你有什么很酷的东西吗?
这篇文章发布者为Laurie Denness ( @lozzd),如果你能来帮助我们更好地使用这些硬件,他会很开心。 为什么不加入我们呢?
( 译注:不是这方面专家,在部分专业名词上的翻译可能会有偏差。如果觉得某个词语看得别扭,可以对照原文查看)
【如需转载,请标注并保留原文链接、译文链接和译者等信息,谢谢合作!】