[ 英语 | 日本語 | Deutsch | Indonesia ]

高级配置

OpenStack 旨在在各种安装配置下都能良好运行,从非常小的私有云到大型公共云。为了实现这一点,开发人员在其代码中添加了配置选项,允许根据您的需求调整各个组件的行为。不幸的是,使用默认配置值不可能覆盖所有可能的部署。

截至撰写本文时,OpenStack 拥有超过 3,000 个配置选项。您可以在 OpenStack 配置参考 中查看这些选项的文档。本章无法记录所有这些选项,但我们会尝试介绍重要的概念,以便您知道在哪里查找更多信息。

各种驱动程序之间的差异

许多 OpenStack 项目都实现了驱动程序层,并且这些驱动程序中的每一个都会实现自己的配置选项。例如,在 OpenStack Compute (nova) 中,实现了各种虚拟机管理程序驱动程序——libvirt、xenserver、hyper-v 和 vmware 等。并非所有这些虚拟机管理程序驱动程序都具有相同的功能,并且每个驱动程序都有不同的调整要求。

注意

当前实现的虚拟机管理程序列表在 OpenStack 配置参考 中列出。您可以在 虚拟机管理程序支持矩阵页面 上查看 OpenStack Compute (nova) 虚拟机管理程序驱动程序的各种功能矩阵。

我们想表达的重点是,仅仅因为存在某个选项,并不意味着该选项与您的驱动程序选择相关。通常,文档会说明配置适用于哪些驱动程序。

实现周期性任务

在各种 OpenStack 项目中,另一个常见概念是周期性任务。周期性任务类似于传统 Unix 系统上的 cron 作业,但它们在 OpenStack 进程内部运行。例如,当 OpenStack Compute (nova) 需要确定可以从其本地缓存中删除哪些镜像时,它会运行一个周期性任务来执行此操作。

周期性任务很重要,因为 OpenStack 使用的线程模型存在限制。OpenStack 在 Python 中使用协作线程,这意味着如果某个长时间且复杂的任务正在运行,它将阻止该进程内的其他任务运行,除非它主动将执行权让给另一个协作线程。

一个具体的例子是 nova-compute 进程。为了使用 libvirt 管理镜像缓存,nova-compute 具有一个周期性进程,该进程扫描镜像缓存的内容。此扫描的一部分是为每个镜像计算校验和,并确保该校验和与 nova-compute 期望的校验和匹配。但是,镜像可能非常大,并且生成这些校验和可能需要很长时间。在某个时候,在报告为错误并修复之前,nova-compute 会在此任务上阻塞并停止响应 RPC 请求。用户可以将此视为启动或删除实例等操作失败。

由此可见,如果您观察到 OpenStack 进程似乎“停止”一段时间然后继续正常处理,您应该检查周期性任务是否是问题所在。一种方法是通过将它们的间隔设置为零来禁用周期性任务。此外,您可以配置这些周期性任务的运行频率——在某些情况下,可能需要以不同于默认值的频率运行它们。

频率是为每个周期性任务单独定义的。因此,要禁用 OpenStack Compute (nova) 中的所有周期性任务,您需要将许多配置选项设置为零。您需要设置为零的当前配置选项列表是

  • bandwidth_poll_interval

  • sync_power_state_interval

  • heal_instance_info_cache_interval

  • host_state_interval

  • image_cache_manager_interval

  • reclaim_instance_interval

  • volume_usage_poll_interval

  • shelved_poll_interval

  • shelved_offload_time

  • instance_delete_interval

要将配置选项设置为零,请在您的 nova.conf 文件中包含一行,例如 image_cache_manager_interval=0

此列表将在不同版本之间发生变化,因此请参阅您的配置指南以获取最新信息。

特定配置主题

本节涵盖您可能需要调整的配置选项的具体示例。它绝不是一个详尽的列表。

Compute、Networking 和 Storage 的安全配置

OpenStack 安全指南 深入探讨了保护 OpenStack 云的安全,包括 SSL/TLS、密钥管理、PKI 和证书管理、数据传输和隐私问题以及合规性。

高可用性

OpenStack 高可用性指南 提供了消除可能导致系统停机时间的单点故障的建议。虽然它不是一份完全规范的文档,但它提供了避免停机和数据丢失的方法和技术。

启用 IPv6 支持

您可以关注 neutron IPv6 小组的工作,以跟踪 IPv6 支持的进展。

通过修改您的配置设置,您可以在使用 nova-network 进行网络配置时设置 IPv6,并且针对 FlatDHCP 和多主机配置进行了测试设置。关键是让 nova-network 认为 radvd 命令已成功运行。整个配置在 Cybera 博客文章 “An IPv6 enabled cloud” 中进行了详细说明。

对象存储的地理注意事项

所有受支持版本都提供对象存储服务器的全局集群支持。您将实现这些全局集群,以确保在发生自然灾害时跨地理区域进行复制,并确保用户可以根据最近的数据中心更快地写入或访问其对象。您配置一个具有每个集群的一个区域的默认区域,但请确保您的网络 (WAN) 可以处理区域之间以及您添加更多区域并构建处理更多区域的环路所带来的额外请求和响应负载。有关更多信息,请参阅文档中的 地理分布式 Swift 考虑因素