三亩地 三亩地SAN MU DI · CODE DIARY
ARTICLE DETAIL

日记详情

真实记录编程学习的某一天,欢迎挑你感兴趣的翻一翻。

广州网站建设新科分公司做购物网站的费用

广州网站建设新科分公司做购物网站的费用 广州网站建设新科分公司,做购物网站的费用,提供网站建设运营公司资质,做网站哪个公司可以做ntp3你现在的配置思路是对的:防止 NetworkManager 在网络状态变化时执行 chrony on/offline 操作,导致 chronyd 被干扰。 但是还不完整。timedatectl、systemd-timesyncd、NetworkManager、chronyd 之间存在几个容易…ntp3 你现在的配置思路是对的:防止 NetworkManager 在网络状态变化时执行 chrony on/offline 操作,导致 chronyd 被干扰。 但是还不完整。timedatectl、systemd-timesyncd、NetworkManager、chronyd 之间存在几个容易踩坑的点。 下面按生产环境(尤其 K8s 节点)给完整方案。1. 先明确几个组件关系 Linux 时间同步可能有:组件作用是否应该运行chronyd NTP客户端/服务端 ✅ 保留systemd-timesyncd systemd自带NTP客户端 ❌ 禁止timedatectl set-ntp 控制NTP服务开关 ⚠️ 不建议频繁调用NetworkManager 网络管理 保留NetworkManager dispatcher 网络事件触发脚本 需要限制目标: NetworkManager|X 不要控制 chronyd| chronyd --- NTP server| 系统时间2. timedatectl 对 chronyd 的影响 问题来源 执行: timedatectl set-ntp yes实际上不是"启动chronyd",而是告诉 systemd:启用一个NTP同步服务systemd 会查找: systemd-timesyncd.service chronyd.service ntpd.service不同发行版行为不同。CentOS 7 / RHEL 7 通常: timedatectl set-ntp yes会: systemctl enable chronyd但是如果: systemd-timesyncd存在可能冲突。 检查: systemctl status systemd-timesyncd如果存在: 关闭: systemctl disable --now systemd-timesyncd推荐做法 生产环境不要依赖: timedatectl set-ntp yes改成: systemctl enable --now chronyd更明确。3. NetworkManager 对 chronyd 的影响 NetworkManager 有 dispatcher。 路径: /etc/NetworkManager/dispatcher.d/某些发行版默认存在: 20-chrony-onoffline作用: 网络断开: 执行: chronyc offline网络恢复: 执行: chronyc online问题: 例如 Kubernetes: 网卡短暂变化: flannel启动 ↓ NetworkManager dispatcher触发 ↓ chronyd offline ↓ NTP停止 ↓ Leap status Not synchronised于是: checkntp失败4. 你的处理是否正确? 你现在: ln -sf /dev/null /etc/NetworkManager/dispatcher.d/20-chrony-onoffline作用: 创建: /etc/NetworkManager/dispatcher.d/20-chrony-onoffline|v /dev/null等于屏蔽该脚本。 这个方法: ✅ 有效 也是 RedHat 推荐的 workaround。但是建议补充: 先删除原文件: rm -f /etc/NetworkManager/dispatcher.d/20-chrony-onoffline再: ln -s /dev/null /etc/NetworkManager/dispatcher.d/20-chrony-onoffline避免: File exists5. chrony.conf 建议修改 你现在: server {{ ntp_service }} iburst driftfile /var/lib/chrony/drift makestep 1.0 3 rtcsync allow all local stratum 10 logdir /var/log/chrony客户端配置有几个问题。 问题1:allow all 客户端: allow all不需要。 作用: 允许别人同步你的机器。 客户端应该删除: allow all否则: 你的所有节点都可能成为NTP server。问题2:local stratum 10 客户端: 不要: local stratum 10这个是给孤岛模式使用。 作用: 即使没有NTP源: 假装自己是时间源。 风险: NTP断了: 节点继续提供错误时间。 客户端删除。推荐客户端: server ntp01 iburstdriftfile /var/lib/chrony/driftmakestep 1.0 3rtcsynclogdir /var/log/chrony6. NTP Server配置 如果是你的 ntp_service 节点: 才使用: allow 10.0.0.0/8local stratum 10例如: pool pool.ntp.org iburstdriftfile /var/lib/chrony/driftmakestep 1.0 3rtcsyncallow 10.0.0.0/8local stratum 10logdir /var/log/chrony7. Ansible推荐完整方案 Client节点 - name: configure chrony clientwhen: ansible_nodename != hostvars[ntp_service].ansible_nodenamecopy:dest: /etc/chrony.confcontent: |server {{ ntp_service }} iburstdriftfile /var/lib/chrony/driftmakestep 1.0 3rtcsynclogdir /var/log/chrony- name: disable systemd-timesyncdsystemd:name: systemd-timesyncdenabled: nostate: stoppedignore_errors: yes- name: disable NetworkManager chrony dispatcherfile:src: /dev/nulldest: /etc/NetworkManager/dispatcher.d/20-chrony-onofflinestate: linkwhen: nm_status.stdout == "active"- name: restart chronydsystemd:name: chronydenabled: yesstate: restarted8. 检查是否被NetworkManager影响 查看: ls -l /etc/NetworkManager/dispatcher.d/确认: 20-chrony-onoffline - /dev/null看日志: journalctl -u NetworkManager搜索: grep chrony看chrony: chronyc activity正常: 200 OK 1 sources online9. 最终生产推荐状态 Kubernetes节点: systemd-timesyncd stopped disabled|XNetworkManager|X dispatcher chronychronyd||NTP server检查: chronyc tracking必须: Leap status : Normalchronyc sources -v必须: ^*chronyc sourcestats -v必须:Offset 小Freq Skew 小Std Dev 小你的方向基本正确,主要需要改三点:不要在客户端使用 allow all不要在客户端使用 local stratum 10不要依赖 timedatectl set-ntp yes,直接管理 chronyd service这样可以避免 NetworkManager/timedatectl 对 chronyd 的干扰。
← 返回列表