第一章:Chrony时间同步服务

目录

时间不同步带来的问题

时间同步的方式

Chrony安装及配置说明

时间同步案例


前言:在构建web集群架构之前,首先要解决的是各节点中服务器时间同步的问题。首先需要介绍的就是时间同步服务。

时间不同步带来的问题

1、在LNMP架构中,很多单一的服务往往是部署在多台服务器上构成集群的,如果各个服务器之间的时间不同步就会导致给客户端的响应出现问题;

2、在一些https应用的场景中,客户端时间准确而服务端的时间如果提前或者滞后,访问时会提示存在风险,而拒绝响应。

3、在一些限时秒杀活动中(如电商双十一、618等),如果web集群中的服务器时间不一致,在收到用户的请求时,由于时间提前或滞后都将会给企业带来重大的经济损失。

由于时间不同步带来的问题还有很多,这里就不一 一举例说明了。

时间同步的方式

在了解了时间不同步带来的问题后,那么就需要解决这个问题。

1、NTP时间服务

NTP全称是Network Time Protocol(NTP),是用来使计算机时间同步化的一种协议。在一些Linux操作系统里面,老版本使用NTP服务,例如老版本RHEL和CentOS是用NTP的。CentOS7.2、RHEL 7.0就逐步开始使用chrony。NTP是通过时间差来实现的时间校对,也就是说如果两台服务器之间的时间差太大,就可能需要消耗较多的时间来进行时间同步。

2、Chrony时间服务

chrony是网络时间协议(NTP)的另一种实现,能更精准、更快地同步时钟。chrony仅需要数秒或数毫秒即可完成时间同步,占用资源少,只有被唤起时才占用少量cpu,并且能够兼容ntp同步方式。chrony 包含两个程序,服务端程序chronyd和客户端程序chronyc 。

Chrony安装及配置说明

1、安装chrony服务

yum install chrony -y 

2、主配置文件说明

cat /etc/chrony.conf

使用同步的远程时钟源,理论上可以同步无限个
server0.centos.pool.ntp.orgiburst
server1.centos.pool.ntp.orgiburst
server2.centos.pool.ntp.orgiburst
server3.centos.pool.ntp.orgiburst

#根据实际时间计算出服务器增减时间的比率,然后记录到一个文件中,在系统重启后为系统做出最佳时间补偿#调整
driftfile/var/lib/chrony/drift 

#如果系统时钟的偏移量大于1秒,则允许系统时钟在前三次更新中步进
makestep 1.0 3 

#启用实时时钟(RTC)的内核同步
rtcsync 

#通过使用hwtimestamp指令启用硬件时间戳
#hwtimestamp *

#增加调整所需的可选择源的最小数量
#minsources 2

#允许指定网络的主机同步时间,不指定就是允许所有,默认不开启。
allow 192.168.0.0/16

#默认情况下本地服务器无法同步互联网时间时,可能会出现不精确,所以会拒绝提供授时服务;
#开启此选项,则表示允许接受不精确时间,继续为客户端提供授时服务;
local stratum 10

#指定包含NTP身份验证密钥的文件
#keyfile /etc/chrony.keys


#指定日志文件
logdir /var/log/chrony

#选择日志文件要记录的信息
log measurements statistics tracking

 注:正常作为Chrony服务端,通过修改/etc/chrony.conf 设定外部时间服务器、允许内网同步此服务器、断网继续同步这三项即可

时间同步案例

环境准备:两台CentOS主机,网络可达。

chrony服务端:192.168.1.10

chrony客户端:192.168.1.20

chrony服务端

1、安装chrony服务

yum install chrony -y

2、 修改配置

vim /etc/chrony.conf

第一章:Chrony时间同步服务_第1张图片

3、重启chrony服务

systemctl restart chronyd

4、加入开机自启动

systemctl enable chronyd

chrony客户端 

1、安装chrony服务

yum install chrony -y

2、 修改配置,指向服务端

vim /etc/chrony.conf

第一章:Chrony时间同步服务_第2张图片

3、重启 chrony服务

systemctl restart chronyd

4、加入开机自启动

systemctl enable chronyd

5、验证时间同步是否成功

chronyc sources

第一章:Chrony时间同步服务_第3张图片

这样,客户端就会通过守护进程的方式实时与服务端进行时间的同步。 除此之外,chrony也兼容ntp的方式进行时间同步,但需要用户手动去执行。比较好的方案就是可以结合定时任务的方式去使用。但是随着系统的升级还是推荐使用chrony进行时间同步。

#安装ntp服务
yum install ntpdate -y

#单次手动同步时间
ntpdate 192.168.1.10

#编写定时任务,每5分钟同步一次
crontab -e
*/5 * * * * ntpdate 192.168.1.10 >/dev/null

最后,想必会有部分读者疑惑既然chrony使用便捷,为什么不直接把所有节点服务器都直接指向外网(server ntp.aliyun.com iburst),而是使用自建的时间服务器?

第一章:Chrony时间同步服务_第4张图片

一方面是因为在很多大型的web架构中,各个节点服务器集群中的服务器数量十分庞大,如果都将其指向外网的时间服务器,在同步的过程中会浪费很多带宽;另一方面是因为在一些内网使用的场景中,很多服务器是无法直接访问外网的。这时就需要搭建一个时间服务器,一边从外网将时间同步过来,另一边将同步过来的时间再同步到内网中的其他节点。


原创文章,转载请注明出处

你可能感兴趣的:(②企业级WEB集群架构项目实践,时间同步,chrony,NTP)