centos7搭建ntp时间同步服务器chrony服务

前言:

在centos6的时候我们基本使用的是ntp服务用来做时间同步,但是在centos7后推荐是chrony作为时间同步器的服务端使用,避免的ntp在centos7支持的不是很友好 。

什么是chrony?

第一部分的第3条说明对比关系,详见centos6和centos7的对比,连接地址:https://www.cnblogs.com/liych/p/11741632.html

在centos7上可以用它做时间服务器使用,是默认支持的,也是更新后centos7默认的时间服务器,另外还有就是,它作为网络时间协议的客户机/服务器,此程序保持计算机时钟的准确性。它是专门为支持断断续续的互联网连接而设计的,但它在永久连接的环境中也能很好地工作。它还可以使用硬件参考时钟、系统实时时钟或手动输入作为时间参考。至此,推荐使用。

chrony有2个命令,详见如下:
chronyd:是守护进程,主要用于调整内核中运行的系统时间和时间服务器同步。它确定计算机增减时间的比率,并对此进行调整补偿。 chronyc:提供一个用户界面,用于监控性能并进行多样化的配置。它可以在chronyd实例控制的计算机上工作,也可以在一台不同的远程计算机上工作。

开始部署chrony环境

1.环境说明

实现目的:需要两台或集群内的多台设备时间同步一致。
这里准备两台服务器:192.168.152.129 (bogon)做服务器端; 192.168.152.132 (liych-01)做客户端。也可以多台集群使用。
[root@bogon ~]# cat /etc/redhat-release
CentOS Linux release 7.6. (Core)


2.关闭防火墙

[root@bogon ~]# systemctl stop firewalld
[root@bogon ~]# systemctl status firewalld
● firewalld.service - firewalld - dynamic firewall daemon
Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled)
Active: inactive (dead) since 四 -- :: CST; 17s ago
Docs: man:firewalld()

3.关闭selinux


[root@bogon ~]#  sed -i 's#SELINUX=enforcing#SELINUX=disabled#g' /etc/selinux/config
[root@bogon ~]# sestatus
SELinux status: disabled

4.安装chrony

这里注意的是需要把需要同步时间服务器均安装chrony服务。
版本号:chrony.x86_64 0:3.4-1.el7

[root@bogon ~]# yum install chrony -y

4.1启动服务

[root@bogon ~]# systemctl start chronyd
[root@bogon ~]# systemctl status chronyd
● chronyd.service - NTP client/server
Loaded: loaded (/usr/lib/systemd/system/chronyd.service; enabled; vendor preset: enabled)
Active: active (running) since 四 -- :: CST; months days ago

4.2更新配置文件

这里修改的是服务器端的配置文件,客户端不需要修改。
时间服务器获取地址:https://www.ntppool.org/zone/asia

[root@bogon ~]# cp /etc/chrony.conf{,.backup}
[root@bogon ~]# cat > /etc/chrony.conf <<EOF
server cn.pool.ntp.org
server .asia.pool.ntp.org
server .asia.pool.ntp.org
server .asia.pool.ntp.org
server .asia.pool.ntp.org
server ntp1.aliyun.com
server time1.aliyun.com
stratumweight
driftfile /var/lib/chrony/drift
makestep 1.0
rtcsync
allow 192.168.152.0/
bindcmdaddress 127.0.0.1
bindcmdaddress ::
local stratum
keyfile /etc/chrony.keys
commandkey
generatecommandkey
noclientlog
logchange 0.5
logdir /var/log/chrony
EOF

4.3配置文件简单介绍

可以通过"man chrony.conf"了解主配置文件的配置格式,需要注意的是增加allow后才会生效。
server “必须以server”格式使用,添加的是时钟服务器,可以是多个。
stratumweight 0 设置当chronyd从可用源中选择同步源时,每个层应该添加多少距离到同步距离。默认设置为0,让chronyd在选择源时忽略源的层级。
driftfile /var/lib/chrony/drift  根据实际时间计算出服务器增减时间的比率,然后记录到一个文件中,在系统重启后为系统做出最佳时间补偿调整。
makestep 1.0 3 chronyd 将根据需求通过减慢或加速时钟,使得系统逐步纠正所有时间偏差

allow 192.168.152.0/24

deny 192.168.152.0/24

指定一台主机、子网,或者网络以允许或拒绝NTP连接到时钟服务器的机器
local stratum 10  这个功能开启后,本机不去同步别人的时间到本机
logdir /var/log/chrony
记录日志

4.4重启并检查服务端口123,323


[root@bogon chrony]# systemctl restart chronyd
[root@bogon chrony]# systemctl enable chronyd
[root@bogon chrony]# netstat -lntup |grep chronyd
udp 0.0.0.0: 0.0.0.0:* /chronyd
udp 127.0.0.1: 0.0.0.0:* /chronyd
udp6 ::: :::* /chronyd

5.客户端(单台)启用时间同步服务

单台配置很简单,请继续往下看吧。

5.1客户端启用时间同步服务

这里需要注意的是 时区为:Time zone: Asia/Shanghai (CST, +0800)然后执行下面法一同步时间。

法一:推荐使用
[root@liych- ~]# timedatectl set-timezone Asia/Shanghai;chronyc -a makestep
[root@liych- ~]# yum install ntpdate -y;ntpdate 192.168.152.129
Oct :: ntpdate[]: step time server 192.168.152.129 offset 62.490796 sec
法二:
[root@liych- ~]# echo "server 192.168.152.129 iburst " >>/etc/chrony.conf
[root@liych- ~]# systemctl restart chronyd
[root@liych- ~]# systemctl status chronyd

6.客户端(集群)启用时间同步服务器

本机设备很旧了,使用多台的时候总是迟钝,故此此处采用132一台做测试,多台就在host添加主机即可。

[root@bogon ~]# cat /etc/ansible/hosts
[ntpcli]
192.168.152.132
#192.168.152.133
#192.168.152.134

命令集合:


[root@bogon ~]# ansible all -m ping
[root@bogon ~]# echo "server 192.168.152.129 iburst " >/root/chrony.conf
[root@bogon ~]# ansible ntpcli -m copy -a "src=/root/chrony.conf dest=/etc/"
[root@bogon ~]# ansible ntpcli -m shell -a "systemctl start chronyd.service"
[root@bogon ~]# ansible ntpcli -m shell -a "systemctl status chronyd.service"
[root@bogon ~]# ansible ntpcli -m shell -a "ntpdate 192.168.152.129"
[root@bogon ~]# ansible ntpcli -m shell -a "date"
[root@bogon ~]# ansible ntpcli -m cron -a "name='time sync' minute=*/5 job='/usr/sbin/ntpdate 192.168.152.129 &>/dev/null'"
[root@bogon ~]# ansible ntpcli -m shell -a "crontab -l"

操作示例:

[root@bogon ~]# ansible all -m ping
192.168.152.132 | SUCCESS => {
"changed": false,
"ping": "pong"
}
[root@bogon ~]# echo "server 192.168.152.129 iburst " >/root/chrony.conf
[root@bogon ~]# ansible ntpcli -m copy -a "src=/root/chrony.conf dest=/etc/"
192.168.152.132 | SUCCESS => {
"changed": true,
"checksum": "3ccbe3a0fc44dd0ce06623653f5a9c940f453bdb",
"dest": "/etc/chrony.conf",
"gid": ,
"group": "root",
"md5sum": "bb305fff45f35fda88ed9ad01231a25c",
"mode": "",
"owner": "root",
"size": ,
"src": "/root/.ansible/tmp/ansible-tmp-1572158118.63-84760854509278/source",
"state": "file",
"uid":
}
[root@bogon ~]# ansible ntpcli -m shell -a "systemctl start chronyd.service"
192.168.152.132 | SUCCESS | rc= >> [root@bogon ~]# ansible ntpcli -m shell -a "systemctl status chronyd.service"
192.168.152.132 | SUCCESS | rc= >>
● chronyd.service - NTP client/server
Loaded: loaded (/usr/lib/systemd/system/chronyd.service; enabled; vendor preset: enabled)
Active: active (running) since 日 -- :: CST; 53min ago
Docs: man:chronyd()
man:chrony.conf()
Process: ExecStartPost=/usr/libexec/chrony-helper update-daemon (code=exited, status=/SUCCESS)
Process: ExecStart=/usr/sbin/chronyd $OPTIONS (code=exited, status=/SUCCESS)
Main PID: (chronyd)
CGroup: /system.slice/chronyd.service
└─ /usr/sbin/chronyd 10月 :: liych- systemd[]: Stopped NTP client/server.
10月 :: liych- systemd[]: Starting NTP client/server...
10月 :: liych- chronyd[]: chronyd version 3.4 starting (+CMDMON +NTP +REFCLOCK +RTC +PRIVDROP +SCFILTER +SIGND +ASYNCDNS +SECHASH +IPV6 +DEBUG)
10月 :: liych- chronyd[]: Initial frequency -5.115 ppm
10月 :: liych- systemd[]: Started NTP client/server.
10月 :: liych- chronyd[]: Selected source 192.168.152.129
10月 :: liych- chronyd[]: System clock wrong by -2.747341 seconds, adjustment started
10月 :: liych- chronyd[]: System clock wrong by 2.501240 seconds, adjustment started
10月 :: liych- chronyd[]: System clock wrong by -2.304266 seconds, adjustment started
10月 :: liych- chronyd[]: System clock was stepped by -0.921109 seconds [root@bogon ~]# ansible ntpcli -m shell -a "crontab -l"
192.168.152.132 | SUCCESS | rc= >>
[root@bogon ~]# ansible ntpcli -m shell -a "ntpdate 192.168.152.129"
192.168.152.132 | SUCCESS | rc= >>
Oct :: ntpdate[]: adjust time server 192.168.152.129 offset -0.000112 sec [root@bogon ~]# ansible ntpcli -m shell -a "date"
192.168.152.132 | SUCCESS | rc= >>
2019年 10月 27日 星期日 :: CST [root@bogon ~]# ansible ntpcli -m cron -a "name='time sync' minute=*/5 job='/usr/sbin/ntpdate 192.168.152.129 &>/dev/null'"
192.168.152.132 | SUCCESS => {
"changed": true,
"envs": [],
"jobs": [
"time sync"
]
}
[root@bogon ~]# ansible ntpcli -m shell -a "crontab -l"
192.168.152.132 | SUCCESS | rc= >>
#Ansible: time sync
*/ * * * * /usr/sbin/ntpdate 192.168.152.129 &>/dev/null

7.防火墙设置

因NTP使用123/UDP端口协议,所以允许NTP服务即可。

[root@bogon ~]# firewall-cmd --add-service=ntp --permanent
[root@bogon ~]# firewall-cmd --reload

8.常用的服务器命令

8.1查看当前系统时区并设置时区常用命令


[root@liych- ~]# timedatectl      #查看当前系统时区
[root@liych- ~]# timedatectl list-timezones | grep -E "Asia/S.*"
[root@liych- ~]# timedatectl set-timezone Asia/Shanghai #设置当前系统为Asia/Shanghai上海时区
[root@liych- ~]# chronyc -a makestep #强制同步下系统时钟

8.2查看系统同步时间


[root@liych- ~]# chronyc sources -v                   #查看时间同步源
[root@liych- ~]# chronyc sourcestats -v #查看时间同步源状态
[root@liych- ~]# timedatectl set-local-rtc #设置硬件时间,硬件时间默认为UTC
[root@liych- ~]# timedatectl set-ntp yes #启用NTP时间同步
[root@liych- ~]# chronyc tracking #校准同步时间服务器

chronyc参数 涵义
tracking(最为常用,其他的并不重要) 显示系统时间信息
activity   显示在线状态
add sever 添加时间服务器
delete 移除时间服务器
clients 查看报告
settime 设置守护进程
accheck 检查特定主机是否可以用

参考链接地址:

 https://wiki.archlinux.org/index.php/Chrony

 https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html/system_administrators_guide/sect-using_chrony

centos7搭建ntp时间同步服务器chrony服务的更多相关文章

  1. centos7 搭建ntp时钟服务器

    服务器 : 192.168.137.3 客户机:  192.168.137.6 1. 服务器端 centos7下首先确认服务器的防火墙.selinux关闭状态 # cat /etc/redhat-re ...

  2. CentOS7搭建ntp时钟服务器

    文章目录 服务器配置 远程客户端配置 服务器配置 # 关闭防火墙,selinux=disabled 1.# 服务器部署 [root@localhost ~]# yum -y install ntp n ...

  3. Linux下搭建ntp时间同步服务器

    1.ntpd软件安装(略过) 2.修改ntp.conf配置文件 vi /etc/ntp.conf 第一种配置:允许任何IP的客户机都可以进行时间同步将“restrict default kod nom ...

  4. linux搭建ntp时间同步服务

    1.NTP简介 NTP(Network Time Protocol,网络时间协议)用来使计算机时间同步的一种协议.它可以使计算机对其服务器或时钟源做同步化,它可以提供高精准度的时间校正(LAN上与标准 ...

  5. 搭建NTP时间服务器~使用NTP同步时间~构建主机间时间自动同步关系

    NTP是一个时间服务器,同时它也是一个时间客户端. 我们可以使用它构建主机与主机之间的时间自动同步环境,保证所有服务器时间一致性. 常用的公共NTP时间服务器有: cn.ntp.org.cn 中国 n ...

  6. 张高兴的 .NET IoT 入门指南:(八)基于 GPS 的 NTP 时间同步服务器

    时间究竟是什么?这既可以是一个哲学问题,也可以是一个物理问题.古人对太阳进行观测,利用太阳的投影发明了日晷,定义了最初的时间.随着科技的发展,天文观测的精度也越来越准确,人们发现地球的自转并不是完全一 ...

  7. 搭建ntp 时钟服务器_Linux

    一.搭建时间同步服务器1.编译安装ntp serverwget [url]http://www.eecis.udel.edu/~ntp/ntp_spool/ntp4/ntp-4.2.4p4.tar.g ...

  8. centos7搭建postfix邮件服务器

    在使用qq等邮件服务器厂商提供的邮件服务后,发现他们的邮件发送数量是有限制的,随着公司的业务的需求下,我们需要搭建一个邮件服务器,邮件服务器可以帮助我们在一些提醒方面和消息推送方面起到帮助. 理论性语 ...

  9. ntp时间同步服务器

    [root@localhost ~]# ntpdate time.nist.gov 虚拟机时间不对   自动同步   sudo ntpdate asia.pool.ntp.org 要是同步后时间还是不 ...

随机推荐

  1. C#session配置

    web Form 网页是基于HTTP的,它们没有状态, 这意味着它们不知道所有的请求是否来自同一台客户端计算机,网页是受到了破坏,以及是否得到了刷新,这样就可能造成信息的丢失. 于是, 状态管理就成了 ...

  2. redis的日常操作(1)

    一.简介 [概述] redis是一种nosql数据库,他的数据是保存在内存中,同时redis可以定时把内存数据同步到磁盘,即可以将数据持久化,并且他比memcached支持更多的数据结构(string ...

  3. go语言20小时从入门到精通(六、工程管理)

    在实际的开发工作中,直接调用编译器进行编译和链接的场景是少而又少,因为在工程中不会简单到只有一个源代码文件,且源文件之间会有相互的依赖关系.如果这样一个文件一个文件逐步编译,那不亚于一场灾难. Go语 ...

  4. Linux-T

    vim编辑器i输入Esc切换:wqw保存q退出保存 查看openssl版本号openssl version 查看所有php扩展php -m 查看指定端口占用netstat -anp |grep xxx ...

  5. caoz的梦呓:信息安全,别为了芝麻丢了西瓜

    猫宁!!! 参考链接:https://mp.weixin.qq.com/s/z6UI-tdhN1CGdqQQuglLVQ 对方公众号:caoz的梦呓 我之前写微博的时候,经常就有读者反馈说,你怎么用3 ...

  6. 神经网络中batch_size参数的含义及设置方法

    本文作者Key,博客园主页:https://home.cnblogs.com/u/key1994/ 本内容为个人原创作品,转载请注明出处或联系:zhengzha16@163.com 在进行神经网络训练 ...

  7. 【神经网络与深度学习】gflags介绍

    gflags是什么: gflags是google的一个开源的处理命令行参数的库,使用c++开发,具备python接口,可以替代getopt. gflags使用起来比getopt方便,但是不支持参数的简 ...

  8. vue中 Vue.set 的使用

    Vue.set(vm.items, indexOfItem, newValue) 1.vm.items :源数据:2.indexOfItem : 要修改的数据的键3.newValue : 要修改的数据 ...

  9. 使用正则实现php的trim函数,支持全角空格

    之前使用trim来移除一段文字开头的空格,移除不掉,发现是全角空格的锅. 便专门添加对全角空格的移除: trim($str," "); 但是效果并不好,因为trim函数对多字节字符 ...

  10. spark教程(六)-Python 编程与 spark-submit 命令

    hadoop 是 java 开发的,原生支持 java:spark 是 scala 开发的,原生支持 scala: spark 还支持 java.python.R,本文只介绍 python spark ...