分布式下的时间同步

hey,你机器怎么老出问题,是不是时间同步有问题呀,有问题你就直说呀,你说了我才知道时间同步有问题嘛,你不说我怎么知道时间同步有问题呢,大家要讲道理嘛,真是时间同步有问题吗,不是真的时间同步有问题吧,难道..真是时间同步有问题?

徒儿(黑人问号):纳尼,说好的hadoop集群呢 ?

严肃脸!这是个不大起眼又比较关键的问题,一般大家对时间同步没那么敏感,但是在分布式的存储和运算当中,时间的不一致会导致获取外部节点的数据和状态错误,导致错误的相应。最典型的例子就是在分布式环境都遵循着slave-master的模式设计,从节点会定时上报自己的心跳数据到master节点,同时在master端会根据上报的消息判断是否超时,超时就是和上一次心跳的时间作为判断依据。时间不同步会被错误判断,导致回收连接 。在节点初始化之初,我们对节点的时间进行同步。

时间服务器的配置

时间服务器相对来说配置不复杂,但是倒腾下了也是蛮心塞的,只能一步一截图了:

图一:配置文件

框框部分是我们加进去的,参数解释如下:

restrict 127.0.0.1   ##授权本机可以把本机作为时间服务器进行连接

restrict -6 ::1      ##默认的授权设置

server 127.127.1.0  设置本地时钟服务器

fudge  127.127.1.0 stratum 8  设置本地时钟源的层次为8


配置完成之后,我们重启服务器,跟踪日志消息:

图二:重启和查看日志

查看时间服务器同步的情况:

图三:时间服务器的同步情况

*表示目前使用的ntp server,这里选择的本机;

st:即stratum阶层,值越小表示ntp server的精准度越高;

when几秒前曾做过时间同步更新的操作;

Poll表示,每隔多少毫秒与ntp server同步一次;

reach:已经向上层NTP服务器要求更新的次数;

delay:网络传输过程钟延迟的时间;

offset:时间补偿的结果;

jitter:Linux系统时间与BIOS硬件时间的差异时间

我们可以从图三中看到时间不断在更新,注意reach一直是0的话就有些问题了

在查看一下ntp状态,可以看到同步正常

图四:时间服务器的同状态

接下来,我们把其他节点配置时间同步,以第一台机器作为时间服务器

在客户端直接进行一次时间同步:

图五:客户端同步时间

验证没问题,我们把命令做成脚本

图六:同步时间的脚本

然后,在定时任务中进行配置

图七:配置定时同步任务

观察调度的日志,确认即可:

 图八:调度的日志

接下来的事情,就是把我们的节点都配置上,这下我们的几台节点的时间都是一致的啦。

总结

  这里要还原一个事实就是,时间服务器搭建是捣鼓来捣鼓去配置了几波才完成的,现在看到的配置是最后配置的样子, 刚开始配置一个是不知道啥概念,一个是不知道出错的时候怎么往下走 ,补充几点:

  1. 出问题多一些的地方是那个/etc/hosts的配置,需要去加上127.0.0.1的配置 

  2. server配置的是127.127.0.1代表本机器,127.0.0.1是一个A类地址,配置的时候是用前者

  3. 客户端同步的时候记得关闭本机的ntpd服务 service ntpd stop

  4. 其他情况就是不断调整,实在不清楚就直接找师父啦

  5. 一般生产环境会有专门的时间服务器去同步,一般需要的是检查是否会定时同步,有的话就不用自己去倒腾了。

偷懒养成续篇

上次我们提到自动同步的事情,这里接着聊一下这个事情。我们在多台机器上面进行一些自动化的操作往往是这么几种情况:

  1. 需要交互式的,这种就是类似远程登录的时候需要输入密码

  2. 从本机同步文件到远端

  3. 登录远程机器执行命令

下面我们一个个解决:

我们最开始碰到的其实就是远程设置免密码登录

图九:交互式窗口

类似这种情况,我们需要引入spawn工具和expect的语法,我们可以预期一个提示输入的内容,然后进行输入,我们之前的免密码登录要修改成脚本,变成了这种样子:

图十一:期望输入

我们把用户和密码直接输入,在脚本中去匹配交互式的文本信息进行输入 ,我们写下这份脚本的时候,我们需要去授权一台免密码登录的操作就变成了这样子:

图十二:脚本方式自动面密码登录

直接就完成了,是不是特方便。

另外对于远程同步文件一般scp或者rsync都可以,ssh的命令也可以同时登录远程机器去进行执行命令,所以我们把需要做的事情全部写到一个脚本里面:

图十三:批量执行的脚本

当我们这样去做的时候,我们后面需要同步一个新的节点的话,只需要执行脚本就好了:

图十四:最终效果

关注我的其他文章,可以扫描二维码

猜你喜欢

转载自blog.csdn.net/zhuxuemin1991/article/details/81294601