找回密码
 骑士注册

QQ登录

微博登录

搜索
❏ 站外平台:

Linux中国开源社区 技术 查看内容

复盘京东金融 2017 年元旦闰秒处置方案

2017-01-20 08:49    评论: 4    

时间融合集群架构和实现

架构和硬件

我们的 Stratum 2 时间同步服务器分布在 3 个 IDC,有 8 台独立的物理机,他们使用互联网上的 4 个相互独立的 Stratum 1 时间源和内部的两台铷原子钟授时时间服务器作为时间同步标准。 位于多个 IDC 的环境,外部独立的时间源,内部低延迟的时间源,使 Stratum 2 时间服务器可以稳定运行。

软件

目前在 CentOS 系列操作系统上可以选择的时间同步软件有 ntpd、chronyd、PTP4L、PHC2SYS。PTP4L、PHC2SYS 需要特定的硬件结构进行同步,而 ntpd 在 slew 模式下无法均匀同步时间。chronyd 作为 CentOS 7 中替换 ntpd 的方案,在 CentOS 7.2 和 6.8 中的 chrony 2.1 版本提供了时间平滑变化的方法。 chronyd 的时间平滑算法分为3个阶段。第一阶段频率(frequency)以固定比率(wander)变化至最大值(max_freq);第二阶段频率维持在最大变化频率(max_freq)足够的时间;第三阶段频率由再以固定比率(wander)变化至 0。假设这个变化从时刻 0 开始,时刻 a 完成第一阶段变化,时刻 b 完成第二阶段变化,时刻 b+a 完成第三阶段变化:

以此方式变化,则时间偏移为:

由于我们的客户端使用 NTP 同步,它的最大允许频率变化为 500PPM(PPM = Part Per Million,10-6 秒),而 500PPM 的变化反映在 1 天的区间,将会达到 43 秒。因此在时间调整过程中,我们不会达到像 500PPM 这样的数量级。因此,以上公式变为:

测试

测试集群包括 1 个节点作为时间调整源(Stratum 1,时间手动调整),3 台时间融合节点(Stratum 2,chronyd),连接至时间融合节点的 Stratum 3 节点(ntpd)和连接到以上节点的 Stratum 4 节点(ntpd)。

以下验证了参数 wander 对时间同步效果的影响

Wander=0.001ppm(图 6,图 7):

图 6

图 7

wander=0.002ppm(图 8、图 9):

图 8

图 9

wander=0.004ppm(图 10、图 11)

图 10

图 11

总结测试数据如下

参数(wander, ppm)

完成同步所需时间 (小时)

客户节点时间偏移幅度

4 级时间是否连续

0.001

17.57

<100ms

0.002

12.42

<100ms

0.004

8.78

>100ms

因为闰秒事件于北京时间早晨 8 点开始,并且需要当天 0 点之前完成同步,因此我们选择使用参数 wander=0.002ppm 进行时间融合。而 max_freq=400ppm。

实施

时间融合节点的选用

时间融合节为改造过的 Stratum 2 节点,使用 x86 服务器。X86 服务器电子振荡器(石英晶振)作为授时元件,它们受外界环境因素影响,主要是温度。而我们的 Stratum 2 时间服务器的授时质量也并不一致。图 12 展示了一周的时间周期内 Stratum 2 时间服务器 Frequency error 的变化。

图 12  Frequency error 的变化

图 12 我们选择其中 4 个变化幅度较小的节点作为时间融合节点,如此 NTP 客户端可以选择其中 3 个节点进行时间同步计算,并且有 1 个节点作为冗余

实施过程和时间点
Table 1. 实施过程和时间点

时间点

操作

结果

闰秒发生前1周

切断外部时间源,使用内部铷钟守时。扫描内部节点,清除闰秒标志位。

使内部节点不受闰秒标志所引起的各种bug影响。

闰秒发生前48小时

时间融合集群上线,使用内部铷钟同步。

使时间融合集群通过铷钟校正稳定。

闰秒发生前8个小时

切断时间同步节点,完全使用时间融合集群守时和同步。

使时间来源一致。

2017年1月1日08:00 UTC+8 闰秒发生

铷钟按照预设算法从GPS获得时间修正并跃迁1秒,时间融合集群开始修正时间。 闰秒发生后12.41小时 无 时间融合结束,时间融合集群重新和内部铷钟同步,客户端时间随之由时间修正转变为稳定性修正。

闰秒发生后24小时

Stratum 2时间同步节点修正时间后上线,并与铷钟和外部时间源同步。

Stratum 2时间同步节点开始同步,在他们稳定之前客户端仍然和时间融合集群同步。

闰秒发生后36小时

Stratum 2时间同步节点与时间源同步,被客户端选择参与时间同步运算。

闰秒发生后48小时

添加外部时间源至时间融合集群节点,时间融合集群作为Stratum 2时间同步节点运作。

闰秒相关变更完成。

时间融合期间的观测数据

时间融合期间,我们在位于 3 个 IDC 与时间融合集群同步的服务器上观测了铷原子钟、时间融合集群、客户端相对与铷原子钟的偏移(图 13、图 14)。观测点同步与铷原子钟。还有时间融合集群 3 个节点间的差距(图 15)。

图 13 相对与铷原子钟的偏移

图 14 相对与铷原子钟的偏移

图 15 时间融合集群 3 个节点间的差距

性能分析

在 12.41 小时的时间融合之后,仍需 1.39 小时使集群与原子钟重新同步,而连接时间融合集群的客户端需要更长的时间进行同步,时间融合集群各节点间差距小于 2ms,生产服务器依照时间融合集群步调融合时间,生产服务器集群和时间融合集群、以及生产服务器之间的时间差距不超过 100ms。

监控和测量方法

监控使用 Collectd 收集数据,Graphite 作为数据存储,Grafana 作为数据展示,数据收集的精度为每 10 秒一次。监测机同步至内部的铷原子钟以获得稳定的参考基线。

结论和后续工作

CentOS 6.8 和 7.2 版本中加入的 Chrony 版本 2.1 提供了一种对时间变化控制的方法,而不需再定制 Stratum 2 节点软件。

通过建立时间融合集群,同步复杂部署环境下超过 30k 个节点的时间变化,将其步调一致的变慢 1 秒。避免了时间变化的不连续和由于闰秒机制带来的潜在 BUG。

在实施过程中也发现了若干问题,在时间融合期间,时间融合服务器的时间变化性能受服务器个体、外界环境温度等因素影响;时间同步受传输过程中经过的长路径设施、防火墙等网络设备时,传输延迟摆动带来的时间不均匀变化也不容忽视。

后续考虑在 Stratum 2 和时间融合节点引入更精确的时间参考标准,比如 PTP、PPS 信号等方式,使时间变化过程控制更加均匀,时间融合节点间的误差更低;在传输设备上部署 PTP,以抵长距离和跨 IDC 网络传输对时间同步带来的影响。

12
查看其它分页:

最新评论

我也要发表评论

[1]
next_ [Chrome 55.0|Windows 7] 发表于 2017-01-21 18:24 的评论:
一个超级准的钟,如何证明自己很准呢,和什么参照
来自美国的 Chrome 55.0|GNU/Linux 用户 2017-01-23 03:11 回复
光速。是一个唯一不受参考系影响的物理量。所以校正过程应该会用到光速不变原理。
测试 [Firefox 53.0|Windows 10] 2017-01-20 22:30 回复
前面那段武侠风可以,我很喜欢。
来自河南郑州的 Firefox 49.0|Ubuntu 用户 2017-01-20 09:44 回复
来看看

收藏

返回顶部

分享到微信

打开微信,点击顶部的“╋”,
使用“扫一扫”将网页分享至微信。