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 最佳实践。
参考资料¶
[1] - 管理指南草案/NTP - Fedora 项目 https://fedoraproject.org/wiki/Administration_Guide_Draft/NTP