TripleO Undercloud NTP 服务器

Undercloud 应在外部 NTP 服务不可用时提供 NTP 服务。

问题描述

使用 HA 进行部署需要 NTP 服务,但我们依赖于外部服务。这意味着 TripleO 在没有互联网访问或本地 NTP 服务器的情况下无法安装。

这存在几个缺点

  • NTP 服务器是一个潜在的故障点,并且是外部依赖项。

  • 在没有额外工作(手动部署 NTP 服务器)的情况下,无法进行隔离部署,且没有互联网访问。

  • Infra CI 依赖于外部资源,导致潜在的错误否定测试运行或 CI 失败。

提议的变更

概述

为了解决这个问题,Undercloud 安装过程应包括在本地 Undercloud 上设置 NTP 服务器。使用此 NTP 服务器将是可选的,但我们可能希望将其设为默认值。拥有默认值比没有好,因为 HA 部署在控制器集群成员之间没有时间同步的情况下会失败。

Undercloud 上 NTP 服务器的运行主要适用于小型或概念验证部署。预计足够大的部署将已经运行本地基础设施 NTP 服务器。

替代方案

另一种选择是继续要求外部 NTP 服务,或要求手动步骤来设置本地 NTP 服务器。

安全影响

由于 NTP 服务器是同步 HA 所必需的,因此一个控制器(相对于其他控制器)的时钟偏差可能会使其无资格参与 HA 集群。如果多个控制器的时钟偏差,整个集群将无法运行。这为针对云的拒绝服务攻击打开了机会,无论是通过导致 NTP 更新失败,还是使用中间人攻击,向控制器返回故意错误的 NTP 响应。

当然,在 Undercloud 上运行 NTP 服务器会将该攻击向量转移到 Undercloud,因此应在 Undercloud 和/或连接的网络上进行足够的安全加固。我们可能希望将 NTP 服务器仅绑定到配置(控制平面)网络。

其他最终用户影响

这可能会使安装程序的设置更容易,因为他们不需要打开与 NTP 服务器的网络连接或设置本地 NTP 服务器。

性能影响

NTP 服务器的运行对 Undercloud 性能应几乎没有影响。它是一种轻量级协议,守护程序需要很少的资源。

其他部署者影响

我们现在要求在模板或部署命令行中配置有效的 NTP 服务器。如果我们有一个默认指向 Undercloud 上 NTP 服务的服务器,那么这个要求将是可选的。

开发人员影响

实现

负责人

主要负责人

工作项

TripleO Undercloud 安装脚本需要修改,以包括 NTP 服务器的安装和配置。这很可能通过使用 Undercloud 的可组合服务来完成,配置数据来自 undercloud.conf。配置应包括一组默认 NTP 服务器,这些服务器在未在 undercloud.conf 中指定服务器时可从公共互联网访问。

实施在控制平面网络上打开 iptables 以进行 NTP(如果可能,绑定到单个 IP/接口 [ctlplane])。

依赖项

必须安装 NTP 服务器 RPM,并且必须识别上游 NTP 服务器(尽管我们可能会配置一个默认值,例如 pool.ntp.org)。

测试

由于 NTP 服务的正常运行对于成功部署 HA overcloud 至关重要,因此此功能将在每次运行 TripleO CI HA 作业时进行测试。

我们可能还希望实施验证,以确保 NTP 服务器可以访问其上游 stratum 1 服务器。这将确保 NTP 服务器提供正确的时间。但是,这可选,因为唯一的要求是 overcloud 节点同意时间,而不是它必须正确。

文档影响

应记录 NTP 服务器的设置和配置。应传达基本的 NTP 最佳实践。

参考资料