针对通过 WAN 连接在 SUSE Multi-Linux Manager Server 与代理之间同步时间过长的问题进行故障排除
根据在 WebUI 中执行的更改或通过 API 调用到分发或系统设置的内容,可能需要执行 cobbler sync 命令将文件从 SUSE Multi-Linux Manager Server 传输到 SUSE Multi-Linux Manager 代理系统。
为此,Cobbler 使用在 /etc/cobbler/settings 中指定的代理列表。
由于其设计,cobbler sync 无法仅同步已更改的或最近添加的文件。
相反,执行 cobbler sync 会触发将 /srv/tftpboot 目录完整同步到 /etc/cobbler/settings 中配置的所有指定代理。
这也受到参与系统之间 WAN 连接延迟的影响。
根据 /var/log/cobbler/ 中的日志,同步过程可能需要很长时间才能完成。
例如,该过程开始时间为:
Thu Jun 3 14:47:35 2021 - DEBUG | running python triggers from /var/lib/cobbler/triggers/task/sync/pre/* Thu Jun 3 14:47:35 2021 - DEBUG | running shell triggers from /var/lib/cobbler/triggers/task/sync/pre/*
结束时间为:
Thu Jun 3 15:18:49 2021 - DEBUG | running shell triggers from /var/lib/cobbler/triggers/task/sync/post/* Thu Jun 3 15:18:49 2021 - DEBUG | shell triggers finished successfully
传输量大约为 1.8 GB。 传输花费了将近 30 分钟。
相比之下,复制一个与 /srv/tftboot 大小相同的大文件只需几分钟即可完成。
改用基于 rsync 的方法在 SUSE Multi-Linux Manager Server 与代理之间复制文件可能有助于缩短传输时间和等待时间。
用于完成此任务的脚本可在 https://suse.my.salesforce.com/sfc/p/1i000000gLOd/a/1i000000ll5B/B2AmvIJN2_JsAyjTQzCVP_x5ioVgd0bYN9X9NpMugS8. 下载。
该脚本不接受命令行选项。
在运行脚本之前,您需要手动编辑它并正确设置 MLMHOSTNAME、MLMIP 和 MLMPROXY1 变量,以便其正常工作。
|
不提供对脚本的单独调整支持。 该脚本及其内部注释旨在提供过程和需要考虑的步骤的概述。 如果需要进一步的帮助,请联系 SUSE 咨询。 |
对于以下情况,最好使用建议的脚本用法:
-
SUSE Multi-Linux Manager 代理系统是通过 WAN 连接的;
-
/srv/tftboot包含大量用于各发行版和客户端 PXE 引导的文件,总计数千个文件; -
已禁用
/etc/cobbler/settings中的任一代理,否则 SUSE Multi-Linux Manager 会继续将内容同步到代理。#proxies: # - "MLMproxy.MLMproxy.test" # - "MLMproxy2.MLMproxy.test"
-
为 SUSE Multi-Linux Manager 与相关系统之间的 TCP 流量创建转储。
-
在 SUSE Multi-Linux Manager 服务器上:
tcpdump -i ethX -s 200 host <ip-address-of-susemanagerproxy> and not ssh
-
在 SUSE Multi-Linux Manager 代理上:
tcpdump -i ethX -s 200 host <ip-address-of-susemanager> and not ssh
-
这样就只会捕获大小为 200 的软件包,但足以运行分析。
-
将 ethX 调整为由 SUSE Multi-Linux Manager 用来与代理通信的相应网络接口。
-
最后,不会捕获 ssh 通信,从而进一步减少了软件包的数量。
-
-
启动
cobbler sync。-
要强制同步,请先删除 Cobbler json 缓存文件,然后发出
cobbler sync:rm /var/lib/cobbler/pxe_cache.json cobbler sync
-
-
当 {command]
cobbler sync完成后,停止 TCPdumps。 -
使用 Wireshark 打开 TCPdumps,转到
Statistics > Conversations,并等待转储被分析。 -
切换到 TCP 选项卡。 此选项卡上显示的数字表示在 SUSE Multi-Linux Manager 服务器和 SUSE Multi-Linux Manager 代理之间捕获的对话总数。
-
查找
Duration列。-
首先按升序排序,找出传输文件所花费的最短时间。
-
继续按降序排序,找出大文件传输时间的最大值,例如内核和 initrd 传输。
忽略端口 4505 和 4506,因为它们用于 Salt 通信。
-
TCPdumps 分析结果表明,将大小约为 1800 字节的小文件从 SUSE Multi-Linux Manager 服务器传输到代理大约花费了 0.3 秒。
此处的大文件不多,而大量的小文件导致建立了大量连接,因为每传输一个文件就要创建新的 TCP 连接。
因此,在知道最短传输时间和所需连接数(在本示例中大约为 5000)的情况下,可以大致估算出总传输时间:5000 * 0.3 / 60 = 25 分钟。