分布式系统中要部署几台 NTP 服务器才够用?
.
本作品采用“Creative Commons 署名-非商业性使用-禁止演绎 3.0 Unported 许可协议(cc by-nc-nd)”进行许可。
http://creativecommons.org/licenses/by-nc-nd/3.0/
分布式系统中各节点的时钟同步是必备的,虽然做不到完全同步(毕竟不是一个时钟域),但是借助 NTP 服务可以把同一个数据中心(同一个 LAN 上)内的机器的时钟同步到相互误差 1 毫秒上下,这通常已经够用了。(这里的机器指的是运行 Linux 或 FreeBSD 的机器,Windows 的时钟精度要差得多,不堪一用。)
那么要部署多少台 NTP 服务器才能达到比较高的可用性(availability)呢?
1 台肯定不够,因为是 single point of failure,它一旦坏了各台机器的时钟就会漂移。
2 台呢?似乎可以满足高可用的需求,坏一台也没关系。但是,一个人戴一块手表的时候知道时间,当他戴两块手表的时候就不知道哪个是准的了。如果数据中心里有两台 NTP 服务器,stratum 数又是一样(它们之间不相互同步,因此有时间差),在两台都正常工作的情况下,各台机器怎么知道应该跟哪台 NTP 服务器同步时钟呢?更糟糕的是,万一有一半的机器跟 NTP1 同步,另外一半跟 NTP2 同步,分属两个时钟阵营,岂不是比不同步好不了多少?(NTP 的算法规定只能和一台服务器同步时钟,不能取两台服务器的平均数来同步。)
3 台呢?似乎能打破僵局 (break the tie),有了三个候选者,但愿机器们能从中选出一台来与之同步时钟。但是,即便有 3 台服务器,仍然不能满足高可用的需求,只要有任何一台坏掉,就会退回到第 2 种情况,机器们又戴上了两个表。
4 台?根据以上分析,似乎要 4 台 NTP 服务器才能满足高可用的需求,您同意吗?在平时,有四个候选时钟,机器们可以自己选一个来同步,如果坏掉一个,仍然有三个以供选择,不会出现平局。在部署 4 台 NTP 的时候,可以考虑放两台在本数据中心,另外两台放在临近的数据中心,两个数据中心的机器可以共享这 4 台 NTP 服务器,以进一步提高可靠性。
更多?根据以上分析,如果容忍坏两台 NTP 服务器,那么要部署 5 台才够用,以此类推。
其实,在部署多台 stratum 相同的 NTP 服务器的情况下,似乎没有什么办法能让所有的机器都跟其中一台 NTP 服务器同步时间,各台机器有自己的选择,会造成 systematical 的时钟误差,在设计分布式系统的时候必须要充分考虑机器之间的时钟误差(以及可能的时钟跳变)。
NTP 服务器不同于一般的服务器,它有独特的部署要求,见:Brad Knowles 写的 Building scalable NTP server infrastructures 和 It's about time ...。
数据中心应该有自己的 stratum 1 NTP 服务器
Stratum 1 是最高等级的 NTP 服务器,它直接连到参考时钟(refclock),能够独立报时。
受益于 GPS 模块的普及(淘宝上一百块以内),stratum 1 NTP 服务器可以低成本 DIY,只要设法把 GPS 模块的 pulse per second 信号接到 ntpd 就行。传统做法是通过串口的 DCD 信号(不过可能抖动 jitter 比较大),如果主板上有 GPIO ,可以有更精确的手段,见 A home-built NTP appliance。我准备在家装个 stratum 1 NTP 来玩。
另外,为了提高精度与稳定度,可以用 GPS 驯服钟(简单的可以用恒温晶振+锁相环 DIY),这比直接使用廉价 GPS 模块更好(当然,在其他各项条件足够好的情况下才能看出区别)。
数据中心部署 stratum 1 NTP 的难点恐怕不在 NTP 服务器本身,而是找能看见足够的天空的地方装 GPS 天线,再专门为之布线,让 GPS 模块能正常工作。在家玩就简单得多,把 GPS 模块的天线贴到窗台上就行。
思考:如何监控 stratum 1 NTP 服务器是否工作正常呢?看一个表准不准,得用比它更准的时钟源,那么如何判断 stratum 1 的 NTP 服务器的时钟是否精确呢?有没有比它更准的时钟?在数据中心放原子钟吗?其实民用原子钟也不贵,几千块钱(二手 FE-5680A 铷钟在淘宝卖 100 块左右),体积跟移动硬盘差不多大。
分享到:
相关推荐
近日,本人想在局域网内通过普通的windows 7 PC搭建一台NTP服务器,可看似简单的配置却给我捣腾了了半天。初期,参考了互联网的上相关的配置文档,可网络设备就是死活不同步NTP服务器的时间。实在没办法,只有通过来...
多台ntp服务器时间校验同步工具 1、多台ntp服务器时间获取 2、可设置ntp同步间隔时间 3、获取的多个ntp时间进行判断有效性 4、与本机的时间误差大于设置值进行同步 5、可设置将本机作为ntp授时服务器 6、可设置程序...
做了3个小程序,一键搭建NTP服务器小软件
NTP服务器配置自动脚本(ntp)
1) 首先需要关闭作为NTP服务器的windows系统自带的防火墙,否则将同步不成功。 2) 单击“开始”,单击“运行”,键入 regedit,然后单击“确定”。 找到下面的注册表项然后单击它: HKEY_LOCAL_MACHINE\SYSTEM\...
步骤详细到每一个命令,根据pdf文件即可快速部署一套生产可用的NTP服务器。
自动从NTP服务器获取时间并同步本地时间,新测可用,C#,WinForm
基于CentOS 6.8部署NTP时间服务器,供下游业务系统使用。
部署一台服务器即使ntp server也是ntp客户端
一个简单的批处理文件,用于启动NTP服务
Suselinux11NTP服务器端搭建设置宣贯.pdf
完成NTP服务器的配置以及客户端自动同步
超好用的ntp服务器检测工具
Linux部署NTP服务器进行时间同步,,根据你的实际性况,时间不同步,该如何处理,而又没有办法的情况下详细操作步骤。
windows NT系统下的NTP服务器经本人证实,该服务工作正常,但若要使windows主机与其同步,还需要做详细设置。 对此本人暂时不会,请各位成功后不吝赐教,也希望能多交流,QQ:394029817,数字邮箱可能关闭。 因为...
关于ntp服务器配置问题 关于ntp服务器配置问题 关于ntp服务器配置问题
威伦通NTP服务器搭建流程(计算机时间与触摸屏时间同步).pdf
简易ntp服务器搭建,步骤不多,NTP服务器搭建 10.181.16.52 服务器端 10.181.16.5客户端 10.181.16.6客户端 10.181.16.7客户端
建议大家在自己管理的网络中建立至少一台时间服务器来同步本地时间,这样可以使得在不同的系统上处理和收集日志和管理更加容易。 介绍一下环境:12为本地时间服务器,其他服务器和12同步。12和网上时间服务器同步。
windows server 配置 NTP 时间同步服务器.txt