18.3 节点时间同步
Ceph 要求特定节点之间的时间保持精确的同步。您应该使用自己的 NTP 服务器设置节点。尽管您可以将所有 ntpd 实例指向远程公共时间服务器,但不建议对 Ceph 采用这种做法。如果采用这种配置,集群中的每个节点都会借助自己的 NTP 守护进程通过因特网来持续与三到四台时间服务器通讯,而这些服务器全部都相距很远。此解决方案在很大程度上带来了延迟方面的变数,使得难以甚至无法将时钟偏差保持在 0.05 秒以下(Ceph monitor 要求这种精度)。
因此,应该使用一台计算机作为整个集群的 NTP 服务器。这样,NTP 服务器 ntpd 实例可以指向远程(公共)NTP 服务器,或者可以有自己的时间源。然后,所有节点上的 ntpd 实例将指向这台本地服务器。此类解决方案有多种优势,例如,避免不必要的网络流量和时钟偏差,减轻公共 NTP 服务器上的负载。
要更改集群上的时间,请执行以下操作:
重要:设置时间
您可能会遇到需要将时间往回调的情况,例如,当时间从夏令时改成标准时间时就需要如此。不建议将时间回调的幅度超过集群的关闭时长。将时间往前调不会造成任何问题。
过程 18.1︰ 集群上的时间同步
- 停止正在访问 Ceph 集群的所有客户端,尤其是使用 iSCSI 的客户端。
- 关闭 Ceph 集群。在每个节点上,运行:
systemctl stop ceph.target
注意
如果您使用了 Ceph 和 OpenStack,则还需停止 OpenStack。
- 校验 NTP 服务器的设置是否正确,即所有 ntpd 守护进程是否可从本地网络中的一个或多个源获取时间。
- 在 NTP 服务器上设置正确的时间。
- 确认 NTP 正在运行且在正常工作,然后在所有节点上运行:
status ntpd.service
或者
ntpq -p
- 启动所有监视节点,并校验是否不存在时钟偏差:
systemctl start target
- 启动所有 OSD 节点。
- 启动其他 Ceph 服务。
- 启动 OpenStack(如果有)。