爲了防止分佈式集羣運行任務時出錯,節點間要進行時間同步。
時間同步方式:選定一臺主機作爲時間服務器,其它主機與其進行定時的時間同步,比如每隔十分鐘,同步一次時間。
定時任務的實現:Crontab,時間服務器的配置:ntp
一、 Crontab 的使用:
1. 基本語法:crontab [選項]
選項:
- -e 編輯crontab定時任務
- -l 查詢crontab任務
- -r 刪除當前用戶的crontab任務
2. 創建任務:輸入 crontab -e 進入 crontab 編輯界面,默認打開 vim 編輯器進行編輯,創建任務。
3. 任務格式:* * * * * 命令
|
含義 |
範圍 |
第一個 * |
一個小時當中的第幾分鐘 |
0~59 |
第二個 * |
一天當中的第幾個小時 |
0~23 |
第三個 * |
一個月當中的第幾天 |
1~31 |
第四個 * |
一年當中的第幾個月 |
1~12 |
第五個 * |
一週當中的周幾 |
0~7(0和7都代表週日) |
特殊符號 |
含義 |
* |
代表任何時間。比如:第一個“*”就代表一個小時中每分鐘都執行一次的意思。 |
, |
代表不連續的時間。比如:“0 8,12,16 * * * 命令”代表在每天的8時0分、12時0分、16時0分執行命令。 |
- |
代表連續的時間範圍。比如:“0 5 * * 1-5 命令”代表在週一到週五的凌晨5時0分執行命令。 |
*/n |
代表每隔多久執行一次。比如:“*/10 * * * * 命令”代表每隔十分鐘就執行一次命令。 |
示例:*/1 * * * * /usr/bin/echo 11 >> /tmp/test.txt
每隔 1 分鐘向 test 文件裏添加一個 11 。
二、時間服務器的配置 ntp :
1. 安裝 ntp :yum install -y ntp
2. 編輯 /etc/ntp.conf 文件:
① 授權 192.168.31.0 - 192.168.31.255 網段上的所有主機可以從這臺主機上查詢和同步時間。
將 #restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap 改爲
restrict 192.168.31.0 mask 255.255.255.0 nomodify notrap
② 設置集羣在局域網中,不使用其它互聯網上的時間。
註釋掉:
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 127.127.1.0
fudge 127.127.1.0 stratum 10
3. 編輯 /etc/sysconfig/ntpd 文件:
在最後一行添加 SYNC_HWCLOCK=yes ,讓硬件時間與系統時間一起同步。
4. 重啓 ntpd 服務,並設置開機自啓:
systemctl restart ntpd
systemctl status ntpd
systemctl enable ntpd
三、 其它主機的配置:
在其它主機下編寫定時任務 crontab -e ,內容爲
*/10 * * * * /usr/sbin/ntpdate node1
此時若用命令 date -s 修改系統時間
可以看到一段時間後時間會被自動同步