我公司的基础设施中,有 5 个位于远程位置的数据中心。
在每个远程位置,都有一对服务器拥有 DNS 和 NTP 服务,并且在该位置的每个服务器上都配置了从这两个服务器获取 DNS 和 NTP 调用。
所有服务器都是 CentOS 6.x 机器。
在 DNS 和 NTP 方面,有动机在这两个服务器之间创建冗余。
DNS 部分已涵盖,我只遇到 NTP 问题。
什么是正确的方法,以确保当一个 NTP 服务器出现故障时,第二个/其余的服务器将继续为客户端提供服务,就像什么都没发生一样?
我在 Google 上搜索了一下,找到了一个RedHat 解决方案将其中一台服务器设置为主服务器(通过在客户端中将其配置为“true”),但万一“true”(主)服务器发生故障……那么它就会发生故障,客户端将无法从中获取 NTP 更新,所以它不是一个纯粹的冗余解决方案。
我想知道是否有人有配置此类解决方案的经验?
编辑#1:
为了测试 MadHatter 的答案,我做了以下事情:
- 我已经停止了服务器上的 NTPd,该服务器在每个 NTP 客户端上都配置为“首选”。
- 我正在等待 NTP 客户端停止针对该服务器的工作并开始针对其合作伙伴 NTPd 服务器的工作。
- 我在客户端上运行
ntpq -p
以查看更改。这是输出ntpq -p
:
[root@ams2proxy10 ~]# ntpq -p
remote refid st t when poll reach delay offset jitter
==============================================================================
10.X.X.38 .INIT. 16 u - 128 0 0.000 0.000 0.000
*10.X.X.39 131.211.8.244 2 u 2 64 377 0.123 0.104 0.220
什么是“as in ntpq”?我应该运行哪个命令?
编辑#2: 输出为:
[root@ams2proxy10 ~]# ntpq
ntpq> as
ind assid status conf reach auth condition last_event cnt
===========================================================
1 64638 8011 yes no none reject mobilize 1
2 64639 963a yes yes none sys.peer sys_peer 3
ntpq>
pe的输出:
ntpq> pe
remote refid st t when poll reach delay offset jitter
==============================================================================
10.X.X.38 .INIT. 16 u - 512 0 0.000 0.000 0.000
*10.X.X.39 131.211.8.244 2 u 36 64 377 0.147 0.031 18874.7
ntpq>
答案1
我认为这不是什么问题:NTP 已经可以解决这个问题。
您没有“主”NTP 服务器和一些辅助服务器:您有一组配置好的服务器。NTPd 将决定哪个服务器可靠,哪个服务器最有可能提供良好的时间信号,并且它将不断重新评估其决定。
这是过去一个月左右来自我的 NTP 池服务器的一组绑定:
如您所见,大多数时间状态 6(系统对等点)由绿线占用,ntp0.jonatkins.com
这是我有权限绑定的 1 层服务器(我所有的其他服务器都是 2 层,因此如果没有其他因素,NTPd 会优先选择较高层的服务器)。
但是,您可以看到该线在第 44 周初期出现下降,并且图像下方的数值证实,在图表期间,ntp0.jonatkins.com
下降到状态 4(异常值),而linnaeus.inf.ed.ac.uk
大部分时间处于状态 5(候选值),但最高达到 6(系统对等)。(这些线没有一直下降到 4/上升到 6,因为这些是 5 分钟原始数据的 2 小时平均值;大概发生的一切持续时间明显少于 2 小时,因此已被平滑。)
这表明,在没有任何输入的情况下,NTPd 在某个时候决定其常用对等点不够可靠,并在“中断”期间选择了最佳替代源。一旦其首选对等点再次通过其内部 QA 测试,它就会恢复对等状态。
答案2
四个或更多 NTP 对等体提供错误时钟检测和 n+1 冗余。这也是Red Hat 的建议(尽管现在它似乎是仅限订阅者的内容)。
选择 4 个或更多 Internet 源或使用 NTP Pool 项目。如果有的话,请添加非 Internet 源(如 GPS 时钟)。将所有 NTP 服务器配置为所有这些源。
验证您的 NTP 服务器是否分布在整个基础设施中,并尽可能减少单点故障。使用不同的机架、配电、网络和互联网连接、数据中心等。
配置所有“客户端”主机以使用所有 NTP 服务器。每个客户端至少配置 4 个。
这种配置非常有弹性。你可以丢失任何一个 NTP 对等体,但仍然可以检测到错误时钟,从而丢弃一个错误时钟。