蔺嘉宾 发表于 2023-11-15 13:23
  
每天学习一点,每天进步一点。
小鱼儿 发表于 2023-11-15 13:28
  
每天学习一点,每天进步一点。
【2022争霸赛*干货满满】Linux使用chrony配置NTP服务器
  

maoxingwei 46672人觉得有帮助

{{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

红色框内容需注意


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
复制代码



如输出上图内容,则表示本地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保存。


----------------------------------------------------------------------------------------------------
  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 (109.57 KB, 下载次数: 172)

191236325361872fc6.png

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

打赏
35人已打赏

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

本版版主

12
185
6

发帖

粉丝

关注

本版达人

LoveTec...

本周分享达人

新手24116...

本周提问达人