通用计算云¶
设计模型¶
一家在线分类广告公司希望在私有云中运行由 Tomcat、Nginx 和 MariaDB 组成的 Web 应用程序。为了满足策略要求,云基础设施将在他们自己的数据中心运行。该公司具有可预测的负载需求,但需要扩展以应对夜间需求的增加。他们当前的环境缺乏与他们运行开源 API 环境目标相一致的灵活性。当前环境包括以下内容
120 到 140 个 Nginx 和 Tomcat 安装,每个安装 2 个 vCPU 和 4 GB 内存
一个由三个节点组成的 MariaDB 和 Galera 集群,每个节点 4 个 vCPU 和 8 GB 内存
该公司运行硬件负载均衡器和多个 Web 应用程序来服务他们的网站,并使用脚本和 Puppet 的组合来编排环境。网站每天生成大量的日志数据,需要进行归档。
该解决方案将由以下 OpenStack 组件组成
防火墙、交换机和负载均衡器位于面向公众的网络连接上。
OpenStack 控制器服务运行镜像服务、身份服务、网络服务,并结合支持服务,如 MariaDB 和 RabbitMQ,配置为至少在三个控制器节点上实现高可用性。
OpenStack 计算节点运行 KVM 虚拟机监控程序。
OpenStack 块存储供计算实例使用,需要持久存储(例如动态网站的数据库)。
OpenStack 对象存储用于提供静态对象(例如图像)。
运行多达 140 个 Web 实例和少量 MariaDB 实例需要 292 个可用的 vCPU,以及 584 GB 的内存。在典型的 1U 服务器上使用双插槽六核 Intel CPU 并采用 Hyperthreading,并假设 2:1 的 CPU 超卖比,这将需要 8 个 OpenStack 计算节点。
Web 应用程序实例从每个 OpenStack 计算节点的本地存储运行。Web 应用程序实例是无状态的,这意味着任何实例都可以失败,应用程序将继续运行。
MariaDB 服务器实例将其数据存储在共享的企业存储上,例如 NetApp 或 Solidfire 设备。如果 MariaDB 实例失败,预计存储将被重新连接到另一个实例并重新加入 Galera 集群。
Web 应用程序服务器的日志被发送到 OpenStack 对象存储进行处理和归档。
通过将静态 Web 内容移动到 OpenStack 对象存储容器中提供,并使用 OpenStack 对象存储备份 OpenStack 镜像服务,可以实现额外的功能。
注意
增加 OpenStack 对象存储意味着需要考虑网络带宽。建议使用提供 10 GbE 或更好连接的网络连接运行 OpenStack 对象存储。
利用编排和遥测服务也是在提供自动扩展、编排的 Web 应用程序环境时的一个潜在问题。将 Web 应用程序定义在 Heat 编排模板 (HOT) 中,可以消除对当前脚本化 Puppet 解决方案的依赖。
OpenStack Networking 可以通过使用插件和 Networking API 来控制硬件负载均衡器。这允许用户控制硬件负载均衡池和这些池中的实例,但它们在生产环境中的使用必须仔细权衡当前的稳定性。
需求¶
存储需求¶
使用具有直连存储 (DAS) 的扩展存储解决方案对于通用的 OpenStack 云非常适用。云服务需求决定了您对扩展解决方案的选择。您需要确定单个、高度可扩展且高度垂直可扩展的集中式存储阵列是否适合您的设计。确定方法后,根据此标准选择存储硬件。
此列表扩展了将特定存储架构(以及相应的存储硬件)纳入通用 OpenStack 云设计的潜在影响
- 连接性
如果存储协议除了以太网之外,请确保选择了适当的硬件。如果选择了集中式存储阵列,请确保虚拟机监控程序能够连接到该存储阵列以进行镜像存储。
- 用法
特定存储架构的使用方式对于确定架构至关重要。将影响架构的一些配置包括它是否将由虚拟机监控程序用于临时实例存储,或者 OpenStack 对象存储是否将使用它用于对象存储。
- 实例和镜像位置
实例和镜像的存储位置将影响架构。
- 服务器硬件
如果该解决方案是包含 DAS 的扩展存储架构,它将影响服务器硬件的选择。这可能会影响影响主机密度、实例密度、功率密度、操作系统-虚拟机监控程序、管理工具等的决策。
通用 OpenStack 云有多种选择。以下因素将对通用 OpenStack 云存储硬件的选择产生影响
- 容量
为资源节点选择的硬件资源应能够支持云服务所需的足够存储空间。定义初始需求并确保设计能够支持添加容量非常重要。为对象存储选择的硬件节点应能够支持大量廉价磁盘,而无需依赖 RAID 控制器卡。为块存储选择的硬件节点应能够支持高速存储解决方案和 RAID 控制器卡,以提供硬件级别的性能和冗余。选择具有自动修复损坏阵列的硬件 RAID 控制器将有助于替换和修复降级或删除的存储设备。
- 性能
为对象存储服务选择的磁盘不需要是快速执行的磁盘。我们建议对象存储节点利用存储的最佳性价比。相反,为块存储服务选择的磁盘应利用性能提升功能,这些功能可能涉及使用 SSD 或闪存存储以提供高性能块存储池。还应考虑用于实例的临时磁盘的存储性能。
- 容错性
对象存储资源节点不需要硬件容错或 RAID 控制器。由于对象存储服务提供跨区域的复制作为服务功能,因此无需为对象存储硬件规划容错性。块存储节点、计算节点和云控制器都应通过使用硬件 RAID 控制器和不同级别的 RAID 配置在硬件级别构建容错性。选择的 RAID 级别应与云的性能和可用性要求一致。
网络硬件需求¶
对于以计算为中心的架构,我们建议使用可扩展的网络模型来设计网络架构,以便于添加容量和带宽。这种模型的一个很好的例子是叶脊模型。在这种网络设计中,您可以添加额外的带宽并扩展到额外的机架设备。选择支持端口计数、端口速度和端口密度的网络硬件,同时允许随着工作负载需求增加而进行未来增长非常重要。在网络架构中,评估提供冗余的位置也很重要。
网络软件需求¶
对于通用的 OpenStack 云,OpenStack 基础设施组件需要具有高可用性。如果设计不包括硬件负载均衡器,则需要包含诸如 HAProxy 之类的网络软件包。