最最基础简单的一个问题,由于之前没注意到,困扰好久,记下来警醒自己!!
分布式集群环境下一定要注意在集群中统一各个节点的时间!!!!!
如果各个节点间时间不统一,后续可能出现数据库访问超时等问题。
先把简单步骤放上:
# 安装ntp
sudo yum install ntp -y
# 与指定服务器同步时间
sudo ntpdate 0.asia.pool.ntp.org
# 最后执行如下命令将系统时间同步到硬件,防止系统重启后时间被还原。
sudo hwclock --systohc
详细记录下一下我出现的问题
多节点部署了Crawlab爬虫管理平台,开始多个节点是能正常使用的,后来由于关过服务器等原因,发现几个工作节点正常启动后,一直显示“warn Get current node info from database failed. Will after 1.000000 seconds, try again. error=not found”
mongo中始终沒有节点信息
现redis中关于该节点的信息时有时无,mongo的nodes表中则无任何该节点的信息
后来根据redis的节点信息手动在mongo中写入后,节点的状态始终被刷新为offline,以至于该节点一直无法使用。
(个人考虑是由于节点间通信问题导致,但不知道具体问题在哪里)
分析原因:个人考虑是由于节点间通信问题导致,最终发现是由于集群的时间不统一,影响到redis接收的到节点心跳!!!巨坑!!!!!!!!!!!!!!!!!估计是因为服务器断电等原因,之前时间也没统一到硬件,才出现该问题。
具体参考:5中时间漂移问题
https://docs.crawlab.cn/zh/Installation/MultiNode.html
最终解决方式:
前提:关闭防火墙
# 安装ntp
sudo yum install ntp -y
# 与指定服务器同步时间
sudo ntpdate 0.asia.pool.ntp.org
# 最后执行如下命令将系统时间同步到硬件,防止系统重启后时间被还原。
sudo hwclock --systohc