扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
环境准备:
目前成都创新互联已为千余家的企业提供了网站建设、域名、虚拟空间、成都网站托管、企业网站设计、阜宁网站维护等服务,公司将坚持客户导向、应用为本的策略,正道将秉承"和谐、参与、激情"的文化,与客户和合作伙伴齐心协力一起成长,共同发展。
要做到服务器集群的时间同步,集群中各台机器的时区必须相同的,我们在国内就使用中国时区,如果你的机器的时区不是"Asia/Shanghai",需要修改时区
CentOS 中时区是以文件形式存在,当前正在使用的时区文件位于
/etc/localtime ,其他时区文件则位于 /usr/share/zoneinfo 下,中国时区的文件全路径是 /usr/share/zoneinfo/Asia/Shanghai
要更改时区,直接使用如下命令就OK
需要使用 tzselect 命令去生成时区文件,生成好的时区文件就在/usr/share/zoneinfo 目录下,具体步骤去下:
使用 date -s 命令来修改系统时间
让集群所有的服务器的时间同步,就用远程连接工具连接所有服务器,然后在所有的服务器中同时执行 date -s 命令设置时间,然后在所有的服务器中执行 hwclock -w 命令即可
美国标准技术院时间服务器:time.nist.gov(192.43.244.18)
上海交通大学网络中心NTP服务器地址:ntp.sjtu.edu.cn(202.120.2.101)
中国国家授时中心服务器地址:cn.pool.ntp.org(210.72.145.44)
若以上提供的网络时间服务器不可用,请自行上网寻找可用的网络时间服务器
1 使用命令: crontab -e
2 然后往里加入一行内容
上面的配置表示,每隔十分钟从 202.120.2.101 该时间服务器同步一次时间。
3 保存退出
以上两步操作可以让node01这个服务器每隔10分钟去指定的服务器同步时间,如果需要让集群中的所有服务器(hadoop01-hadoop04)时间同步,那么每台服务器都要做以上两步操作。
node01的IP为192.168.21.101,让它作为时间服务器,192.168.21.0局域网内的所有服务器都向它同步时间,而node01这台时间服务器本身,向外网时间服务器同步时间(比如中国国家授时中心服务器)
我用node01
我去掉了所有的默认注释,对其中的修改写了自己的注释,没有写注释的是默认配置
因为ntpd服务开启之后,就不能手动同步时间了,那么为什么要先手动同步时间呢?
当server(中国国家授时中心服务器)与client(node01)之间的时间误差过大时(可能是1000秒),node01去同步时间可能对系统和应用带来不可预知的问题,node01将停止时间同步!所以如果发现node01启动之后时间并不进行同步时,应该考虑到可能是时间差过大引起的,此时需要先手动进行时间同步!
看到红色框中的内容,表示连接和监听已正确
这里的前4行就是我们配置的4个中国国家授时中心的服务器的信息
最后一行就是本地时间服务的信息
下面对每个列的意义进行说明:
同样,服务启动后需要等待5-10分钟才能看到这个正常的信息
到这里,我们局域网内的时间服务器node01就已经配置完毕了
文件内容如下:
同样,没有写注释的都是默认的配置
原因同(5)
到这里,利用局域网内一台时间服务器来同步整个集群时间的全部配置就已经完成
说明:若以上提供的网络时间服务器不可用,请自行上网寻找可用的网络时间服务器,另外需要关闭各服务器的防火墙,才能进行时间同步
参考文章:
内网环境NTP服务及时间同步(CentOS6.x)配置和部署
配置NTP服务ntpd/ntp.conf(搭建Hadoop集群可参考)
Ubuntu系统默认的时钟同步服务器是ntp.ubuntu.com,Debian则是0.debian.pool.ntp.org等, 各Linux发行版都有自己的NTP官方服务器。身在中国,使用这些都会有高延迟,但对时钟同步这件事来说影响不大。
在某些环境下,比如公司内网、云上子网等,是与互联网隔绝的。这时要想做时钟同步,就只能自己配置了。
本文介绍如何自己配置时钟同步,不介绍如何自建NTP服务器。
一般timesync是预装的。如果没有,可以使用以下命令手动安装。
sudo apt install systemd-timesyncd 它和ntp是冲突的,二者只能安装一个。
修改/etc/systemd/timesyncd.conf,把NTP设为华为内绿区可达的NTP服务器。
修改完成后,需要restart后这个配置才生效。
如果以上systemd-timesyncd.service因为什么原因而不存在,则可通过以下命令修复:
一般查看日期与时间是使用date。使用timedatectl可以查看到更多时钟同步相关信息。
以下给出一些阿里云的NTP列表,可以通过ping择优使用。
以上就是 良许教程网 为各位朋友分享的配置Linux的时钟同步。
最后,最近很多小伙伴找我要 Linux学习路线图 ,于是我根据自己的经验,利用业余时间熬夜肝了一个月,整理了一份电子书。无论你是面试还是自我提升,相信都会对你有帮助!目录如下:
免费送给大家,只求大家金指给我点个赞!
电子书 | Linux开发学习路线图
也希望有小伙伴能加入我,把这份电子书做得更完美!
推荐阅读:
1. date命令
#date 查看系统时间
#date -set “10/30/20 11:30” 设置月/日/年/ 时:分:秒
2.clock命令
#clock -show 查看硬件时间
3.硬件时间和系统时间同步
重新启动系统,硬件时间会读取系统时间,实现同步。
但是,不重启的情况下,需要用clock命令实现同步。
#clock -systohc
在Linux系统中存在两个时钟时间,分别是
硬件时钟是指的在主板上的时钟设备,也就是通常可以在BIOS画面设置的时钟,即使关机状态也可以计算时间。
而系统时钟则是指Kernel中的时钟,其值是由1970年1月1日00:00:00 UTC时间至当前时间所经历的秒数总和。当Linux启动的时候,系统时钟会读取硬件时钟的设定,之后系统时钟独立运作。长时间运行两者可能将会产生误差。另外所有的Linux相关指令都是读取系统时钟指定的,如date。
我们这里讨论的是系统时间。
NTP,网络时间协议,使用 123/udp 端口进行网络时钟同步;NTP 是仍在使用中的最古老的网络传输协议之一(1985 年前开始)。
以前Linux时间同步基本是使用 ntpdate 和 ntpd 这两个工具实现的,但是这两个工具已经很古老了。
【注】ntpdate和ntpd是互斥的,两者不能同时使用。ntpd是步进式平滑的逐渐调整时间,而ntpdate是断点式更新时间。
RHEL/CentOS 7.x 已经将 chrony 作为默认时间同步工具了。
其他Linux (如 ubuntu) 使用 systemd-timesyncd 服务。
chrony 是 RedHat 开发的,它是网络时间协议(NTP)的另一种实现;
RHEL/CentOS 7.x 的默认时间同步工具;
chrony 可以同时做为 ntp 服务的客户端和服务端;安装完后有两个程序 chronyd、chronyc:
chronyd 是一个 daemon 守护进程,chronyc 是用来监控 chronyd 性能和配置参数的命令行工具。
系统版本:CentOS 7.5
chrony_server(relay):10.0.0.4
chrony_client:10.0.0.5
Edit file /etc/chrony.conf
默认已经启动,不需要调整
example:
配置 chrony
edit file: /etc/chrony.conf
再次用chronyc 命令检查,比较它与chronyd server的差异
systemd-timesyncd 是一个用于跨网络同步系统时钟的守护服务。它实现了一个 SNTP 客户端,但更轻量级,更集成systemd。
systemd-timesyncd 启动时会读取 /etc/systemd/timesyncd.conf 配置文件,内容如下:
你可以输入你希望使用的其它时间服务器,比如你自己的本地 NTP 服务器,在 NTP= 行上输入一个以空格分隔的服务器列表。
如果服务器可以直接连接internet,不用修改默认配置;如果在内网,需要单独指定。
在最新的 Ubuntu 版本中,timedatectl 替代了老旧的 ntpdate。默认情况下,timedatectl 在系统启动的时候会立刻同步时间,并在稍后网络连接激活后通过 socket 再次检查一次。
timesyncd 替代了 ntpd 的客户端的部分。默认情况下 timesyncd 会定期检测并同步时间。它还会在本地存储更新的时间,以便在系统重启时做时间单步调整。
通过 timedatectl 和 timesyncd 设置的当前时间状态和时间配置,可以使用 timedatectl status 命令来进行确认。
由于 timedatectl 的存在,各发行版已经弃用了 ntpdate,默认不再进行安装。
timedatectl
timedatectl status ,查看时间同步状态;
timedatectl set-ntp true ,开启网络时间同步;
timedatectl set-timezone ZONE ,设置时区。
NTP synchronized: yes 表示时间是同步状态。
查看服务状态以及从哪个ntp server同步时间。
NTP:软件层面实现,成本低。同步精度10ms左右。
PTP:需要网络接口具备在物理层提供时间戳的功能,同步精度优于100ns,局域网的节点需要使用支持PTP功能的交换机。局域网网络接点不支持PTP的话,只能同不到us,而且受网络背景流量影响。
Linux
下
时间同步命令:
ntpdate
linux系统下默认安装了ntp服务,手动进行ntp同步如下
$ntpdate
ntp1.nl.net
当然,也可以指定其它的ntp服务器
公网上的NTP服务器列表:
根据这个列表,中国有个服务器:cn.pool.ntp.org
用
ntpdate
命令来同步时间:
ntpdate
cn.pool.ntp.org
可以将这个命令加到
cron
table
里面,每天执行。
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流