学习

16. 时间同步服务

2021-02-14  本文已影响0人  随便写写咯

1 时间同步服务

1.1 计时方式

Linux服务器的计时方式分为硬件时钟, 和软件时钟
服务器启动后, 会用硬件时钟去校验软件时钟
之后, 软件时钟的计算就靠cpu, 因此, 一段时间后, 就会出现硬件时间和软件时间不一致的情况
[03:31:48 root@centos7 ~]#clock
Sun 14 Feb 2021 03:31:54 AM CST  -0.540337 seconds
[03:31:55 root@centos7 ~]#date
Sun Feb 14 03:32:30 CST 2021

1.2 一次性同步时间

Ubuntu和CentOS7版本前, 可以使用ntpdate命令执行一次性同步
CentOS8后默认需要用chrony进行时间同步
chrony比ntp精度更高, 而且同步更快
二者底层都是基于ntp协议实现
修改本机时间为1年前
[03:38:23 root@centos7 ~]#date -s '-1 year'
Fri Feb 14 03:38:25 CST 2020
使用aliyun 的ntp服务器进行一次性校验
[03:38:25 root@centos7 ~]#ntpdate ntp.aliyun.com
14 Feb 03:38:38 ntpdate[11717]: step time server 203.107.6.88 offset 31622400.430516 sec
时间被改为正确时间
[03:38:38 root@centos7 ~]#date
Sun Feb 14 03:38:39 CST 2021

1.3 NTP协议

1.3.1 工作原理

NTP协议不同于一般的协议, 其要求客户端和服务器端都是实时运行
因为客户端需要保证其时间和NTP服务器时刻保持一致
客户端监听udp/123端口
服务器端监听udp/323端口, 提供同步服务

1.3.2 实现方案

在企业内搭建NTP服务器, 客户端时刻与服务器保持同步
企业内部的NTP服务器, 再与互联网提供NTP服务的厂商进行实时同步
此外, 企业中一般至少要有两台NTP服务器, 提供高可用

2 Chrony

2.1 利用chrony实现局域网时间同步

2.1.1 实验环境

CentOS-7: NTP服务器, 安装chrony, 10.0.0.237
CentOS-8: 客户端, 安装chrony, 10.0.0.81
Ubuntu: 客户端, 安装chrony, 10.0.0.19

2.1.2 chrony安装

三台主机全部安装chrony
[04:08:23 root@CentOS-8 ~]#yum -y install chrony
[04:09:01 root@ntp-server ~]#yum -y install chrony
root@Ubuntu:~# apt -y install chrony

2.1.3 chrony的默认NTP服务器

在chrony的配置文件中, 默认就定义了NTP服务器信息, 因此,即使局域网没有NTP服务器
只要主机安装了chrony软件, 并且开启服务, 那么就可以和其配置文件指定的NTP服务器进行同步
vim /etc/chrony.conf
# Use public servers from the pool.ntp.org project.                                                                                                                                 
# Please consider joining the pool (http://www.pool.ntp.org/join.html).
pool 2.centos.pool.ntp.org iburst
...

2.1.4 修改本地NTP服务器的配置文件

chrony自带的NTP服务器, 大多都在境外, 因此, 要想在局域网内搭建NTP服务器
和互联网的NTP服务器进行同步, 就需要修改自带的NTP服务器信息
以阿里云为例

[04:19:20 root@ntp-server ~]#vim /etc/chrony.conf 

# Use public servers from the pool.ntp.org project.
# Please consider joining the pool (http://www.pool.ntp.org/join.html).
server ntp.aliyun.com iburst
server ntp1.aliyun.com iburst 

修改了默认的NTP服务器后, 可以实现本机和互联网的服务器进行时间同步, 之后还要配置允许本地局域网的主机和自己进行同步

[04:19:20 root@ntp-server ~]#vim /etc/chrony.conf 
...
# Allow NTP client access from local network.
allow 10.0.0.0/24  
# Serve time even if not synchronized to a time source.
local stratum 10 # 建议开启, 此配置表示, 即使本机(NTP服务器)无法与互联网的NTP服务器进行同步, 也会继续给局域网内部的主机提供时间同步服务
修改完启动服务即可

[04:29:06 root@ntp-server ~]#ss -nlu
State      Recv-Q Send-Q                                             Local Address:Port                                                            Peer Address:Port              
UNCONN     0      0                                                      127.0.0.1:323                                                                        *:*                  
UNCONN     0      0                                                              *:123                                                                        *:*                  
UNCONN     0      0                                                          [::1]:323                                                                     [::]:*   

每次重启chronyd服务, 都可以手动触发时间的同步

2.1.5 客户端进行时间同步

分别修改客户端的chrony配置文件, 指向企业内部服务器
CentOS8
[04:37:00 root@CentOS-8 ~]#vim /etc/chrony.conf 

# Use public servers from the pool.ntp.org project.
# Please consider joining the pool (http://www.pool.ntp.org/join.html).
server 10.0.0.237 iburst  
[04:42:08 root@CentOS-8 ~]#systemctl restart chronyd
Ubuntu
root@Ubuntu:~# vim /etc/chrony/chrony.conf  # Ubuntu上的配置文件名路径不同
server 10.0.0.237 iburst  
root@Ubuntu:~# systemctl restart chronyd

2.1.6 ntp客户端与chrony进行同步

  1. 准备一台CentOS7主机, 安装ntp服务
[04:53:08 root@centos7 ~]#yum -y install ntp
  1. 修改配置文件
[04:53:08 root@centos7 ~]#vim /etc/ntp.conf 
server 10.0.0.237 iburst  
[04:55:12 root@centos7 ~]#systemctl enable --now ntpd
Created symlink from /etc/systemd/system/multi-user.target.wants/ntpd.service to /usr/lib/systemd/system/ntpd.service.

2.2 Chrony客户端工具chronyc

  1. 查看本机指向的时间同步服务器, 并且检查连接情况
[04:57:53 root@ntp-server ~]#chronyc sources -v
  1. 对于使用ntp客户端的服务器, 可以使用ntpq -p进行检查
[04:55:33 root@centos7 ~]#ntpq -p
     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
*10.0.0.237      203.107.6.88     3 u    3   64    7    0.613    8.037   6.739
*表示同步成功
上一篇下一篇

猜你喜欢

热点阅读