私有云NTP服务

我在部署 私有云架构 的数据层存储 Ceph Atlas 时, 添加Ceph OSDs (LVM卷) 第二个mon节点,Ceph Dashboard的系统Health就提示:

clock skew detected on mon.z-b-data-2

实际上2个虚拟机的时间差只有2秒钟,但是对于分布式存储系统,时钟不同步会导致很多系统异常。这也提醒我,在部署大规模分布式系统( 可以参考 OpenStack AtlasOpenStack环境 基础设置需求)

由于只有一台物理主机,实际上最准确的也最容易保持的时钟的服务器就是 zcloud 物理主机:

  • 物理主机有硬件时钟(通过主板电池保证BIOS时钟不会偏差)
  • 物理主机只要启动就容易连接Internet(无需复杂的虚拟化),可以随时完成时间同步

通过 部署NTP服务(集群) 可以提供整个 私有云架构 所有虚拟机时钟同步

安装chrony服务

  • 安装 chrony

    sudo apt install chrony
    
  • 修改 /etc/chrony/chrony.conf 添加服务配置行:

    allow 192.168.6.0/24
    allow 192.168.7.0/24
    

默认配置中已经有和上级NTP服务器同步配置,所以不需要再指定上级NTP:

pool ntp.ubuntu.com        iburst maxsources 4
pool 0.ubuntu.pool.ntp.org iburst maxsources 1
...
  • 启动 chrony

    sudo systemctl start chrony
    sudo systemctl enable chrony
    

客户端

systemd-timesyncd客户端

所有虚拟机发行版基本都采用了 Systemd进程管理器 ,内置了 Systemd Timesyncd服务 可以和NTP服务器进行时钟同步

  • 修订客户机 /etc/systemd/timesyncd.conf

    [Time]
    NTP=192.168.6.200
    
  • 启动和激活 systemd-timesyncd

    sudo systemctl enable systemd-timesyncd.service
    sudo systemctl start systemd-timesyncd.service
    
  • 然后监测服务:

    sudo systemctl status systemd-timesyncd
    
  • 为方便查看本地时间,检查 /etc/localtime 软链接,确保:

    /etc/localtime -> ../usr/share/zoneinfo/Asia/Shanghai
    

chrony客户端

边缘云计算构建树莓派Raspberry Pi 4 上部署 Alpine Linux 构建 K3s - 轻量级Kubernetes 。树莓派没有硬件时钟,配置 chrony ntp服务 同步时钟:

  • 配置 /etc/chrony/chrony.conf 设置 192.168.7.200 作为NTP服务器:
chrony客户端配置 /etc/chrony/chrony.conf
#pool pool.ntp.org iburst
#initstepslew 10 pool.ntp.org
pool 192.168.7.200 iburst
initstepslew 10 192.168.7.200
driftfile /var/lib/chrony/chrony.drift
rtcsync
cmdport 0