部署了两台服务器,一台是是powerjob的调度服务器,一台是我写的应用带有powerjob客户端。
两台系统都一直好端端地跑了半年了,突然有一天,应用的任务没有正常被调度,凌晨两点的时候调度任务还是正常的,六点的时候调度任务就开始没被执行了。凌晨两点到六点这段时间没可能有人去碰过程序的呀。由于之前也试过powerjob调度服务器犯傻了,于是决定两台服务器都重启一下,还是不行。接下来就开始了漫长的排故之旅了、、、
在powerjob的调度服务器上,可以看得到我的应用是掉线了的状态,显示的是灰色的。一堆应用全部都是调用失败。每次手动调用一下应用,可以看到主机的“上次在线时间”会被更新了一下。这就很纳闷了~查过前台后台,都没有发现报告任何故障。
期间,我还查过powerjob的官方文档,里面有提到这么一个情况:
这里面说了,时间不一致可能会导致调度失败。我也就简单随意的对比了两遍的时间,相差不多就得了吧~(之前也看到有相差了近一分钟的,所以看到了数值差异不大,就主观任务差的不多了),后续也就没再往这个方向思考和研究。。。
紧接着就是漫长的排故之旅,从软件回滚到网络连接测试,能想到的可能性都尝试过了。最后发现,真的就是时间的不一致引起的这个问题!
首先,需要把两台服务器的时间同步连接到同一台时间同步服务器中,其中麒麟系统的同步设置方法如下:
vi /etc/chrony.conf
先向管理服务器的人员获取到了同步服务器的IP地址,然后进入配置文件进行配置。在配置文件的末端添加配置的地址:
配置如下:
#10.160.xxx.xxx替换为NTP服务器地址
server 10.160.xxx.xxx iburst
#表示允许其他服务器同步这台服务器的地址,前者表示IP地址段,后者表示位数。假设,10.160.0.0/16,表示10.160.0.0到10.160.255.255这一系列的系统都可以通过本机进行同步时间
allow 10.160.xxx.xxx/yyy
配置完毕后保存并退出。
然后重启chrony服务。
systemctl restart chronyd
可以通过指令查看一下是否配置完成
timedatectl status
运行后显示:
可见NTP服务是正常运行中的。
网上有很多很多教程指导使用指令进行立刻同步的。但是我发现,在麒麟系统上似乎完全不凑效!摸索了一番后发现了方法:
①执行chronyc指令,此时系统会进入到chronyc这个程序中。
②执行tracking指令,就可以查看当前的同步情况了
Reference ID---同步的IP地址
Stratum---源类型
Ref time (UTC)---上一次更新的时间
System time---时间差异
Last offset---上次同步的偏移量
RMS offset---RMS指标
Frequency---本地系统时钟的速度
Residual freq---同步之后时间变化
Skew---本地时钟不确定性
Root delay---时间同步包的往返时间
Root dispersion---可能偏差
Update interval---两次连续更新之间的间隔时间
Leap status---闰秒状态
在执行完毕以上操作后,可以看一下powerjob服务端的页面,原本显示离线的设备绿了!能正常连接工作了!