集群中時間不同步有可能會讓大數據的應用程序運行混亂,造成不可預知的問題,比如Hbase,當時間差別過大時就會掛掉,所以在大數據集群中,ntp服務,應該作為一種基礎的服務,以下在演示在CentOS 7.2集群上配置ntp服務的過程
首先檢查系統中是否安裝ntp包: rpm -q ntp 我這里是只是基礎服務器操作系統,所以沒有安裝ntp服務
然后,執行命令在線安裝ntp: yum -y install ntp
安裝成功之后,再次執行 rpm -q ntp 可以看到對應的包:
這個時候可以使用命令查看ntp是否設置為開啟啟動狀態:
systemctl is-enabled ntpd
可以看到默認是disable禁用開機啟動的
現在執行: chkconfig ntpd on 或者 systemctl enable ntpd 設置為開機自啟動
設置成功后,ntp服務並不能立即啟動,而是在下次重啟之后啟動,所以現在手動啟動ntp:
systemctl start ntpd.service
啟動之后,執行: netstat -an | grep 123 可以看到ntp服務的123端口已經使用:
執行: ps -ef | grep ntpd 可以看到ntp進程也已經啟動
默認情況下ntp是從外網時間服務器來更新時間的,在集群中使用只要保證集群中所有的服務器時間一致即可,所以先配置其中一台服務器為時間服務器,其他服務器相對來說為這台時間服務器的客戶端,從時間服務器上獲取時間數據,從而避免聯網,可用性更高
1、首先是時間服務器配置:
時間服務器的IP:192.168.0.157
執行 vim /etc/ntp.conf 打開ntp配置文件,找到server指定時間服務器的位置,這些條都注釋掉;然后添加下面2行固定配置:
server 127.127.1.0 fudge 127.127.1.0 stratum 10
然后在restrict指定的兩行下面追加一行: restrict 192.168.1.1 mask 255.255.252.0 nomodify notrap
這個配置根據自己的網關和網段配置,只要能保證局域網主機通信就可以,比如這里子網掩碼為255.255.252.0那么網段配置192.168.0.0也可以,只是通信的范圍不太一樣,總之這個配置就是授權局域網內能從本地同步時間的主機范圍
配置好之后,保存並退出,執行 systemctl restart ntpd.service 重啟ntp服務即可
2、然后是其他服務器的配置,這里相當於客戶端的配置:
同樣執行上面的一些命令對ntp進行安裝、啟動、自啟配置、狀態查看等操作,配置文件依然是:/etc/ntp.conf,打開進行如下配置:
同樣注釋默認的server服務器,添加一行指定時間服務器位置: server 192.168.0.157 因為上面時間服務器地址是192.168.0.157
配置好之后,保存,重啟ntp服務即可
所有客戶端都進行以上配置,都啟動之后,集群會自動定期進行服務的同步,這樣集群的時間就保持一致了
另外如果想要手動同步某一台機器的時間,那么可以依次執行下面命令實現:
systemctl stop ntpd # 先停止服務,否則ntp socket會被占用 ntpdate 192.168.0.157 # 手動執行同步 systemctl start ntpd # 繼續啟動服務
同步時,會看到如下結果表示同步成功:
如果沒有網絡時,可以點擊這里下載ntp離線安裝包,執行其中的install.sh腳本即可安裝,配置過程和前面完全一樣