文章目錄
方法概括
時間同步的方式:找一個機器,作爲時間服務器,所有的機器與這臺集羣時間進行定時同步,如,每隔十分鐘同步一次時間。
具體步驟
準備階段:選擇一臺機器作爲時間服務器,我的實驗集羣是3個,選擇了namenode作爲時間服務器。
1. 時間服務器(root)
(1)檢查ntp是否安裝
[終端輸入]# rpm -qa|grep ntp
獲得如下結果說明已經安裝
fontpackages-filesystem-1.41-1.1.el6.noarch
ntp-4.2.4p8-3.el6.centos.x86_64
ntpdate-4.2.4p8-3.el6.centos.x86_64
(2)修改ntp配置文件
-
修改一
[終端輸入]# vi /etc/ntp.conf
把找到下面的配置:
# Hosts on local network are less restricted.
# restrict 192.168.162.0 mask 255.255.255.0 nomodify notrap
把*註釋去掉,並修改ip爲自己的網段(ip地址前三個爲網段):
# Hosts on local network are less restricted.
restrict 自己的網段 mask 255.255.255.0 nomodify notrap
作用:授權192.168.1.0-192.168.1.255網段上的所有機器可以從這臺機器上查詢和同步時間
- 修改二
找到下面的配置,並且註釋掉
# Please consider joining the pool (http://www.pool.ntp.org/join.html).
server 0.centos.pool.ntp.org
server 1.centos.pool.ntp.org
server 2.centos.pool.ntp.org
作用:集羣在局域網中,不使用其他互聯網上的時間 / 由於是內網環境,就不需要這些服務配置,註釋
- 修改三
添加如下內容(對於CentOS6.4之前,這參數是默認有的;6.5之後就沒有了,要手動添加)
server 127.127.1.0 # local clock
fudge 127.127.1.0 stratum 10
作用:當該節點丟失網絡連接,依然可以採用本地時間作爲時間服務器爲集羣中的其他節點提供時間同步
(3)啓動並且配置開機時啓動
查看服務狀態:service ntpd status
啓動服務:service ntpd start
設置開機自啓:chkconfig ntpd on
(4)更新本地時間
沒有這一步的話,可能會出現這種情況:集羣時間同步了,但時間服務器本身的時間不正確。
[終端輸入] ntpdate -u us.pool.ntp.org
輸出:24 Feb 15:24:11 ntpdate[2408]: step time server 202.112.10.60 offset 4.004597 sec
國內可選的時間服務器:
ntp.sjtu.edu.cn 202.120.2.101 (上海交通大學網絡中心NTP服務器地址)
s1a.time.edu.cn 北京郵電大學
s1b.time.edu.cn 清華大學
(5)查看本地硬件時鐘時間,並進行更新
[終端輸入]hwclock --localtime
[終端輸入]hwclock --localtime -w //系統時間同步給硬件時間
(6)硬件時鐘時間同步給系統時間
服務器關機或斷電後,系統時間不準確,硬件時鐘時間正常走動,設置服務器啓動後自動將硬件時鐘時間同步給系統時間
[終端輸入]# vim /etc/sysconfig/ntpd
增加內容如下
SYNC_HWCLOCK=yes
作用:與系統BIOS進行時間同步 / 讓硬件時間與系統時間一起同步
(7)自動同步網絡時間
服務器重啓啓動或斷網重新連接後,會自動同步網絡時間,設置下讓系統時間自動同步給本地硬件時鐘時間
[終端輸入]vi /etc/sysconfig/ntpdate
SYNC_HWCLOCK=yes
2. 其它機器配置(root)
對每臺機器建立定時任務
[終端輸入]crontab -e
添加以下內容:
## sync time
*/10 * * * * /usr/sbin/ntpdate 時間服務器主機名
作用:計劃一個crontab定時任務,每十分鐘執行一次時間同步
所有節點 啓動ntpd服務
這一步似乎不用做,因爲我做完上面就已經可以了
[終端輸入] service ntpd restart
[終端輸入] service crond restart
[終端輸入] chkconfig ntpd on
關閉的命令(不用執行)
[終端輸入] service ntpd stop
[終端輸入] service crond stop
測試
通過date -s "2019-12-12 12:12:12"設置時間,十分鐘後通過date查看機器是否與時間服務器同步