[ English | 日本語 | Deutsch | Indonesia ]
OpenStack 部署和配置规划¶
您在配置和部署方面做出的决策将影响您对云的维护。您的配置管理可以随着时间的推移而演变。然而,对于部署、磁盘分区和网络配置等前期选择,需要进行更多的思考和设计。
云的可扩展性的关键部分是运行云所需的工作量。为了最大限度地降低运行云的运营成本,请设置并使用具有配置管理系统(例如 Puppet 或 Kolla Ansible)的自动化部署和配置基础设施。这些系统结合起来可以大大减少手动操作和操作员错误的几率。
该基础设施包括系统,以自动安装操作系统的初始配置,然后协调所有服务的自动和集中配置,从而减少手动操作和出错的几率。示例包括 OpenStack-Ansible、Kolla Ansible 和 Puppet。您甚至可以使用 OpenStack 来部署 OpenStack,名为 TripleO(OpenStack On OpenStack)。
自动化部署¶
自动化部署系统在完成最少的手动工作(包括物理机架安装、MAC 到 IP 分配和电源配置)后,会在新服务器上安装和配置操作系统,无需人工干预。通常,解决方案依赖于围绕 PXE 启动和 TFTP 服务器的包装器来实现基本的操作系统安装,然后交给自动配置管理系统。
Ubuntu 和 Red Hat Enterprise Linux 都包含用于配置操作系统的机制,包括预种子和 kickstart,您可以在网络启动后使用它们。通常,这些用于引导自动配置系统。或者,您可以使用基于镜像的方法来部署操作系统,例如 systemimager。您可以在虚拟化基础设施中使用这两种方法,例如在运行虚拟机以分隔您的控制服务和物理基础设施时。
在您创建部署计划时,请专注于几个关键领域,因为在部署后修改它们会非常困难。接下来的两个部分将讨论配置
用于可扩展性的磁盘分区和磁盘阵列设置
仅用于 PXE 启动的网络配置
磁盘分区和 RAID¶
任何操作系统的基础都是安装操作系统的硬盘驱动器。
您必须在服务器的硬盘驱动器上完成以下配置
分区,它提供了操作系统和交换空间布局的更大灵活性,如下所述。
添加到 RAID 阵列(RAID 代表冗余独立磁盘阵列),基于您拥有的磁盘数量,以便您可以随着云的增长添加容量。下面更详细地描述了一些选项。
入门的最简单选项是使用一个硬盘驱动器和两个分区
文件系统,用于存储文件和目录,所有数据都存储在其中,包括启动和运行系统的根分区。
交换空间,用于释放进程的内存,作为仅用于交换而不用于其他用途的物理磁盘的独立区域。
由于通常对于生产云,您希望确保如果一个磁盘发生故障,另一个可以取代它,因此在此简单的单驱动设置中不使用 RAID。相反,对于生产环境,请使用多个磁盘。磁盘数量决定了要构建的 RAID 阵列类型。
我们建议您选择以下多个磁盘选项之一
- 选项 1
以水平方式对所有驱动器进行相同的分区,如图 驱动器分区设置 所示。
使用此选项,您可以将不同的分区分配给不同的 RAID 阵列。您可以将磁盘一和二的第一个分区分配给
/boot分区镜像。您可以将所有磁盘的第二个分区作为根分区镜像。您可以使用所有磁盘的第三个分区作为在 RAID 10 阵列上运行的cinder-volumesLVM 分区。
驱动器分区设置¶
虽然您最终可能会得到未使用的分区,例如此示例中磁盘三和四的第一个分区,但此选项允许最大限度地利用磁盘空间。由于所有磁盘都用于所有任务,因此 I/O 性能可能会成为一个问题。
- 选项 2
以硬件或软件为基础,将所有原始磁盘添加到单个大型 RAID 阵列。您可以将此大型阵列与引导、根、交换和 LVM 区域进行分区。此选项易于实施并使用所有分区。但是,磁盘 I/O 可能会受到影响。
- 选项 3
将整个磁盘专门用于某些分区。例如,您可以将磁盘一和二完全分配给 RAID 1 镜像下的引导、根和交换分区。然后,将磁盘三和四完全分配给 RAID 1 镜像下的 LVM 分区。由于 I/O 专注于专用任务,因此磁盘 I/O 应该更好。但是,LVM 分区要小得多。
提示
您可能会发现您可以自动执行分区本身。例如,MIT 使用 Fully Automatic Installation (FAI) 来执行初始基于 PXE 的分区,然后使用基于 min/max 和基于百分比的分区进行安装。
与大多数架构选择一样,正确的答案取决于您的环境。如果您正在使用现有硬件,您知道服务器的磁盘密度,并且可以根据上述选项确定一些决策。如果您正在进行采购流程,您的用户的需求也有助于您确定硬件购买。以下是 AT&T 的私有云为 Web 开发人员提供自定义环境的一些示例。此示例来自特定的部署,因此您的现有硬件或采购机会可能与此不同。AT&T 在其部署中使用三种类型的硬件
用于所有无状态 OpenStack API 服务的控制器节点硬件。大约 32-64 GB 内存,小型附加磁盘,一个处理器,变化的内核数量,例如 6-12。
计算节点硬件。通常为 256 或 144 GB 内存,两个处理器,24 个内核。4-6 TB 直接附加存储,通常配置为 RAID 5。
存储节点硬件。通常,这些硬件针对最低的每 GB 存储成本进行了优化,同时保持机架空间效率。
再次说明,正确的答案取决于您的环境。您必须根据空间利用率、简单性和 I/O 性能之间的权衡做出决定。
网络配置¶
网络配置是一个很大的主题,涵盖了本书的多个领域。现在,请确保您的服务器可以 PXE 启动并成功与部署服务器通信。
例如,您通常无法在 PXE 启动时为 NIC 配置 VLAN。此外,您通常无法使用绑定 NIC 进行 PXE 启动。如果您遇到这种情况,请考虑在仅您的云通信的专用网络中使用一个简单的 1 GB 交换机。
自动化配置¶
自动化配置管理的目的是在无需人工干预的情况下建立和维护系统的一致性。您希望在部署中保持一致性,以便每次都能拥有相同的云,可重复地。正确使用自动配置管理工具可确保云系统的组件处于特定状态,此外还可以简化部署和配置更改传播。
这些工具还可以测试和回滚更改,因为它们是完全可重复的。幸运的是,OpenStack 社区在这个领域已经做了大量的工作。Puppet 或 Ansible,配置管理工具,甚至为 OpenStack 基础设施系统中的 OpenStack 项目提供官方模块,称为 Puppet OpenStack、OpenStack-Ansible 和 Kolla Ansible。此外,PackStack 是 Red Hat Enterprise Linux 及其衍生产品的命令行实用程序,它使用 Puppet 模块通过 SSH 连接支持 OpenStack 在现有服务器上的快速部署。
配置管理系统的一个组成部分是它控制的项目。您应该仔细考虑您希望或不希望自动管理的所有项目。例如,您可能不想自动格式化包含用户数据的硬盘驱动器。
远程管理¶
根据我们的经验,大多数操作员并不坐在运行云的服务器旁边,而且许多人并不一定喜欢参观数据中心。OpenStack 应该完全可以远程配置,但有时并非一切都按计划进行。
在这种情况下,对运行 OpenStack 组件的节点进行带外访问是一大福音。IPMI 协议是这里的默认标准,建议获取支持它的硬件以实现那种“无灯”数据中心目标。
此外,还要考虑远程电源控制。虽然 IPMI 通常控制服务器的电源状态,但对服务器连接的 PDU 进行远程访问对于一切似乎陷入僵局的情况确实很有用。
其他注意事项¶
通过了解您想要创建的云的用例,您可以节省时间。OpenStack 的用例多种多样。一些包括仅对象存储;其他需要预配置的计算资源以加快开发环境设置;其他需要快速配置已经为每个租户使用私有网络保护的计算资源。您的用户可能需要高度冗余的服务器,以确保他们的遗留应用程序继续运行。也许一个目标是架构这些遗留应用程序,以便它们在多个实例中以云的方式、容错的方式运行,但不要将添加这些集群作为目标。您的用户可能会指示他们需要缩放考虑因素,因为他们大量使用 Windows 服务器。
通过查看您已经拥有的硬件的最佳匹配,您可以节省资源。您可能有一些高密度存储硬件可用。您可以格式化并重新利用这些服务器用于 OpenStack 对象存储。所有这些考虑因素和来自用户的输入都有助于您构建用例和部署计划。
提示
有关 OpenStack 部署的进一步研究,请调查来自 Canonical、 Cisco、Cloudscaling、IBM、Metacloud、Mirantis、Rackspace、Red Hat、SUSE 和 SwiftStack 等公司的支持和记录的预配置、预打包的 OpenStack 安装程序。