【2022争霸赛*干货满满】Linux使用chrony配置NTP服务器
  

maoxingwei 43432人觉得有帮助

{{ttag.title}}
本帖最后由 maoxingwei 于 2022-9-17 12:06 编辑

一,背景需求


  各位工程师在交付项目的时候经常会遇到时间不一致的问题,尤其是超融合、分布式存储,时间一致性显得尤为重要。客户如有NTP服务器,交付过程中填写客户的NTP 服务器IP即可,但是,很多客户并无自己的ntp服务器,且我们交付的一些设备无法联外网,不能和公网的ntp 服务器同步时间,这对于设备后续的安全运行带来了隐患。此时,我们可以在客户内网环境搭建一套ntp时间服务器,来解决这个问题。

二,技术介绍

通常情况下,Windows,Linux等常用系统都可以对外提供NTP服务,像Windows域环境,如果客户端加域,则客户端自动同步域控制器的时间,达到时间同步的效果。普通的Windows server版本,通过修改注册表方法,也可以变成NTP服务器,但是通过我多次测试发现,这种方法并不稳定,有时候并不能正常同步时间。Linux自带ntp程序,而当前流行的Linux版本实现NTP的主流程序主要有两种,ntpd和chrony。在我多次搜索资料比较下,最后我选择了chrony程序,chrony相对于ntp的优势:

1,chrony可以在访问时间参考是断断续续的环境中有效地执行。ntp需要定期对引用进行轮询才能正常工作。
2,chrony通常可以更快地同步时钟,并具有更好的时间精度。
3,chrony快速适应时钟速率的突然变化(例如,由于晶体振荡器的温度变化)。ntp可能需要很长时间才能重新安定下来。
4,chrony即使在网络拥塞时间较长的情况下也能表现良好。默认配置中的chrony从不占用时间来不打乱其他正在运行的程序。
5,chrony可以在更大的范围内调整时钟的速率,这使得它甚至可以在时钟中断或不稳定的机器上运行(例如在某些虚拟机中)。
6,chrony更小,占用的内存更少,只有在需要时才会唤醒CPU,这样更省电。

注意:此教程只适用于Centos7-8 / RedHat7-8

三,准备工作

准备虚拟机或者利旧终端、服务器等设备,Centos 7/8 或者RedHat 7/8 系统镜像,选择自己喜欢的镜像版本之一即可

1,虚拟机或者硬件设备安装Linux系统,安装过程这里不赘述,如果只做NTP使用,则选择迷你安装即可,如果安装桌面版,则无需配置YUM。

3,配置固定IP,如果客户同意NTP服务器可联网,则配置DNS,让NTP服务器同步阿里云等公网NTP

红色框内容需注意

26832632536702e407.png

3,配置YUM,上传安装镜像ISO到虚拟机内部,并挂载到  /yumdata 文件夹

  1. mkdir  /yumdata
复制代码


#此处 /path 为镜像所在目录,xxxx.iso 为上传的Linux镜像名称

  1. mount  /path/xxxxx.iso  /yumdata
  2. cd  /etc/yum.repos.d
  3. mkdir bak
复制代码


#备份系统自带yum配置文件
  1. mv *.repo bak
复制代码

#生成yum配置文件
复制下面的命令时,复制虚线内的所有内容执行
-----------------------------------------------------------
  1. cat >  /etc/yum.repos.d/local.repo  <<  "EOF"
  2. [local]
  3. name=local
  4. baseurl=file:///yumdata
  5. enabled=1
  6. gpgcheck=0
  7. EOF
复制代码

----------------------------------------------------------
#查看yum配置结果
  1. yum  repolist
复制代码


122963253b12def7d.png

如输出上图内容,则表示本地YUM配置成功

四,配置过程

1,先停用ntpd,如果有的话

  1. systemctl stop ntpd
  2. systemctl disable ntpd
复制代码


2,安装chrony程序

  1. yum install -y chrony
复制代码


3,启动chrony程序

  1. systemctl start chronyd
  2. systemctl enable chronyd
复制代码


4,放开NTP服务端口

  1. firewall-cmd --permanent --add-service=ntp
  2. firewall-cmd --reload
复制代码


5,配置chrony程序

vi ntp.sh  按a进入编辑模式,复制下面虚线内的所有内容,粘贴进去,按esc,压住shift,输入冒号,按wq保存。

9073563254248be4e7.png

----------------------------------------------------------------------------------------------------
  1. #/bin/bash

  2. # Write NTP configuration
  3. # Backup chrony.conf
  4. currentTimestamp=`date +%y-%m-%d-%H:%M:%S`
  5. chrony_conf="/etc/chrony.conf"
  6. chrony_conf_backup=$chrony_conf.chronyconfig.$currentTimestamp
  7. if [ -f "$chrony_conf" ]; then
  8. echo backup $chrony_conf to $chrony_conf_backup
  9. cp $chrony_conf $chrony_conf_backup
  10. fi

  11. # Write chrony.conf
  12. echo "
  13. # Welcome to the chrony configuration file. See chrony.conf(5) for more

  14. # Use public servers from the pool.ntp.org project.
  15. # Please consider joining the pool (http://www.pool.ntp.org/join.html).

  16. server ntp1.aliyun.com iburst
  17. server ntp2.aliyun.com iburst
  18. server ntp3.aliyun.com iburst
  19. server ntp4.aliyun.com iburst

  20. # Record the rate at which the system clock gains/losses time.
  21. driftfile /var/lib/chrony/drift

  22. # Allow the system clock to be stepped in the first three updates
  23. # if its offset is larger than 1 second.
  24. makestep 1.0 3

  25. # Enable kernel synchronization of the real-time clock (RTC).
  26. rtcsync

  27. # Enable hardware timestamping on all interfaces that support it.
  28. #hwtimestamp *

  29. # Increase the minimum number of selectable sources required to adjust
  30. # the system clock.
  31. #minsources 2

  32. # Allow NTP client access from local network.
  33. #allow 192.168.0.0/16
  34. allow

  35. # Serve time even if not synchronized to a time source.
  36. local stratum 10

  37. # Specify file containing keys for NTP authentication.
  38. keyfile /etc/chrony.keys

  39. # Get TAI-UTC offset and leap seconds from the system tz database.
  40. leapsectz right/UTC

  41. # Specify directory for log files.
  42. logdir /var/log/chrony

  43. # Select which information is logged.
  44. log measurements statistics tracking

  45. " > $chrony_conf
复制代码

---------------------------------------------------------------------------------------------------


6,设置时区并同步系统时钟

  1. timedatectl set-timezone Asia/Shanghai
  2. chronyc -a makestep
复制代码


7,重启服务并设置启用NTP时间同步

  1. systemctl restart chronyd
  2. timedatectl set-ntp yes
复制代码


此时,内网不能联网的设备则可配置搭建好的NTP服务器的IP地址作为时间源进行时间同步,从而保持时间一致性。

五,总结

1,如内网中有防火墙等安全设备,则需放通UDP 123端口。

2,上述第5步的脚本是配置时间服务器的关键内容,脚本已经默认同时支持同步本地时钟同步互联网阿里云时间服务器时钟作为时间源向内网客户端提供时间同步服务。

3,如果搭建的内网NTP服务器可以联网,则可保证使用内网时间服务器作为同步源的设备和互联网时间一致,

4,如果搭建的内网NTP服务器不能联外网,且时间与当前时间有差值的情况下,则手动校准时间,也可保证内网设备和外网时间一致

  1. timedatectl set-time '12:10:40 2022-09-20'
复制代码








191236325361872fc6.png

打赏鼓励作者,期待更多好文!

打赏
35人已打赏

七嘴八舌bar 发表于 2022-9-21 20:46
  
专家点评:感谢楼主分享!文章介绍了Linux配置NTP服务的案例,从背景、功能原理、准备工作、具体配置、到注意事项都介绍的非常全面,条理清晰,内容详尽,期待楼主带来更多有价值的案例
新手137762 发表于 2022-9-21 21:16
  
逐句地看完这个帖子以后,我的心久久不能平静,震撼啊!为什么会有如此好的帖子!我纵横社区多年,自以为再也不会有任何帖子能打动我,没想到今天看到了如此精妙绝伦的这样一篇帖子。
飞翔的苹果 发表于 2022-9-22 08:17
  
楼主分享的案例很实用,具有典型性,希望有更多这样的干货供我们学习参考,非常感谢!
网泰王晓庆 发表于 2022-9-22 08:23
  
每天学习一点,每天进步一点!!!
俞建水 发表于 2022-9-22 08:42
  
楼主分析的很详细,不错的实战经验,小白用户一看就懂,非常好的技术干货帖
新手626351 发表于 2022-9-22 09:05
  
看完这波操作可以轻松上手了,如遇到问题再向楼主请教~
江秋 发表于 2022-9-22 11:45
  
11111111111111111111111111111111111111111111111111111111
wshellym 发表于 2022-9-22 17:15
  
坚持每日学习打卡...
新手081074 发表于 2022-9-23 07:31
  

每天学习一点,每天进步一点!!!
发表新帖
热门标签
全部标签>
每日一问
技术盲盒
技术笔记
每周精选
干货满满
技术咨询
信服课堂视频
秒懂零信任
自助服务平台操作指引
新版本体验
标准化排查
产品连连看
安装部署配置
功能体验
GIF动图学习
玩转零信任
2023技术争霸赛专题
技术晨报
安全攻防
每日一记
深信服技术支持平台
天逸直播
华北区交付直播
社区帮助指南
畅聊IT
答题自测
专家问答
技术圆桌
在线直播
MVP
网络基础知识
升级
上网策略
测试报告
日志审计
问题分析处理
流量管理
运维工具
云计算知识
用户认证
原创分享
解决方案
sangfor周刊
VPN 对接
项目案例
SANGFOR资讯
专家分享
技术顾问
信服故事
SDP百科
功能咨询
终端接入
授权
设备维护
资源访问
地址转换
虚拟机
存储
迁移
加速技术
排障笔记本
产品预警公告
信服圈儿
S豆商城资讯
技术争霸赛
「智能机器人」
追光者计划
答题榜单公布
纪元平台
通用技术
卧龙计划
华北区拉练
以战代练
山东区技术晨报
文档捉虫活动
齐鲁TV

本版版主

12
185
6

发帖

粉丝

关注

本版达人

LoveTec...

本周分享达人

新手24116...

本周提问达人