本文参考文章如下:
http://www.cnblogs.com/zhwl/p/3670409.html
http://blog.csdn.net/bbirdsky/article/details/20445385
linux集群时间同步
说明:由于hadoop集群对时间要求很高,所以集群内主机要经常同步。本文档适合ubuntu、redhat系列。
注:很多内容是在网上摘录,然后试验后总结,如有疑问可留言探讨。
1.设置主机时间准确(所有机器)。//如果不需要同步网络时间则可以省略这一步
1.1查看本机时间和时区(date)
1.2设置时区(通过tzselect 命令选择时区 ; 选择后执行cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime)(这里是redhat的修改时区,ubuntu较简单,命令网上查找)
1.3修改时间(date -s 00:00:00或者网络同步:apt-get install ntpdate ; ntpdate cn.pool.ntp.org)
1.4写入硬盘时间(hwclock -w)
这样主机时间设置完毕。
2.时间同步(主机)
配置主机环境(yum install ntp )(用ubuntu做主机也可,设置参考ubuntu时间同步)
•vi /etc/ntp.conf
在后面加上
server 127.127.1.0
Fudge 127.127.1.0 stratum 10
•关闭防火墙: #service iptables stop
•重新启动服务:
service ntpd stop(ubuntu是service ntp stop)
service ntpd start
service ntpd restart
这样主机准备完毕。
3.其他机器同步
•等待大概五分钟,再到其他机上同步该机器时间(先确保时区一样,否则同步以后时间也是有时区差的)
ntpdate IP地址(主机的)
Date查看时间是否同步完成。
4.根据需要,这里可以让分机器定时自动同步时间
4.1.yum install crontabs(atp-get)
4.2.crontab -e 编辑内容: * */12 * * * /usr/sbin/ntpdate 172.72.103.228(每12个小时更新一次,也可特定时间更新一次,格式可网上查找)
4.3保存退出即可,可以到/var/spool/mail/下查看记录
遇到的问题:
1. 使用ntpdate IP地址(主机的)后同步时间失败,报错信息如下:
ntpdate: no server suitable for synchronization found
【解决】:
注意:若不加上-u参数, 会出现以下提示:no server suitable for synchronization found
-u:从man ntpdate中可以看出-u参数可以越过防火墙与主机同步;
210.72.145.44:中国国家授时中心的官方服务器。
2. 最后从节点使用ntpdate与主机同步时间时,发现提示同步时间成功,但是时间却和主机对不上。
[root@slave2 home]# ntpdate -u 192.168.6.180
26 Aug 20:01:34 ntpdate[5920]: adjust time server 192.168.6.180 offset 0.004114 sec
[root@master home]# date
Sat Aug 27 10:51:06 CST 2016
【解决】:
出现这种情况是由于时区不同的原因,注意所有机器应该在同一时区,查看时区方法如下:
[root@master home]# more /etc/sysconfig/clock
ZONE="America/Los_Angeles"
设置方法:
tzselect ;选择后执行cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
然后再次使用命令:ntpdate -u xxx.xxx.xxx.xxx
时间这个时候应该同步成功了。
但是再次查看时区,发现时区并没有更改,依然是America/Los_Angeles,亟待各位解决。