Ceph Monitor时钟同步¶
在完成 Ceph集群添加ceph-mon 添加第二个 z-b-data-2
monitor节点之后,我注意到 ceph -s
提示第二个节点时间异常:
clock skew detected on mon.z-b-data-2
其实这两个虚拟机 z-b-data-1
和 z-b-data-2
是位于同一个物理服务器 zcloud
上,KVM提供了虚拟化时钟,理论上应该两者一致。但是为何还会有警告呢?
通过ssh到服务器上检查,发现KVM虚拟机确实存在微小的时间差异:
huatai@zcloud:~$ date;for i in 192.168.6.204 192.168.6.205 192.168.6.206;do ssh $i 'hostname;date';done
Sat 04 Dec 2021 01:42:52 PM CST
z-b-data-1
Sat 04 Dec 2021 01:42:53 PM CST
z-b-data-2
Sat 04 Dec 2021 01:42:55 PM CST
z-b-data-3
Sat 04 Dec 2021 01:43:03 PM CST
huatai@zcloud:~$ date;for i in 192.168.6.204 192.168.6.205 192.168.6.206;do ssh $i 'hostname;date';done
Sat 04 Dec 2021 01:42:54 PM CST
z-b-data-1
Sat 04 Dec 2021 01:42:54 PM CST
z-b-data-2
Sat 04 Dec 2021 01:42:56 PM CST
z-b-data-3
Sat 04 Dec 2021 01:43:05 PM CST
最小时间差异2秒,最大11秒。而且物理主机时间和最接近的虚拟机时间似乎也相差半秒到1秒。
备注
实际上Ubuntu默认已经安装了 systemd-timesyncd
服务并默认启动,不过,我的KVM虚拟机 z-b-data-X
都是内网虚拟机,不能直接连接Internet,所以导致长时间运行后时间偏移。这里我需要解决在本地物理服务器上提供NTP服务(物理服务器直连Internet可以实时同步时间),来校准虚拟机的时钟。
这让我有点诧异,我原本以为KVM时钟至少本机能提供比较精确的时间,看来还是需要在我的 私有云架构 :
在物理主机
zcloud
上面向整个 私有云KVM环境 集群 部署NTP服务(集群)所有虚拟机都启用 Systemd Timesyncd服务 同步时钟
部署 chrony 服务器¶
登陆
zcloud
物理服务器,执行以下命令安装:sudo apt install chrony
编辑
/etc/chrony/chrony.conf
添加服务配置:allow 192.168.6.0/24
备注
其他配置保持默认
启动服务:
sudo systemctl restart chrony.service sudo systemctl enable chrony.service
检查服务状态正常:
sudo systemctl status chrony.service
配置客户机Systemd Timesyncd服务¶
备注
详情参考 Systemd Timesyncd服务
登陆所有KVM虚拟机,执行安装:
sudo apt install systemd-timesyncd
备注
操作系统默认已经安装和启动 systemd-timesyncd
,但是需要配置采用前述部署的局域网内部NTP服务器
/etc/systemd/timesyncd.conf
修改:[Time] NTP=192.168.6.200
重启
systemd-timesyncd
服务:systemctl restart systemd-timesyncd
然后检查同步配置:
timedatectl show-timesync --all
可以看到:
LinkNTPServers=
SystemNTPServers=192.168.6.200
FallbackNTPServers=ntp.ubuntu.com
ServerName=192.168.6.200
ServerAddress=192.168.6.200
RootDistanceMaxUSec=5s
PollIntervalMinUSec=32s
PollIntervalMaxUSec=34min 8s
PollIntervalUSec=32s
NTPMessage={ Leap=0, Version=4, Mode=4, Stratum=2, Precision=-24, RootDelay=37.094ms, RootDispersion=350us, Reference=CA701FC5, OriginateTimestamp=Sat 2021-12-04 22:24:01 CST, ReceiveTimestamp=Sat 2021-12-04 22:24:00 CST, TransmitTimestamp=Sat 2021-12-04 22:24:00 CST, DestinationTimestamp=Sat 2021-12-04 22:24:01 CST, Ignored=no PacketCount=1, Jitter=0 }
Frequency=0
时钟服务器已经指向 192.168.6.200
也就是 zcloud
服务器上自建的NTP服务器
备注
注意需要修订 z-ubuntu20
模版服务器的配置,方便后续创建虚拟机直接生效
检查¶
完成时钟同步之后,再次检查可以看到虚拟机时间已经完全一致:
date;for i in 192.168.6.204 192.168.6.205 192.168.6.206;do ssh $i 'hostname;date';done
输出显示:
Sat 04 Dec 2021 10:29:04 PM CST
z-b-data-1
Sat 04 Dec 2021 10:29:04 PM CST
z-b-data-2
Sat 04 Dec 2021 10:29:04 PM CST
z-b-data-3
Sat 04 Dec 2021 10:29:04 PM CST
此时检查 Ceph集群健康状态,可以看到时钟差异告警已经消失