NTP\rsync+inotify
NTP网络时间协议
NTP(Network Time Protocol)网络时间协议基于UDP,用于网络时间同步的协议,使网络中的计算机时钟同步到UTC(世界统一时间),再配合各个时区的偏移调整就能实现精准同步对时功能。
chrony是网络时间协议NTP的实现方式, Chrony是一个开源的自由软件 ,在RHEL7/CentOS7操作系统已经是默认安装服务,它能保持系统时间与NTP时间服务器的时间保持同步,让时间始终保持同步。
软件包:chrony
服务名:chronyd
命令程序:chronyc
配置文件:/etc/chrony.conf
安装chrony程序
#CentOS7/RHEL7以默认安装
[root@localhost ~]# rpm -q chrony
chrony-3.2-2.el7.x86_64
#查看服务运行状态
[root@localhost ~]# systemctl status chronyd
#启动chronyd服务&&设置服务随机期自
[root@localhost ~]# systemctl start chronyd
[root@localhost ~]# systemctl enable chronyd
配置文件介绍
#修改/etc/chrony.conf配置文件
[root@localhost ~]# 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).
#配置NTP时间服务器
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
# Record the rate at which the system clock gains/losses time.
#记录系统时钟获得/丢失时间的速率至drift文件中
driftfile /var/lib/chrony/drift
# Allow the system clock to be stepped in the first three updates
# if its offset is larger than 1 second.
# 默认情况下,chronyd通过减慢或加快时钟速度来逐渐调整时钟。如果时钟与实际时间偏差太大,则需要很长时间才能纠正错误。这种方法叫做步进时钟(时间跳变)。
# 此处表示如果调整值大于1000秒,则这将使系统时钟步进,但仅在前10个时钟更新中。
makestep 1000 10
# Enable kernel synchronization of the real-time clock (RTC).
# 启用RTC(实时时钟)的内核同步
rtcsync
# Enable hardware timestamping on all interfaces that support it.
#hwtimestamp *
# Increase the minimum number of selectable sources required to adjust
# the system clock.
#minsources 2
# Allow NTP client access from local network.
# 只允许192.168.网段的客户端进行时间同步
#allow 192.168.0.0/16
# Serve time even if not synchronized to a time source.
# NTP服务器不可用时,采用本地时间作为同步标准
#local stratum 10
# Specify file containing keys for NTP authentication.
# 指定包含NTP验证密钥的文件
#keyfile /etc/chrony.keys
# Specify directory for log files.
# 指定日志文件的目录
logdir /var/log/chrony
# Select which information is logged.
#将对系统增益或损耗率的估计值以及所做的任何转换记录的更改记录到名为的文件中tracking.log
#log measurements statistics tracking
常用命令
#查看时间同步源
[root@localhost ~]# chronyc sources -n
210 Number of sources = 4
MS Name/IP address Stratum Poll Reach LastRx Last sample
===============================================================================
^* 203.107.6.88 2 6 17 32 +938us[ -17ms] +/- 24ms
^- time.cloudflare.com 3 6 17 31 +56ms[ +56ms] +/- 163ms
^- ns1.luns.net.uk 2 6 17 30 +26ms[ +26ms] +/- 166ms
^? ntp7.flashdance.cx 0 6 0 - +0ns[ +0ns] +/- 0ns
字段 | 说明 |
---|---|
M | 这表示信号源的模式。^表示服务器,=表示对等方,并#指示本地连接的参考时钟 |
S | 此列指示源的状态。“ *”表示chronyd当前同步到的源。“ +”表示可接受的来源,已与所选来源合并。“-”表示组合算法排除的可接受源。“?” 指示已失去连接性或其数据包未通过所有测试的源。“ x”表示一个时钟,它chronyd认为是虚假行情(其时间与大多数其他来源不一致)。“〜”表示时间似乎变化太大的来源。“?” 启动时也会显示条件,直到从中至少收集了3个样本为止 |
Name/IP address | 这显示了IP源的名称或地址 |
Stratum | 这显示了来源的层次,如其最近收到的样本中所报告的那样。层1表示具有本地连接的参考时钟的计算机。与第1层计算机同步的计算机位于第2层。与第2层计算机同步的计算机位于第3层,依此类推 |
Poll | 这显示轮询源的速率,以秒为单位的间隔的以2为底的对数。因此,值为6表示每64秒进行一次测量。chronyd 根据当前情况自动更改轮询速率 |
Reach | 这显示了源的范围寄存器以八进制数字打印。该寄存器有8位,并在从源接收或丢失的每个数据包上进行更新。值377表示已收到所有最后八次传输的有效回复 |
LastRx | 此列显示多久以前从源接收到最后一个样本。通常以秒为单位。这些信件m,h,d或y表示分钟,小时,天或数年。10年的值表示尚未从此来源接收到任何样本 |
Last sample | 此列显示上次测量时本地时钟与源之间的偏移。方括号中的数字表示实际测得的偏移量。这可以以ns(表示纳秒),us(表示微秒),ms(表示毫秒)或s(表示秒)作为后缀。方括号左侧的数字表示原始测量值,已调整为允许此后施加于本地时钟的任何摆度。+/-指示器后面的数字表示测量中的误差范围。正偏移表示本地时钟位于源时钟之前 |
#立刻手动同步时间
[root@localhost ~]# chronyc -a makestep
200 OK
#检查时间是否同步
[root@localhost ~]# chronyc tracking
Reference ID : CB6B0658 (203.107.6.88) #同步到的服务器ID与IP地址
Stratum : 3
Ref time (UTC) : Wed Jun 23 15:26:55 2021
System time : 0.001027327 seconds fast of NTP time
Last offset : +0.001285393 seconds
RMS offset : 0.016554436 seconds
Frequency : 9.343 ppm slow
Residual freq : -0.813 ppm
Skew : 1.096 ppm
Root delay : 0.038546667 seconds
Root dispersion : 0.000631557 seconds
Update interval : 64.2 seconds
Leap status : Normal
字段 | 说明 |
---|---|
Reference ID | 同步到的服务器ID与IP地址 |
Stratum | 层次:表示带有附加参考时钟的计算机距计算机的跳数。这样的计算机是第1层计算机,因此示例中的计算机距离两跳(也就是说,abc是第2层,并且与第1层同步) |
Ref time (UTC) | 这是处理来自参考源的最后一次测量的时间(UTC) |
System time | 在正常操作中,chronyd步进系统时钟,因为时标的任何跳跃都可能对某些应用程序产生不利影响。取而代之的是,通过稍微加快或降低系统时钟的速度来纠正系统时钟中的任何错误,直到错误被消除,然后恢复到系统时钟的正常速度 |
Last offset | 最后偏移:上次时钟更新时本地偏移量 |
RMS offset | 偏移值的长期平均值 |
Frequency | “频率”是如果chronyd不对其进行校正,则系统时钟出错的速率。用ppm(百万分之一)表示。例如,值1 ppm表示当系统时钟认为它已提前1秒时,它实际上已相对于真实时间提前了1.000001秒。 |
Residual freq | 显示了当前选定参考源的“剩余频率”。这反映了来自参考源的测量结果表明该频率应与当前使用的频率之间的任何差异 |
Skew | 频率上的估计误差范围 |
Root delay | 这是到第1层计算机的网络路径延迟的总和,该计算机最终从该第1层计算机同步。根延迟值以纳秒分辨率打印。在某些极端情况下,该值可以为负。(这可能发生在对称的对等方排列中,其中计算机的频率彼此不跟踪,并且相对于每台计算机的周转时间,网络延迟非常短。) |
Root dispersion | 根扩散:这是通过所有计算机累积到第1层计算机的总色散,最终从第1层计算机对其进行同步。色散是由于系统时钟分辨率,统计测量变化等引起的。根色散值以纳秒分辨率打印 |
Update interval | 更新间隔 |
Leap status | 这是飞跃状态,可以是“正常”,“插入第二”,“删除第二”或“未同步 |
案例需求
搭建一台NTP服务器,同步阿里云时间,当阿里云不可用时,使用本地时间,其他服务器同步这台服务器上的时间,确保时间一致。
配置服务端
[root@localhost ~]# 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公共时间同步服务器
#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
#添加阿里NTP服务
server ntp.aliyun.com iburst
server ntp1.aliyun.com iburst
#允许所有网段客户端进行时间同步
allow 0.0.0.0/0
#NTP服务器不可用时,采用本地时间作为同步标准
local stratum 10
#重启chronyd服务
[root@localhost ~]# systemctl restart chronyd
#查看时间同步源
[root@localhost ~]# chronyc sources -n
210 Number of sources = 2
MS Name/IP address Stratum Poll Reach LastRx Last sample
===============================================================================
^* 203.107.6.88 2 6 17 43 -87us[-3038us] +/- 22ms
^+ 120.25.115.20 2 6 33 41 +4255us[+4255us] +/- 24ms
配置客户端
#查看chrony软件包是否安装
[root@host26 ~]# rpm -q chrony
chrony-3.2-2.el7.x86_64
#修改配置文件/etc/chrony.conf
[root@host26 ~]# vim /etc/chrony.conf
# 注释其他server开头的配置,添加本地NTP公共时间同步服务器
server 192.168.0.24 iburst
#重启chronyd服务&&设置服务随机自启
[root@host26 ~]# systemctl restart chronyd
[root@host26 ~]# systemctl enable chronyd
[root@host26 ~]# systemctl status chronyd
#查看时间同步源
[root@host26 ~]# chronyc sources -n
210 Number of sources = 1
MS Name/IP address Stratum Poll Reach LastRx Last sample
===============================================================================
^? 192.168.0.24 0 7 0 - +0ns[ +0ns] +/- 0n
#查看系统时间
[root@host26 ~]# date
rsync远程同步
rsync(Remote Sync): 是一款开源,快速,多功能的可实现本地或远程主机数据同步与增量备份的优秀工具。(数据同步与备份的工具)可使本地主机不同分区或目录之间及本地和远程两台主机之间的数据快速同步,远程备份等功能 。
在同步备份时,默认情况下,rsync通过其独特的“quick check”算法,仅同步大小或者最后修改时间发生变化的文件或目录(也可根据权限,属主等变化同步,需要制定参数)。甚至是只同步一个文件里变化的内容部分,所以可以实现快速的同步数据的功能。
提示:传统的cp,scp工具拷贝每次均为完整拷贝,而rsync除了完整拷贝,还具备增量拷贝的功能,因此更加灵活。
rsync特性
1)支持拷贝特殊文件如链接,设备文件等
2)可以有排除指定文件或目录同步的功能
3)可以保持原来文件或目录的权限,时间,软硬链接等所有属性均不改变。
4)可实现增量同步,即只同步发生变化的数据,因此数据传输效率更高
生产场景
1)借助cron定时任务+rsync把所有客户服务器数据同步到备份服务器
2)针对公司重要数据备份混乱状况和领导提出备份全网数据的解决方案
3)通过本地打包备份,然后rsync结合inotify(监控)应用把全网数统一备份到一个固定存储服务器,然后在存储服务器上通过脚本检查并报警管理员备份结果
4)定期将IDC机房的数据备份公司的内部服务器,防止机房地震及火灾问题 导致数据丢失
实时同步,解决存储服务器的单点问题
rsync总结
rsync就是会同步指定的两端目录之间的数据,这个数据可以是特殊的数据。同步之前就先进行两端的数据的比对,只会同步两者之间不同的部分,并保留文件原本的属性。并且支持匿名的方式进行同步传输。所以rsync在备份、同步上就会较为快速。
软件安装
rsync官方地址: http://rsync.samba.org/
安装方式:源码安装、二进制RPM安装
#安装rsync
[root@master ~]# yum -y install rsync
本地同步语法
命令格式1:rsync 选项… 本地目录A 本地目录B #同步整个目录
命令格式2:rsync 选项… 本地目录A/ 本地目录B #只同步目录下的数据
常用选项
选项 | 作用 |
---|---|
-n | 测试同步过程,不做实际修改 |
--delete | 删除目标目录下多余的文档 |
-v | 显示详细操作信息 |
-z | 传输过程中启用压缩/解压缩 |
-a | 递归同步,包含目录/字子目录及所有文件、保留符号链接文件、保留文件权限、时间标记、保留文件的属主/属组标记、保留设备文件及其他特殊文件 |
本地同步
#在本地创建2个目录使用rsync实现数据同步
[root@master ~]# mkdir /test1 /opt/test2
#将/test1目录同步至/opt/test2目录下(同步整个目录)
[root@master ~]# rsync -avz /test1 /opt/test2
sending incremental file list #发送增量文件列表
test1/
sent 59 bytes received 20 bytes 158.00 bytes/sec
total size is 0 speedup is 0.00
#sent:发送字节59
#received:接收字节20
#158.00:字节/秒
#total:总大小为0
#speedup is:加速值为0.00
#查看目录是否同步成功
[root@master ~]# ls /opt/test2/
test1
#在/test1目录下创建测试文件
[root@master ~]# touch /test1/xx.txt
#同步/test1/目录下的数据至/opt/test2目录下
[root@master ~]# rm -rf /opt/test2/*
[root@master ~]# rsync -avz /test1/ /opt/test2
#查看数据是否同步
[root@master ~]# ls /opt/test2
xx.txt
#在/test1目录下创建新文件验证是否只同步新增加的数据
[root@master ~]# touch /test1/abc.txt
[root@master ~]# ls /test1
abc.txt xx.txt
#执行同步
[root@master ~]# rsync -avz /test1/ /opt/test2
sending incremental file list
./
abc.txt #只同步了新增加的文件
sent 130 bytes received 38 bytes 336.00 bytes/sec
total size is 0 speedup is 0.00
[root@master ~]# ls /opt/test2
abc.txt xx.txt
#向xx.txt文件增加内容验证同步
[root@master ~]# echo xxoo > /test1/xx.txt
[root@master ~]# cat /test1/xx.txt
xxoo
#执行同步
[root@master ~]# rsync -avz /test1/ /opt/test2
sending incremental file list
xx.txt #只同步变化的文件
sent 135 bytes received 35 bytes 340.00 bytes/sec
total size is 5 speedup is 0.03
[root@master ~]# cat /opt/test2/xx.txt
xxoo
#在执行同步时,如果目标目录下的内容发生变化,源目录不会跟着改变
[root@master ~]# cd /opt/test2
[root@master test2]# touch test{1..100}
#执行同步操作
[root@master test2]# rsync -avz /test1/ /opt/test2
sending incremental file list
./ #没有任何的变化,既没同步任何的数据
sent 93 bytes received 19 bytes 224.00 bytes/sec
total size is 5 speedup is 0.04
#执行同步时,删除目标目录下多余的文件
[root@master test2]# rsync -avz --delete /test1/ /opt/test2
#查看test2目录
[root@master test2]# ls
abc.txt xx.txt
远程同步语法
命令格式1:rsync 本地目录 用户名@对方IP地址:/目标目录 #同步源目录本身
命令格式2:rsync 本地目录/ 用户名@对方IP地址:/目标目录 #同步源目录下内容
远程同步
#客户端主机安装rsync程序[root@client ~]# yum -y install rsync#将本地主机/test1目录下内容同步到其他主机[root@master ~]# rsync -avz /test1/ root@192.168.0.28:/optroot@192.168.0.28's password: sending incremental file list./abc.txtxx.txtsent 174 bytes received 57 bytes 154.00 bytes/sectotal size is 5 speedup is 0.02'#远程主机查看是否同步成功[root@client ~]# ls /optabc.txt xx.txt[root@client ~]# cat /opt/xx.txt xxoo#在本地主机/test1目录下创建文件执行同步[root@master ~]# touch /test1/test{1..10}[root@master ~]# ls /test1abc.txt test10 test3 test5 test7 test9test1 test2 test4 test6 test8 xx.txt[root@master ~]# rsync -avz /test1/ root@192.168.0.28:/optroot@192.168.0.28's password: sending incremental file list./test1test10test2test3test4test5test6test7test8test9'#远程主机验证是否同步成功[root@client ~]# ls /optabc.txt test10 test3 test5 test7 test9test1 test2 test4 test6 test8 xx.txt
rsync+inotify实时同步
inotify 是Linux内核用于通知用户空间的程序文件系统变化的机制,如文件增加、删除等事件可以立刻让用户得知。
inotify官方地址:http://download.sf.net/inotify-tools/
环境前准备
#配置同步主机之间ssh免密登录[root@master ~]# ssh-keygen[root@master ~]# ssh-copy-id root@192.168.0.28[root@master ~]# ssh 192.168.0.28[root@client ~]# exit
源码安装inotify
#安装inotify依赖包(gcc)[root@master ~]# yum -y install gcc#解压源码包[root@master ~]# tar -xf inotify-tools.tar.gz 、[root@master ~]# cd tools/[root@master tools]# lsinotify-tools-3.13.tar.gz other[root@master tools]# tar -xf inotify-tools-3.13.tar.gz [root@master tools]# cd inotify-tools-3.13[root@test inotify-tools-3.13]# ./configure --prefix=/usr/local/inotify #指定安装路径[root@test inotify-tools-3.13]# make[root@test inotify-tools-3.13]# make install[root@master ~]# ls /usr/local/inotify/bin include lib share[root@master ~]# ls /usr/local/inotify/bininotifywait(命令) inotifywatch#将命令程序链接到PATH路径下,方便后期的使用[root@master ~]# ln -s /usr/local/inotify/bin/inotifywait /sbin
inotify使用方式
命令格式:inotify 选项 目标文件
常用选项
选项 | 功能 |
---|---|
-m | 持续监控,捕获一个事件后不退出 |
-r | 递归监控,包括子目录 |
-q | 减少屏幕输出信息 |
-e | 指定监控的:modify(修改),move(移动、改名),create(创建),delete(删除),attrib(权限) |
配置实时监控
#监控本机/test1目录
[root@master ~]# vim rsync.sh
#!/bin/bash
while inotifywait -rq -e modify,create,delete,attrib /test1/
do
rsync -avz --delete /test1/ root@192.168.0.28:/opt
done
#实现从本地到远程的Web目录推送
#源目标:/var/www/html
#参考脚本
#!/bin/bash
FROM_DIR=“/var/www/html/”
RSYNC_CMD=“rsync –za --delete $FROM_DIR root@192.168.0.211:/var/www/html”
while inotify –rqq –e modify,move,create,delete,attrib $FROM_DIR #q不显示输出
do
$RSYNC_CMD
done &
NTP\rsync+inotify的更多相关文章
- 网站集群架构(LVS负载均衡、Nginx代理缓存、Nginx动静分离、Rsync+Inotify全网备份、Zabbix自动注册全网监控)--技术流ken
前言 最近做了一个不大不小的项目,现就删繁就简单独拿出来web集群这一块写一篇博客.数据库集群请参考<MySQL集群架构篇:MHA+MySQL-PROXY+LVS实现MySQL集群架构高可用/高 ...
- 通过rsync+inotify实现数据的实时备份
我讲到过利用rsync实现数据的镜像和备份,但是要实现数据的实时备份,单独靠rsync还不能实现,本文就讲述下如何实现数据的实时备份. 一.rsync的优点与不足 与传统的cp.tar备份方式相比,r ...
- rsync+inotify实现远程数据备份
一.rsync的基本介绍 1. 什么是rsync Rsync是一款开源的.快速的.多功能的.可以实现增量的本地货远程数据镜像同步备份的优秀工具,Rsync使用与unix,linux,windows等 ...
- 通过rsync+inotify实现数据实时备份同步
一.环境描述 测试环境 需求:服务器A与服务器B为主备服务模式,需要保持文件一致性,现采用sersync基于rsync+inotify实现数据实时同步 环境描述: 主服务器172.26.7.50 ,从 ...
- rsync+inotify实现实时同步案例--转
转自:http://chocolee.blog.51cto.com/8158455/1400596 随着应用系统规模的不断扩大,对数据的安全性和可靠性也提出的更好的要求,rsync在高端业务系统中也逐 ...
- Rsync+inotify实现实时同步
1.1 inotify介绍 inotify是一种强大的.细粒度的.异步的文件系统事件控制机制.linux内核从2.6.13起,加入了inotify支持,通过inotify可以监控文件系统中添加.删除. ...
- rsync+inotify实时同步环境部署记录
随着应用系统规模的不断扩大,对数据的安全性和可靠性也提出的更好的要求,rsync在高端业务系统中也逐渐暴露出了很多不足.首先,rsync在同步数据时,需要扫描所有文件后进行比对,进行差量传输.如果文件 ...
- Server Data Synchronization Via Linux rsync、rsync+inotify Between Load Balance Server
目录 . 远程文件同步的应用场景 . rsync+crontab . rsync+inotify 1. 远程文件同步的应用场景 在负载均衡集群的应用场景中,往往在多台web server的前端有一个提 ...
- rsync+inotify 实现服务器之间目录文件实时同步(转)
软件简介: 1.rsync 与传统的 cp. tar 备份方式相比,rsync 具有安全性高.备份迅速.支持增量备份等优点,通过 rsync 可 以解决对实时性要求不高的数据备份需求,例如定期的备份文 ...
随机推荐
- hive学习笔记之五:分桶
欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...
- 一篇技术博文引发的stylelint项目实践
背景 看到项目中团队成员写CSS样式风格迥异,CSS样式的书写顺序没有鲜明的规范.想到以前看过CSS样式书写顺序的文章,决定找出来,给团队成员科普一下.查阅了好几篇文章,觉得这篇文章给出的理由最硬核, ...
- Linux 之 deb 包生成、安装、卸载
Linux 之 deb 包的生成.安装和卸载 deb DEB 是 Debian 软件包格式的文件扩展名,是 Unixar 的标准归档,将包文件信息以及包内容,经过 gzip 和 tar 打包而成. d ...
- Unity项目代码书写规范
以Google的代码规范为主,稍加改动 https://google.github.io/styleguide/csharp-style.html 书写规范 基础写法 Pascal和驼峰混用,参数用驼 ...
- 探索颜色渐变绘制算法(基于Processing语言) 第一部分
突然间意识到连续变化的颜色在程序中是如何实现的这一问题.没错,就想有事找事,我会分好几部分慢慢探寻,其实笔者也不会,咱一起研究.ok,我们开始! 第一部分 初始部分就从官方案例来入手学习.官方给了三个 ...
- 35、sudo权限设置
提示:sudo的介绍在"13.linux中用户和用户组"中有详细介绍: (1)简历里要加上如下项目经验: 服务器用户权限管理改造方案与实施项目 日期: 在了解公司业务流程后,提出权 ...
- js 对json数据进行检索 插件 linq.js
有时界面需要很多数据.但是多次访问服务器效率很低,所以需要检索json数据,最好是像sql查询语句那种 linq.js 插件 LINQ,语言集成查询(Language Integrated Query ...
- 【IllegalArgumentException】: object is not an instance of declaring class
java.lang.IllegalArgumentException: object is not an instance of declaring class 日前在调试动态代理的例子中,出现以上报 ...
- linux sort uniq命令详解
sort 功能说明:将文本文件内容加以排序,sort可针对文本文件的内容,以行为单位来排序. sort [-bcdfimMnr][-o<输出文件>][-t<分隔字符>][+&l ...
- linux 生成密钥
p.p1 { margin: 0; font: 16px "Helvetica Neue" } span.s1 { font: 16px ".PingFang SC&qu ...