Choosing a CPU

CPU的选择非常重要,首先确保你的CPU支持虚拟化,VT-x / AMD-v。记得在BIOS开启这个功能哦。

CPU的cores也会影响最终效果,现在的CPU通常都最多支持12 cores,如果Intel CPU支持超频,12就变成了24啦。如果你的服务器支持多CPU,那core数量就更多啦。

超线程:

是否开启超线程取决于你的实际环境。举个例子,关闭超线程在激烈的计算环境中是有益的。

我们建议根据你自己的负载进行关闭和开启测试,来确定到底需不需要开启超线程。

Choosing a Hypervisor

Hypervisor提供软件来管理虚拟机访问底层硬件。Hypersior创建,管理,监控虚拟机。OpenStack支持:

KVM / LXC / QEMU / ESX / ESXi / Xen / Hyper-V / Docker

或许选择hypervisor的最关键的因素是你环境的现状或者是你可能对某个Hypervisor比较熟悉。

在OpenStack中,KVM是最广泛应用的,其次是XEN / LXC / VMware / Hyper-V,QEMU / Docker很少被使用。

在一个环境中可以使用host aggregates或者cell部署不同的Hypervisor。但是,单个计算节点只能运行一个Hypervisor.

Instance Storage Solutions

三种模式:

Off compute node storage - shared file system

On compute node staroge - shared file system

On compute node storage - noshared file system

计算服务和存储服务有着不同的需求,通常计算节点要求更多的CPU和内存。如果你的物理主机数量有限而你又想运行更多的实例,可以在同一个节点上运行计算和存储服务。

我们会在下面几个章节中讨论这三种模式。


Off Compute Node Storage - Shared File System

这个模式下,实例都被放在计算节点以外的存储节点上。如果你把计算和存储节点分开,那你可以认为你的计算节点是stateless的。只要你没有在计算节点上运行任何实例,你可以随时把它离线或删除,对你的云环境没有任何影响。

优势:

如果一个计算几点宕机可以很容易恢复实例

维护一个专用的存储系统更为简单

你可以任意扩容

劣势:

大量的IO可能会影响与之无关的实例

使用网络可能会影响性能

On Compute Node Storage - Shared File System

这个模式中,每个计算节点都指定一些列的磁盘空间,然后通过分布式文件系统将这些磁盘空间聚合成一个挂载点。

优势:

当你需要额外存储空间时可以轻松横向扩展。

劣势:

和nonshared storage相比,使用分布式文件系统可能让你丢失本地数据。

恢复实例比较复杂,依赖于你的其他主机。

服务器的硬盘槽位可能会限制你主机的硬盘数量

使用网络会降低性能

On Compute Node Storage - Nonshared File System

这种模式中,每个计算节点都有足够的磁盘来承载运行在自身的实例。

优势:

Heavy I/O不会和其他计算节点互相影响

Direct I/O有着更好的性能

劣势:

一个计算节点宕机,实例也会丢失。

依赖服务器磁盘槽位,不能扩展。

迁移实例很复杂。

Issues with Live Migration

KVM live block migration允许没有共享存储也可以实现在线迁移。在较早KVM/QEMU基于块的迁移被认为是不可靠的,现在在QEMU1.4和libvirt1.0.2中有了更可靠的无共享存储迁移,这与openstack完全兼容。但是,本书的作者们都没有一手的经验。

Choice of File System

如果你想实现基于共享存储的在线迁移,你需要配置一个分布式文件系统。

NFS

GlusterFS

MooseFS

Lustre

我们在实际部署中都用过这几种,如果你对这些都不熟悉我们推荐用NFS。


Overcommitting

OpenStack允许你过量使用CPU和内存,这样你可以运行更多实例,当然代价是降低性能。

CPU分配比例16:1  

     举例,一个物理节点有12核心,scheduler看到的是196个可用的虚拟核心。通常一个实例需要4核心,那么最终可以运行48个实例

     虚拟实例=(OR*PC)/VC  

     OR CPU overcommit raito (virtual cores per physical core)

     PC  Number of physical cores

     VC  Number of virtual cores per instance

内存分配比例1.5:1

     一个物理节点有48G内存,scheduler拥有72G内存可以分配。

你必须根据你的场景选择合适的CPU RAM allocation ratio。

   

Logging

OpenStack会产生大量有用的日志信息。你需要考虑使用一个日志服务器来收集分析日志(如logstash)。


Networking

Openstack的网络非常复杂,我们会在第七章介绍