一般来说,在设置#1前端Web服务器(RoR的nginx / phusion)和#2数据库服务器(mysql)和#3缓存服务器(redis / memcached)时,您为每一个服务器推荐哪种类型的服务器?
我对以下因素感兴趣:
- 内存
- 硬盘
- CPU - 单核/双核/四核
这些将是专用服务器(裸机)或云(ec2),但我现在只是在寻找一般的准则。
答案1
这里没有足够的信息来以具体方式回答您的问题,因此我将提供一些可能有帮助的概括性信息:
对于数据库服务器,您需要一个磁盘大(且速度快)、内存密集的多核/多 CPU 怪兽——假设会有大量磁盘活动,您需要能够将数据库的大部分内容吸入内存以进行快速查询,并且会同时进行大量并行查询。
如何确定其大小取决于很多因素(数据集大小、同时连接数、查询的滥用程度)。典型的磁盘配置包括 RAID-1 配置中的非常快速的 SAS 或 SATA 驱动器(可能使用多个主轴来分离磁盘负载)。
Exception: If your DB will be lightly loaded (now and in the foreseeable future) you can skimp and get a dinky database server. Beware of false economy though: Under-specing your DB server may require an extended outage in the future to migrate to better hardware, so it's almost always better to over-build a bit.
对于 Web 服务器,您需要根据工作量按比例调整其大小。提供大量静态页面不会占用太多 CPU 能力或 RAM。执行大量复杂的 Ruby 工作(在 Web 服务器上处理数据集)可能需要更多资源。实际情况可能介于两者之间。Web
服务器唯一不变的是您需要“足够的磁盘来保存静态内容和任何临时/缓存内容”,而如今的超大磁盘通常很容易满足这一要求。
我的 Web 服务器在相对较小/较慢的 SATA 驱动器上使用 OS 级软件 RAID,通常配备 2-4 GB RAM 和单个双核或四核 CPU(无论我们的供应商目前在售什么),但我们的 Web 应用程序是轻量级的,不会冒这种配置负担过重的风险。
答案2
网络服务器:
相应的 CPU。小型 6 核或多插槽 - 取决于您需要什么。小型磁盘 - 2 个快速磁盘或 ISCSI LUN,2 个分区:操作系统、日志、电子邮件假脱机 ;) 没有内容 - 我的 Web 服务器从中央 NAS 位置提取内容。
数据库:Supermicro 机箱。它们在一台小型机架服务器中配备最多可容纳 72 个 (!) 磁盘的机架盒,外加一块不错的主板。放入一个好的 raid 控制器 (Adaptec)。放入 CPU 并准备放入 RAM。但最终,IOPS 将决定成败。磁盘:4 个磁盘作为 RAID 10 用于操作系统和 TempDB,另 2 个镜像,SSD 用于日志(日志写入延迟对于高写入速度至关重要)。其余用于根据需要的数据。根据需要,RAID 6 或 RAID 10 中的 8 到 16 个磁盘组。使用 Adapted 6xxx 控制器,几个作为读取缓存的 SSD 可能会派上用场。不过,这是相当高端的。