Hatena 通过虚拟化技术提高了主机的集成度,提高了整体的资源利用率。此外,我们自行组装服务器,避免了服务器配置过高,实现了系统整体的低成本。
虚拟服务器的构建策略
引入虚拟化技术最根本的目的就是提高硬件的使用率。为提高硬件使用率,应当让虚拟机操作系统使用空闲的资源。
例如, CPU 资源空闲就建立Web 服务器,I/O资源空闲就建立数据库服务器,内存资源空闲就建立缓存服务器。资源消耗倾向相似,并且负载较高的两个虚拟机操作系统,由于要消耗同一资源,应尽可能避免在一起。
虚拟服务器-Web 服务器
下面举个具体的虚拟机操作系统的例子。例如在安装了4GB内存的服务器上,分割出3.5GB 创建虚拟机操作系统,主要用于Web 服务器(如图14.1 所示)。而最近内存降价,因此将服务器升级到了8GB 。这样,内存就富裕了,因此将Web 服务器所在的虚拟机操作系统扩展到5.5GB ,再分出2GB 创建虚拟机操作系统,用于memcached 。
虚拟服务器一一数据库服务器
接下来举个数据库服务器的例子(如图14.2 所示〉。一般而言,数据库服务器虽然会消耗内存,但对于CPU 资源和I/O 资源的消耗并不多。因此,可以让它与Web 服务器的虚拟机操作系统放在一起,有效利用I/O和CPU 。
这里对虚拟化技术的优势做一下总结。具体的好处是,它能解除物理的资源限制,使得资源可以动态更改,虚拟机操作系统的迁移和复制也更容易。这样就能轻松地增加服务器,保证了可扩展性。
还有,它能在软件层面对主机资源进行强大的控制,使得异常行为的局部化、主机控制等变得更为容易。还能提高效率,使系统整体更加稳定。
虚拟化的缺点
额外开销的数值大致是:
• CPU 大约2%~3%;
• 内存性能1成左右;
• 网络性能一半左右:
• I/O性能降低5%左右。
第37课 硬件和提高效率——实现低成本的关键技术
SSD(高性能硬件)
安装了32GB内存,可以将全部数据放在内存中,这样完全不会发生I/O read,只有在更新时发生I/O write 。相反, SSD 那边的内存为8GB ,分给虚拟机操作系统的只有7GB ,因此数据几乎不能放在内存中, I/O read 次数非常多,这个差别一眼就能看出。
从图14.9 中查看这台安装SSD 的服务器的CPU 负载,尽管图14.10 中的I/O read 发生次数很多,但基本上没有I/O 等待,可知I/O read 只需很少的负载就能处理掉。实际上,两台服务器的平均负载也差不多, SSD 服务器的性能完全不逊于拥有32GB内存的服务器专用硬件。
从实际处理的SQL 数量来看,图14.11 的(a)为SELECT 的SQL 数,大致每秒处理500 个查询。而SSD 那边也能达到几乎相同的数量。尽管硬件成本下降到了1 /4 ,但性能几乎没有变化,这都是SSD 的功劳。
从上面SSD 的例子很容易明白,引入新硬件后,只需很少成本就能大幅度改善性能。特别是自行构建基础设施时,更应该尽早采取这些措施。