一般而言分三种情况:1,各节点可以连接外网 2.集群中某个节点可以连接外网 3.所有节点不能连接外网
一些命令说明:
date命令:
date :查看当前时间,
date -s 09:38:40 :设置当前时间
ntpdate命令:
ntpdate -u210.72.145.44 :网络时间同步命令
注意:若不加上-u参数, 会出现以下提示: no server suitable for synchronization found
-u:从man ntpdate中可以看出-u参数可以越过防火墙与主机同步;
210.72.145.44:中国国家授时中心的官方服务器。
ntp常用服务器:
中国国家授时中心:210.72.145.44
NTP服务器(上海):ntp.api.bz
美国:
复旦:
微软公司授时主机(美国) :
台警大授时中心(台湾):
经测试中国国家授时中心与NTP上海服务器可以正常同步时间,注意需要加上-u参数!
当所有节点都可以联网,在各节点采用上面命令即可,
如果节点太多,在主节点上用for循环既可:
for i in`seq 1 82`;do ssh node$i "ntpdate -u ntp.api.bz"
注意 1-82是集群中的计算节点,并且集群已经配置好了ssh.
第二种情况:连不上外网,比如:自己搭建的用来学习的集群中所有机器需要同步时间:
思路:可以把其中一台配置为时间服务器,其他机器通过定时任务来同步时间
Linux自带了ntp服务 -- /etc/init.d/ntpdlinux集群软件嵌入式linux驱动程序设计从入门到精通,这个服务不仅可以设置让本机和某台/某些机器做时间同步,
他本身还可以扮演一个timeserver的角色,让其他机器和他同步时间。配置文件就是/etc/ntp.conf。
step1:
因为实验室集群有83个节点,node100是主节点,所以可以把node100作为time server64位linux,node100本身不和其他机器
时间同步linux集群软件,就是取本地时间。所以,先把node100机器的时间调准了:
node100是可以联网的,可以采用上面的方式设置时间,如果不能联网,可以用如下命令手动设置:
date -s 18/05/2018 -----设置指日期
date -s11:12:00 ----设置具体时间
用如下两条命令把设置的时间写到硬件时间中去(也就是CMOS里面的时间)。
clock -w
hwclock --systohc
step2:
将node100配置成一个time server,修改/etc/ntp.conf,
1. 注释掉原来的restrict default ignore这一行,这一行本身是不响应任何的ntp更新请求,
其实也就是禁用了本机的ntp server的功能,所以需要注释掉。
2. 加入下面3行:
restrict 10.10.10.0 mask 255.255.255.0nomodify notrap
(注释:用于让10.10.10.0/24网段上的机器能和本机做时间同步)
server 127.127.1.0 # local clock
fudge 127.127.1.0 stratum 10
后两行是让本机的ntpd和本地硬件时间同步。
3./etc/init.d/ntpd restart或者 service ntpd restart
4.chkconfig ntpd on 设置开机自启动
5.修改iptables配置,将tcp和udp 123端口开放,这是ntp需要的端口,在/etc/services中可以查到这个端口
vim /etc/sysconfig/iptables
按类似如下的图片修改
step3:
这样node100就成为一台time server了,现在我们配置其他的所有机器(这里我们用定时任务来定时同步时间)
下面的可以不用做,也可以做:
首先关掉这台机器上的ntpd服务:
service ntpd stop(本次关掉)
chkconfig ntpd off(再关掉开机自启动);