1. 程式人生 > >完全解除linux叢集時間同步問題(老大同步網路,小弟同步老大)

完全解除linux叢集時間同步問題(老大同步網路,小弟同步老大)

首先確保叢集已經正常使用(搭建叢集完畢)

叢集時間同步

時間同步的方式:找一個機器,作為時間伺服器,所有的機器與這臺叢集時間進行定時的同步,比如,每隔十分鐘,同步一次時間。

第一步 配置小弟同步老大的操作

配置時間同步實操:

1.時間伺服器配置(必須 root 使用者)

檢查 ntp 是否安裝

[[email protected] 桌面]# rpm -qa|grep ntp

 ntp-4.2.6p5-10.el6.centos.x86_64

fontpackages-filesystem-1.41-1.1.el6.noarch

ntpdate-4.2.6p5-10.el6.centos.x86_64

修改 ntp 配置檔案

[[email protected] 桌面]# vi /etc/ntp.conf

修改內容如下 

修改 1

#restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap 為

restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap

修改 2 

server 0.centos.pool.ntp.org iburst

server 1.centos.pool.ntp.org iburst

 server 2.centos.pool.ntp.org iburst

 server 3.centos.pool.ntp.org iburst 為

#server 0.centos.pool.ntp.org iburst

 

#server 1.centos.pool.ntp.org iburst

#server 2.centos.pool.ntp.org iburst

 #server 3.centos.pool.ntp.org iburst

新增 3

server 127.127.1.0

fudge 127.127.1.0 stratum 10

修改/etc/sysconfig/ntpd 檔案

[

[email protected] 桌面]# vim /etc/sysconfig/ntpd

增加內容如下

SYNC_HWCLOCK=yes

重新啟動 ntpd

[[email protected] 桌面]# service ntpd status

ntpd 已停

[[email protected] 桌面]# service ntpd start

正在啟動 ntpd:           [確定]

執行:開機自啟

[[email protected] 桌面]# chkconfig ntpd on

其他機器配置(必須 root 使用者)

在其他機器配置 10 分鐘與時間伺服器同步一次

[[email protected]3 hadoop-2.7.2]# crontab -e

編寫指令碼

*/10 * * * * /usr/sbin/ntpdate hadoop102

修改任意機器時間 

[[email protected]3 hadoop]# date -s "2017-9-11 11:11:11"

十分鐘後檢視機器是否與時間伺服器同步

[[email protected]3 hadoop]# date

發現可以同步

第二步 老大同步網路時間

如果老大時間跟網路不一致,下面的小弟時間全部都亂套了 下面再老大機器上同步網路

同步時間需要用到

ntpdate time.nuri.net

但是上面的第一步配置 ntpd start 檢視ntp的狀態

[[email protected] bin]# service ntpd status
ntpd (pid  3030) is running...

正在執行中,如果ntpd正在執行中使用上面的時間同步命令會失敗

20 Sep 09:17:07 ntpdate[3076]: the NTP socket is in use, exiting

報錯,說ntp正在執行,但是他也不能關,如果關了,下面的小弟時間都同步不上老大了,怎麼辦呢

下一個shell指令碼,先把ntp關了,更新同步時間的操作,然後再開啟就行了 本人命名syncTime.sh內容如下

#!/bin/bash
service ntpd stop
echo "停止 ntp. . . . . 。"
ntpdate time.nuri.net
service ntpd start
echo "開啟 ntp......"

把他加到定時任務裡面crontab -e,經過測試無效

*/1 * * * *  /usr/local/bin/syncTime.sh   這個命令就是一分鐘更新以下網路時間,看不懂的話可以查詢crontab的相關資料

至於為什麼無效,還不清楚,但是在定時器裡面寫如下程式碼

*/1 * * * *  echo "sdafsdf" >> /usr/local/bin/aa.sh

給aa.sh追加sdsas文字內容,1分鐘追加一次,這個有效。。。

真正解決辦法:編輯/etc/crontab 這個檔案

最後一行新增定時任務  在這個檔案執行檔案需要新增root  指定是root使用者

 

 

測試,把虛擬機器掛起或者關機3分鐘,然後開啟,會跟網路時間差3分鐘,等待1分鐘,date檢視時間 OK

這樣就配置完成了