跳到主要内容
返回博客列表Linux 一键配置时钟同步全攻略 大家好,这里是 Lucifer三思而后行,专注于提升数据库运维效率。 @TOC 为了确保 Oracle RAC 环境中的时间同步,通常会使用网络时间协议 NTP 或 chrony 来同步各节点的系统时间。这可以确保所有节点都具有一致的时间,从而保证数据库的正常运行和数据的一致性。 首先要先了解下这两种方式的区别以及优缺点,可参考红帽官方文档: - 使用 ntpd 配置 NTPhttps://doc
2738+ 篇实战文章 1500+ 步骤截图 10 大核心模块
大家好,这里是 Lucifer三思而后行 ,专注于提升数据库运维效率。
前言
本章目标 :掌握本章核心知识点
前置要求 :完成前序章节学习
预计时长 :60 分钟
为了确保 Oracle RAC 环境中的时间同步,通常会使用网络时间协议 (NTP) 或 chrony 来同步各节点的系统时间。这可以确保所有节点都具有一致的时间,从而保证数据库的正常运行和数据的一致性。
首先要先了解下这两种方式的区别以及优缺点,可参考红帽官方文档:
所以在配置时钟同步时,到底是选择 NTP 还是 Chrony 呢?
ntpd 和 chronyd 之间的区别
在 Red Hat Enterprise Linux 7 之前的版本中,默认都是使用 NTP 来配置时钟同步,但在从 Red Hat Enterprise Linux 7 开始,NTP 的用户空间守护进程变成了 chronyd。所以要使用 ntpd 守护进程,则必须禁用chronyd,相反则需要禁用 ntpd。
在 Red Hat Enterprise Linux 8 之后的版本,则完全放弃了 NTP,必须使用 Chrony 来配置时钟同步。
官方选择替换 ntpd,必然是认为 chronyd 可以优于 ntpd,提供了以下原因:
chronyd 可以正常工作,其中对时间参考的访问是间歇性的,而 ntpd 需要定期轮询时间引用才能正常工作。
即使网络在较长时间内拥塞,chronyd 也能表现良好。
chronyd 通常可以更快准确地同步时钟。
chronyd 能够快速适应时钟速率的突然变化。例如,由于碳粉电器温度的变化,ntpd 可能需要很长时间才能再次下降。
在默认配置中,chronyd 从不调整时钟在系统启动时同步的时间,以便不设置其他正在运行的程序。ntpd 也可以配置为从不调整时间,但是它必须使用不同的调整时钟的方法,这种方法存在一些缺点,包括对时钟准确性的负面影响。
chronyd 可以调整较大范围内 Linux 系统上的时钟速率,即使在时钟中断或不稳定的机器上运行。例如,在某些虚拟机上。
chronyd 比较小,使用较少的内存,仅在需要时才会唤醒 CPU,这更有利于节能。
chronyd 可以执行 ntpd 不能执行的操作:
chronyd 支持隔离的网络,其中唯一的调整时间方法是手动输入。例如,管理员看一下时钟。
chronyd 可以检查在不同更新中更正的错误,以估算计算机获得或丢失时间的速率,并随后使用此估算来调整计算机时钟。
chronyd 支持降低实时时钟的增益或丢失率,例如维护关闭计算机时间的时钟。当系统引导时,它可以使用实时时钟调整时间值来设置系统时间。这些实时时钟设施目前仅在 Linux 系统上可用。
chronyd 支持 Linux 上的硬件时间戳,允许在本地网络上进行非常准确的同步。
ntpd 可以执行 chronyd 不能执行的操作:
ntpd 支持 NTP 版本 4(RFC 5905)的所有工作模式,包括广播、多播和多播客户端和服务器。请注意,广播和多播模式本质上也不如普通服务器和客户端模式准确且安全性较低,因此通常应避免使用。
ntpd 支持自动密钥协议(RFC 5906),用于通过公钥加密对服务器进行身份验证。请注意,该协议已被证明不安全,并可能替换为网络时间安全(NTS)规范的实施。
ntpd 包含许多参考时钟的驱动程序,而 chronyd 依赖于其他程序(如 gpsd )使用共享内存(SHM)或 Unix 域套接字(SOCK)从参考时钟访问数据。
经过以上对比得出结论,除非是系统不支持 chrony 的工具管理或监控的系统外,均建议使用 chrony 来配置硬件时钟。
配置 NTP
当没有 Chrony 服务时只能使用 NTP 来配置时钟同步,本文不针对配置讲解过多,主要分享如何快速配置时钟同步。
以下配置命令可一键执行配置:
1 # 最小化安装系统需要手动安装 ntp 软件
2 yum install -y ntp
3 # 启动和开机启动 ntpd 服务
4 service ntpd start
5 chkconfig ntpd on
6 # 时间服务器 IP,请根据实际的IP进行替换
7 timeserver_ip=192.168.6.101
8 # 删除默认的时间服务器配置
9 sed -i '/^server/d' /etc/ntp.conf
10 # 写入新的时间服务器配置
11 cat<<-EOF>/etc/ntp.conf
12 server $timeserver_ip iburst
13 tos maxdist 30
14 tinker panic 0
15 EOF
16 # 创建 ntpd 进程ID文件
17 touch /var/run/ntpd.pid
18 # 编辑 sysconfig 文件来配置 ntpd 服务
19 cat<<-\EOF>/etc/sysconfig/ntpd
20 OPTIONS="-g -x -p /var/run/ntpd.pid"
21 SYNC_HWCLOCK=yes
22 EOF
23 # 重启 ntpd 服务,并检查其状态及时间同步情况
24 service ntpd restart
25 # 检查时间同步情况
26 ntpstat
27 ntpq -p -n
如果是 Red Hat Enterprise Linux 7 上配置 ntp,需要先手动禁用 chrony 服务,否则会造成冲突导致无法正常同步时钟:
1 # 禁用 chronyd 服务
2 systemctl stop chronyd.service
3 systemctl disable chronyd.service
4 mv /etc/chrony.conf /etc/chrony.conf.bak
拓展一下,如果需要使用 ntpdate 配合 crontab 定时任务来配置时钟同步的方式,则需要禁用 ntp 服务:
1 # 最小化安装系统需要手动安装 ntpdate 软件
2 yum install -y ntpdate
3 # 禁用 ntpd 服务
4 ## rhel6
5 service ntpd stop
6 chkconfig ntpd off
7 ## rhel7
8 systemctl stop ntpd
9 systemctl disable ntpd
10 # 时间服务器 IP,请根据实际的IP进行替换
11 timeserver_ip=192.168.6.101
12 # 配置 crontab 计划任务,每天中午 12 点执行一次,定时计划根据实际需求自行修改即可
13 cat<<-EOF>>/var/spool/cron/root
14 00 12 * * * /usr/sbin/ntpdate -u $timeserver_ip && /usr/sbin/hwclock -w
15 EOF
16 ## 查看计划任务
17 crontab -l
18 ## 手动执行验证
19 /usr/sbin/ntpdate -u $timeserver_ip && /usr/sbin/hwclock -w
配置 Chrony
Chrony 的配置方式更简单:
1 # 最小化安装系统需要手动安装 chrony 软件
2 yum install -y chrony
3 # 禁用 ntpd 服务,只针对 rhel7 系统
4 systemctl start ntpd.service
5 systemctl disable ntpd.service
6 # 启动和开机启动 chronyd 服务
7 systemctl start chronyd.service
8 systemctl enable chronyd.service
9 # 时间服务器 IP,请根据实际的IP进行替换
10 timeserver_ip=192.168.6.101
11 # 删除默认的时间服务器配置
12 sed -i '/^server/d' /etc/chrony.conf
13 # 写入新的时间服务器配置
14 cat<<-EOF>/etc/chrony.conf
15 server $timeserver_ip iburst
16 EOF
17 # 重启 chrony 服务,并检查其状态及时间同步情况
18 systemctl restart chronyd.service
19 # 检查时间同步情况
20 chronyc tracking
21 chronyc sources -v
拓展一下,如果需要使用 chronyd 配合 crontab 定时任务来配置时钟同步的方式:
1 # 时间服务器 IP,请根据实际的IP进行替换
2 timeserver_ip=192.168.6.101
3 # 配置 crontab 计划任务,每天中午 12 点执行一次,定时计划根据实际需求自行修改即可
4 cat<<-EOF>>/var/spool/cron/root
5 00 12 * * * /usr/sbin/chronyd -q 'server $timeserver_ip iburst' && /usr/sbin/hwclock -w
6 EOF
7 ## 查看计划任务
8 crontab -l
9 ## 手动执行验证
10 /usr/sbin/chronyd -q 'server $timeserver_ip iburst' && /usr/sbin/hwclock -w
如有错误,欢迎指正。
往期精彩文章
感谢您的阅读,这里是 Lucifer三思而后行 ,欢迎点赞+关注 ,我会持续分享数据库知识、运维技巧。
Linux 一键配置时钟同步全攻略 - DBA 学习之路