Brc's blog
首页
前端
后端
运维
  • 工作笔记
  • 分类
  • 标签
  • 归档
关于

Brc

努力中
首页
前端
后端
运维
  • 工作笔记
  • 分类
  • 标签
  • 归档
关于
  • Linux基础

    • Bash shell
    • 文件属性
    • 编辑工具vim
    • 用户管理
    • 用户组管理
    • 普通用户提权
    • 基础权限
    • 特殊权限
    • 文件特殊属性
    • IO重定向
    • 文件查找
    • 文件压缩
    • 软件包管理

    • 磁盘管理

    • 进程管理
    • 计划任务
    • systemd
    • Supervisor
    • 网络管理

    • Chrony时间同步
      • 时间同步基本概念
        • 什么是时间同步
        • 为什么需要时间同步
        • 时间同步是如何完成
        • NTP
        • Chrony
      • Chrony时间服务
        • Chrony介绍
        • Chrony优势
        • Chrony时间同步
        • Chrony安装
        • Chrony服务端
        • Chrony客户端
    • NFS网络文件系统
  • Linux进阶

  • 其他

  • 运维
  • Linux基础
Brc
2021-08-04
目录

Chrony时间同步

# 时间同步基本概念

# 什么是时间同步

时间同步就是通过对本地时钟的某些操作,达到为分布式系统提供一个统一时间的过程。在集中式系统中,由于所有进程都可以从系统唯一的全局时钟获取时间,因此系统内任何两个事件都有着明确的先后关系。而在分布式系统中,由于物理上的分散性,系统无法为彼此间相互独立的模块提供一个统一的全局时钟,而由各个进程各自维护它们的本地时钟。由于这些本地时钟的计时速率、运行环境不一致性,因此所有本地时钟在某一时刻都被校准,一段时间后,这些本地时钟也会出现不一致。为了这些本地时钟再次达到相同的时间值,所以需要进行时间同步的操作。

# 为什么需要时间同步

在运维工作的场景当中,存在着众多主机协同完成不同的任务;比如LNMP架构,也是可以分别部署在三台不同的主机上;那么这三台主机在工作时,由于分别位于不同的主机之上,它们需要根据文件或者数据流所生成的时间,来决定我们响应给客户端的结果该如何进行展示;此时就需要同一网络中的主机时间一致;

但这个时间一致并不是说一定得是正确的,如果现在当前时间是下午2点,但是这三台主机的时间精确一致是昨天凌晨5点,这也没有什么问题;

但对于有些场景中时间不正确也不行,比如https应用;客户端与服务端通讯时,如果客户端时间是准确的,而服务端时间来自昨天,或者来自未来的响应,则会提示存在风险,而不予接受;

# 时间同步是如何完成

  • 假设服务器启动起来后,发现时间慢了24小时,那么他如何将自己的时间调整正确呢?
    • 如果是手表该如何校对时间呢?(拨动表针,调整时间的正常逻辑)
    • 如果是date命令是如何校对时间呢?(直接跳跃时间,跳跃的过程中造成部分文件出现空白段)

# NTP

  • 逻辑:让时间校对像手表一样波动的快一点,而不是像date命令直接跳跃过去:其他服务器一分钟60s,而ntp一分钟30s,来实现时间的校对;
  • 问题:为了赶上慢的24小时,可能需要花费非常长的时间来进行校对;

# Chrony

  • 逻辑:Chrony是NTP的替代品,能更精确的时间和更快的速度同步时钟,传统ntp需要几小时,而chrony仅需要数秒种或数毫秒即可完成时间同步;(调整时间的速度就像波动表针的速度一样快)

# Chrony时间服务

# Chrony介绍

chrony是一个ntp协议的实现程序,既可以当做服务端,也可以充当客户端;它专为间歇性互联网连接的系统而设计,当然也能良好应用于持久互联网连接的环境;

  • chrony有三个时间参考:硬件时钟、实时时钟以及手动同步;
  • chrony是NTP的替代品,能更精确的时间和更快的速度同步时钟,chrony兼容ntpdate;
  • chrony占用系统资源少,只有被唤起时才占用少部分CPU;
  • chrony允许本地网络其他主机向本地进行时间同步;

# Chrony优势

  • 更快的同步,最大程度减少了时间和频率误差,对于并非全天运行的虚拟计算机非常有用;
  • 能够更好地响应时钟频率的快速变化,对于不稳定的虚拟机或导致时钟频率发生变化的技术有用;
  • 在初始同步后,它不会停止时钟,以防对需要系统时间保持单调的应用程序造成影响;
  • 在应对临时非对称延迟时(例如,在大规模下载造成链接饱和时)提供了更好的稳定性;
  • 无需对服务器进行定期轮询,因此具备间歇性网络连接的系统仍然可以快速同步时钟;

# Chrony时间同步

image-20210804152453977

  • 问题:所有服务器直接同步公网上的时间服务器不就可以了吗?为何需要自己搭建一台时间服务器呢?
    • 如果每台服务器都去同步公网时间服务器,且服务器较多
      • 造成延迟
      • 浪费带宽
    • 解决方法:搭建内网时间服务器,来同步公网时间,然后所有服务器来与这台服务器进行时间同步
      • 减小误差,提升同步速度
      • 减少网络带宽损耗
      • 统一规范管理时间

# Chrony安装

[root@web ~]# yum install chrony -y
1
  • 主配置文件:/etc/chrony.conf
  • 服务端程序:/usr/sbin/chronyd
  • 客户端程序:/usr/bin/chronyc

# Chrony服务端

默认配置

[root@web ~]# cat /etc/chrony.conf

#使用同步的远程时钟源,理论上可以同步无限个
server 0.centos.pool.ntp.org iburst
server 1.centos.pool.ntp.org iburst
server 2.centos.pool.ntp.org iburst
server 3.centos.pool.ntp.org iburst

#根据实际时间计算出服务器增减时间的比率,然后记录到一个文件中,在系统重启后为系统做出最佳时间补偿调整
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
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
  1. Chrony服务端配置,修改/etc/chrony.conf文件三处,设定外部时间服务器、允许内网同步此服务端、设置断网继续同步;

    [root@web ~]# vim /etc/chrony.conf
    # Please consider joining the pool (http://www.pool.ntp.org/join.html).
    server ntp.aliyun.com iburst
    
    # AlloW NTP client access from Local network.
    allow 172.16.1.0/24
    
    # Serve time even if not synchronized to a time source.
    local stratum 10
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
  2. 重启Chrony服务;

    [root@web ~]# systemctl restart chronyd
    
    1

# Chrony客户端

  1. 客户端使用ntpdate或chronyc命令的方式进行手动同步;

    # ntpdate
    [root@web ~]# yum install ntpdate -y
    [root@web ~]# ntpdate 172.16.1.5
    
    # chronyc
    [root@web ~]# chronyc -a makestep
    200 OK
    
    1
    2
    3
    4
    5
    6
    7
  2. 客户端使用chrony守护进程方式进行时间自动化同步;

    [root@web ~]# yum install chrony -y
    [root@web ~]# vim /etc/chrony.conf
    #指向至服务端
    server 172.16.1.5 iburst
    
    [root@web ~]# systemctl restart chronyd
    
    1
    2
    3
    4
    5
    6
  3. 查看时间同步是否正常;

    [root@web ~]# chronyc sources
    210 Number of sources = 1
    MS Name/IP address	Stratum Poll Reach LastRx Last sample
    ================================================================================
    ^* 172.16.1.5			 3	  6		77	24 	  -926us[-2077us] +/- 19ms
    [root@web ~]# chronyc sources -v
    
    1
    2
    3
    4
    5
    6
#Linux
Last Updated: 2021/11/25, 10:57:04
互联网通信协议
NFS网络文件系统

← 互联网通信协议 NFS网络文件系统→

最近更新
01
谷歌云创建GKE集群
07-26
02
ElastiCacheForRedis启用密码
07-26
03
upload-to-gcs
06-29
更多文章>
Theme by Vdoing | Copyright © 2021-2024 Brc | MIT License | 浙ICP备19031881号-4
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式