Avamar:对 Avamar “asktime” 和相关 NTP 问题进行故障处理
摘要: 此解决方案旨在提供有关 Avamar Server 所使用的网络时间协议 (NTP) 的使用和配置的更多信息。
症状
此解决方案旨在提供有关 Avamar 网格所使用的网络时间协议 (NTP) 的使用和配置的其他信息。
它还提供了在使用 NTP 配置期间出现的问题的更多详细信息和故障排除步骤 asktime 效用。
它涵盖了为节点添加或额外服务器(如网络数据管理协议 (NDMP) 加速器)配置 NTP 所需的步骤。
原因
Avamar 使用 NTP 在外部时间源和所有 Avamar Data Store (ADS) 节点之间保持时间同步。
ADS 软件捆绑包包含用于配置 NTP 的实用程序 asktime。这可以是设置过程的一部分,也可以根据需要手动完成。
本文的目的是提供有关故障处理的其他信息和提示 asktime 以及与 NTP 相关的问题。
解决方案
- 除非另有说明,否则本文中列出的所有命令都应以管理员身份从加载 ssh 密钥的 Avamar 应用工具节点运行。有关密钥的更多信息,请参阅 Avamar:如何登录到 Avamar Server 并加载各种密钥。
- 为了简洁起见,本文中的一些输出被特意进行了修剪,特别是重复的输出
mapall命令。 - 例如,引用的任何名称和 IP 地址均仅供参考。这些应替换为特定于客户的详细信息。
部分 #1 - 基本 NTP 功能:
- 所有节点(实用程序和存储)都应轮询一个或多个用户或公共 NTP 服务器。
- 所有存储(数据)节点都应轮询相同的用户服务器。此外,存储节点轮询实用程序节点 (0.s) 和第一存储节点 (0.0)。
- 实用程序节点以本地时间运行。所有存储节点均以 UTC 运行。
2.这里的意图是所有节点都可以独立维护时间。(在外部 NTP 服务器不可用的情况下,节点可以通过使用 0.s 和 0.0 继续保持同步。)
部分 #2 - 用于检查 NTP 功能的其他 UNIX 实用程序:
service ntpd status/stop/start- 验证网络时间协议守护程序 (NTPD) 是否正在运行/根据需要停止和启动。date- 显示当前系统日期和时间。ntpdate- 用于轮询远程 NTP 服务器,并在需要时设置本地系统时钟。ntpq- 用于查看当前 NTP 连接。
部分 #3 - 用于检查 NTP 功能的其他 Avamar 实用程序:
通过使用 "check.dpn --preinstall --checktime“脚本,以便在所有或指定的节点上自动运行 NTPD, 以便验证一个或多个节点是否正确运行 NTPD 并选择了时间服务器。
安装程序和 GSAN 启动时,这是 NTPD 按要求工作的关键指标。
这些命令,尤其是与 mapall 命令应该足以调试大多数与 NTP 相关的错误。
部分 #4 - 对 NTP 问题进行故障排除:
1.NTP 问题通常会在执行新安装时立即发生,因为 timeserver 由客户提供的地址,或者由于防火墙或路由问题导致的地址。
2.当(在正常工作一段时间后)对客户网络进行更改、NTP 服务器被删除等时,也会出现 NTP 问题。随着时间的推移,这开始影响 Avamar 网格。
3.要最大程度地降低安装期间出现问题的风险,请使用 ntpdate 带有调试选项的程序 (-d验证一个或多个分配的时间服务器是否可用并处理请求。
有关完整的输出示例,请参阅附录 A 。
在下面的示例中,可以看到 Avamar 节点与时间服务器之间的握手。在此实例中,时间服务器报告 0.000006 秒的小偏移量:
ntpdate -d 168.xxx.xx.x
offset 0.000006
29 Dec 15:47:15 ntpdate[10500]: adjust time server 168.xxx.xx.x offset 0.000006 sec
将其与 timeserver 不可用。
ntpdate -d 168.xxx.xx.x
offset 0.000000
29 Dec 15:49:13 ntpdate[10699]: no server suitable for synchronization found
在此示例中,时间服务器显然不可用,如果 asktime 是要针对这个运行的 timeserver 它永远不会被看到同步。
在这种情况下,与客户合作,验证分配的地址是否正确,以及 NTP 端口 (UDP 123)未被防火墙阻止。
4.不要依赖简单的 ping 测试来验证 timeserver。NTP 未阻止的防火墙可能会阻止 ping,反之亦然。 Ntpdate 在使用 NTP 以验证连接时,实际上是 ping 的替代品。
5.所有节点都必须能够与外部时间服务器通信,这可以使用 Avamar 进行验证 mapall 命令:
(假设已安装 Avamar,并且 probe.xml 文件配置正确。)
mapall --all --user=root ntpdate -d 168.xxx.xx.x
6.查看输出,并根据上述示例验证所有节点是否可以与时间服务器通信。
如果所有节点都根据需要进行通信,则运行 ntpdate 不带”-d“标记来实际更新系统时间(假设 NTPD 尚未运行):
mapall --all --user=root ntpdate 168.xxx.xx.x
Using /usr/local/avamar/var/probe.xml
(0.s) ssh -x root@10.x.xxx.xxx 'ntpdate 168.xxx.xx.x'
29 Dec 17:40:41 ntpdate[23552]: adjust time server 168.xxx.xx.x offset 0.014792 sec
(0.0) ssh -x root@10.x.xxx.xxx 'ntpdate 168.xxx.xx.x'
30 Dec 01:40:42 ntpdate[18131]: adjust time server 168.xxx.xx.x offset 0.029407 sec
(0.1) ssh -x root@10.x.xxx.xxx 'ntpdate 168.xxx.xx.x'
30 Dec 01:40:43 ntpdate[16250]: adjust time server 168.xxx.xx.x offset 0.000689 sec
提醒:重新启动 NTPD 服务(service NTPD restart)调用 ntpdate 以执行类似的步骤。但是,当服务从 中重新启动时 asktime 没有直接的迹象表明 ntpdate 命令成功或失败。理想 asktime 应单独运行以验证连接是否良好。
部分 #5 - NTP 服务器选择:
客户站点上的 NTP 服务可能由网络团队管理,而备份 (Avamar) 更可能由服务器团队管理。
服务器团队可能不知道 NTP 服务器、允许连接所需的任何防火墙更改,或更改请求要求等。
因此,请在安装之前进行计划,并确保客户事先知道需要什么。
- 许多路由器配置为运行 NTP,因此请尝试使用默认网关 IP。如果它响应,则确保它的时间正确无误!
- 默认情况下,Windows Active Directory (AD) 服务器运行 NTP。但是,它们可以在虚拟机上运行,而虚拟机通常不可靠。如果
ntpdate报告连接良好,但 NTPD 无法与目标建立良好的同步,请与客户一起查找良好的本地时间源。 - 如果可以找到时间源,则在配置 Avamar 以使用它之前,请始终与客户确认它是否合适。
- 尽可能尝试在本地园区内找到 NTP 服务器,以尽可能减少连接慢速或高延迟导致的问题。
- 尽可能尝试使用多个 NTP 服务器。可用的服务器越多,NTP 就越好,可以更好地比较各种服务器并建立最准确的时间。
提醒:Avamar 可以在没有时间服务器的情况下工作:数据节点与 Avamar Utility Node 同步,但整个网格最终会在一段时间内发生漂移。
提醒: check.dpn (因此安装和 GSAN startup) 如果选择的 Time Served 少于三次,则发出警告。这只是警告而不是错误,但请尽可能尝试配置多个服务器。
部分 #6 - 进一步的故障排除:
偶尔,尽管 ntpdate 最初显示良好 timeserver 握手,NTPD 始终无法使用 timeserver 作为权威的时间源。这可以通过以下命令的输出来验证: ntpq (详情如下):
ntpdate 可用于向客户演示这一点,例如:
- 重新运行
"ntpdate -d <显示一个波动的偏移值,指示提供的时间不一致(请参阅之前有关在虚拟机 (VM) 上运行的 NTP 的注释)或高网络延迟导致问题。timeserver>" - Running
ntpdate针对几个不同的 NTP 服务器始终显示它们报告的时间不同;这可能只有几秒钟的时间,但足以使 NTPD 拒绝两个服务器作为有效候选服务器。 - 确定良好的本地
timeservers.如果在构建期间发生这种情况并影响计划,请考虑在没有任何时间服务器的情况下构建(系统将恢复到实用程序节点作为时间源),并在以后使用以下命令重新配置时间服务器:asktime一旦可以正确验证它们。
第 #7 节 - 使用 ntpq 要检查当前 NTPD 状态,请执行以下作:
提醒: 完整解释 ntpq 输出数据不在本文的讨论范围之内,但可以在此处引用:http://doc.ntp.org (external link)
而 ntpq 实用程序可用于查看当前 NTPD 配置和时钟选择一次 asktime 已手动或作为构建过程的一部分运行。
典型输出如下所示:
ntpq -p
remote refid st t when poll reach delay offset jitter
==============================================================================
+d-host.company.com 168.xxx.xx.xx 3 u 59 64 377 78.917 -6.205 8.690
+e-host.company.com 168.xxx.xx.xx 3 u 54 64 377 77.521 -4.340 8.744
+f-host.company.com 168.xxx.xx.xx 3 u 58 64 377 78.063 -1.381 10.317
+g-host.company.com 168.xxx.xx.xx 3 u 49 64 377 77.723 -6.972 8.570
*h-host.company.com 128.xx.xx.xx 2 u 49 64 377 77.003 -7.736 8.511
+i-host.company.com 130.xxx.xxx.xxx 2 u 42 64 377 78.341 -1.701 9.984
j-host.company.com .INIT. 16 u - 256 0 0.000 0.000 4000.00
LOCAL(0) LOCAL(0) 8 l 51 64 377 0.000 0.000 0.001
如果 ntpq 最初响应缓慢,这可能是因为它尝试根据配置错误的域名系统 (DNS) 配置解析时间服务器的名称。
如果是这样,请运行 ntpq 使用 -n 标志以跳过名称查找。但是,也请尝试确定 DNS 无法解析名称的原因并相应地进行修复:
ntpq -pn
remote refid st t when poll reach delay offset jitter
==============================================================================
+128.xxx.xx.xx 168.xxx.xx.xx 3 u 63 64 377 78.917 -6.205 8.690
+128.xxx.xx.xx 168.xxx.xx.xx 3 u 58 64 377 77.521 -4.340 8.744
+10.xxx.xxx.xx 168.xxx.xx.x 3 u 62 64 377 78.063 -1.381 10.317
+10.xxx.xxx.xx 168.xxx.xx.xx 3 u 53 64 377 77.723 -6.972 8.570
*168.xxx.xx.x 128.xx.xx.xx 2 u 53 64 377 77.003 -7.736 8.511
+168.xxx.xx.xx 130.xxx.xxx.xxx 2 u 46 64 377 78.341 -1.701 9.984
168.xxx.xx.x .INIT. 16 u - 256 0 0.000 0.000 4000.00
127.xxx.x.x LOCAL(0) 8 l 55 64 377 0.000 0.000 0.001
关于 ntpq 但是,输出超出了本文档的范围 ntpq,其他 NTP 程序在 http://doc.ntp.org(外部链接)中有很好的记录。
Avamar 正常工作的关键是选择时间良好的服务器,这由最左侧列中的星号表示。This is i-host.company.com 或上述示例中的 168.xxx.xx.x。
上一个示例适用于实用程序节点。以下示例显示了一个存储节点,该节点也尝试使用实用程序节点 (0.s) 和第一个存储节点 (0.0) 作为时间源:
ntpq -p
remote refid st t when poll reach delay offset jitter ============================================================================== +d-host.company.com 168.xxx.xx.xx 3 u 36 128 377 78.403 15.627 26.941 +e-host.company.com 168.xxx.xx.xx 3 u 82 128 377 77.740 10.448 23.707 +f-host.company.com 168.xxx.xx.x 3 u 89 128 377 77.982 -16.786 18.895 +g-host.company.com 168.xxx.xx.xx 3 u 40 128 377 78.565 3.230 16.925 +h-host.company.com 10.xxx.x.xx 2 u 96 128 377 78.082 0.369 17.982 *i-host.company.com 128.xx.xx.xx 2 u 35 128 377 77.954 16.410 26.429 j-host.company.com .INIT. 16 u - 256 0 0.000 0.000 4000.00 +utility.company.com 168.xxx.xx.x 3 u 34 128 377 0.226 -1.589 15.290 +sn1.company.com 168.xxx.xx.xx 3 u 97 128 377 0.214 -6.072 31.263
-
-
- 无法在此配置中预先确定选择哪个时间服务器作为权威时间源(如
ntpq -p左列中的输出)。主要目标是确保所有定义的时间服务器均已正确选择且可用。ntpd 服务负责决定要使用哪些时间服务器。 j-host.company.com不处理时间请求。这从左列中没有字符以及各种其他状态处于启动默认值中可以看出;从未建立连接以开始时间调整过程。这是使用 进行测试时ntpdate有助于事先确定。- 在实用程序节点 (
utility.company.com) 和存储节点 0.0 (sn.company.com) 也存在于有效服务器列表中,如前所述。
- 无法在此配置中预先确定选择哪个时间服务器作为权威时间源(如
-
提醒: 实用程序 (0.s) 和第一个存储 (0.0) 节点在完全稳定之前不会提供时间请求,因此这些服务器可能会被标记为 INIT 在初始配置后的一段时间内,因为它们不会响应请求,直到它们本身正确同步。
部分 #8 - 在其他节点上配置时间:
节点添加:
在过程生成器的“容量升级过程”部分详细记录了在要添加到网格的其他存储节点上配置时间服务。
其他节点(加速器等):
必须在其他节点(如加速器)上正确配置时间,以便正确记录备份时间戳。这是一个手动过程:
一个。以 root 用户身份,复制 /etc/ntp.conf 从现有存储节点(0.0 除外)到加速器。
这为外部节点提供了 timeservers 和键(0.0 和 0.s)网格 timeservers.
b.以 root 用户身份,编辑 /etc/ntp.conf 在实用程序节点 (0.S) 和第一个存储节点 (0.0) 上。
(在 ntp.conf file 定义 NTP 的运行时参数。)
必须将新节点 IP 添加到节点 0.s 和 0.0 上的访问控制列表中,以允许它们响应来自加速器的请求:
# - - - - -
# Inpidual DPN node restrictions - they can listen, but they can't
# change us, except as above.
#
restrict 10.x.xxx.xxx nomodify
restrict 10.x.xxx.xxx nomodify
restrict 10.x.xxx.xxx nomodify
restrict <Accelerator server IP> nomodify
c.c. 添加加速器节点后,在实用程序节点 (0.s) 和节点 0.0 上重新启动 ntpd 服务,以便重新读取配置文件:
mapall --nodes=0.0,0.s --user=root service ntpd restart
d.d. 在新节点上,以 root 用户身份,将服务配置更改为在启动时自动运行 ntpd:
chkconfig --level 35 ntpd on
e.在新节点上启动 ntpd:
service ntpd start
ntpd: Synchronizing with time server: [ OK ]
Starting ntpd: [ OK ]
f.加速器节点采用本地时间报告。时区由文件控制 /etc/localtime。这是被修改的内容 asktime 设置时区时。设置它的最简单方法是直接从实用程序节点复制它:
scp /etc/localtime root@accelerator:/etc/localtime
g.在新加速器节点上使用 date 命令验证报告的时间和时区是否正确。
部分 #9 - 正常作期间的时间同步问题:
NTP 非常可靠,除非网络配置发生更改、时间服务器 IP 被修改等。
当 Avamar 将其节点同步到应用工具和第一个存储节点(0.0 和 0.s)时,可以进行更改,并且在一段时间内不会真正成为问题。
如果节点配置错误,它们可能无法与实用程序节点或第一个存储节点同步,最终将与其他数据节点不同步。
网格 (GSAN) 检查在每个维护活动启动期间时间同步是否适当。如果任何节点之间的时间差异超过两秒,则活动会失败。一个或多个节点上的err.log文件中可能会显示类似于以下内容的消息:
2010/12/30-02:23:10.57646 {0.3} [cpman:3411] WARN: <0980> samconn::dpntimecheck retrying dpn time check mytime=1293675790
2010/12/30-02:23:10.57712 {0.3} [cpman:3411] WARN: <0980> samconn::dpntimecheck retrying dpn time check mytime=1293675790
2010/12/30-02:23:10.57782 {0.3} [cpman:3411] ERROR: <0001> samconn::dpntimecheck time mismatch: synchronize clocks and retry
或者这个从 status.dpn:
Checkpoint failed with result MSG_ERR_BADTIMESYNC : cp.20101229150030 started Wed Dec 29 07:00:30
要解决此问题,请查看 ntpq 如上所述的输出,以确定哪些节点无法同步以及原因。与客户合作,查看最近是否发生了导致此问题的网络更改。
一个常见原因是 asktime 运行不正确,因为只选择了新节点进行修改; asktime 正确配置这些节点,但不更新 ntp.conf 0.s 和 0.0 上的访问控制列表,以添加新节点的 IP。此外,它不会在重新读取 ntp.conf 文件中定义。这反过来又意味着新节点永远不会与网格同步时间。
如果指定了外部时间服务器,则它们应与该服务器同步时间(网格也应如此),以便网格和新节点都显示为具有权威时间服务器。但是,其他节点无法同步到 0.0 和 0.s,因此如果外部时间服务器变得不可用,那么它们最终会不同步并失败。
其他信息
- 关于
ntpq但是,输出超出了本文的范围ntpq其他NTP接口程序在 http://doc.ntp.org(外部链接)中有详细的记录 - 请参阅 Avamar:如何使用 asktime 实用程序在 Avamar 多节点网格上配置 NTP,了解运行 asktime 的详细步骤。
附录 A:
以下项的输出示例: ntpdate 显示良好响应的命令:
ntpdate -d 168.xxx.xx.x
29 Dec 15:47:14 ntpdate[10500]: ntpdate 4.2.0a@1.1190-r Thu Oct 5 04:11:33 EDT 2006 (1) Looking for host 168.xxx.xx.x and service ntp host found : h-host.company.com transmit(168.xxx.xx.x) receive(168.xxx.xx.x) transmit(168.xxx.xx.x) receive(168.xxx.xx.x) transmit(168.xxx.xx.x) receive(168.xxx.xx.x) transmit(168.xxx.xx.x) receive(168.xxx.xx.x) transmit(168.xxx.xx.x) server 168.xxx.xx.x, port 123 stratum 2, precision -17, leap 00, trust 000 refid [168.xxx.xx.x], delay 0.10268, dispersion 0.00024 transmitted 4, in filter 4 reference time: d0c646c4.f9ac7000 Wed, Dec 29 2010 15:46:12.975 originate timestamp: d0c64702.fb7f0000 Wed, Dec 29 2010 15:47:14.982 transmit timestamp: d0c64702.f192b7fe Wed, Dec 29 2010 15:47:14.943 filter delay: 0.10661 0.10268 0.10274 0.10298 0.00000 0.00000 0.00000 0.00000 filter offset: -0.00184 0.000006 0.000053 -0.00000 0.000000 0.000000 0.000000 0.000000 delay 0.10268, dispersion 0.00024 offset 0.000006 29 Dec 15:47:15 ntpdate[10500]: adjust time server 168.xxx.xx.x offset 0.000006 sec
以下项的输出示例: ntpdate 命令显示较差 的响应:
ntpdate -d 168.xxx.xx.x
29 Dec 15:49:09 ntpdate[10699]: ntpdate 4.2.0a@1.1190-r Thu Oct 5 04:11:33 EDT 2006 (1)
Looking for host 168.xxx.xx.x and service ntp
host found : j-host.company.com
transmit(168.xxx.xx.x)
transmit(168.xxx.xx.x)
transmit(168.xxx.xx.x)
transmit(168.xxx.xx.x)
transmit(168.xxx.xx.x)
168.xxx.xx.x: Server dropped: no data
server 168.xxx.xx.x, port 123
stratum 0, precision 0, leap 00, trust 000
refid [168.xxx.xx.x], delay 0.00000, dispersion 64.00000
transmitted 4, in filter 4
reference time: 00000000.00000000 Wed, Feb 6 2036 22:28:16.000
originate timestamp: 00000000.00000000 Wed, Feb 6 2036 22:28:16.000
transmit timestamp: d0c64778.b4da6e75 Wed, Dec 29 2010 15:49:12.706
filter delay: 0.00000 0.00000 0.00000 0.00000
0.00000 0.00000 0.00000 0.00000
filter offset: 0.000000 0.000000 0.000000 0.000000
0.000000 0.000000 0.000000 0.000000
delay 0.00000, dispersion 64.00000
offset 0.000000
29 Dec 15:49:13 ntpdate[10699]: no server suitable for synchronization found