Linux集群配置離線ntp時間同步服務


集群中時間不同步有可能會讓大數據的應用程序運行混亂,造成不可預知的問題,比如Hbase、mongodb副本集等,Hbase當時間差別過大時就會掛掉,mongodb如果副本時間過快,會出現時間棧幀溢出提前出發選舉等,所以在大數據集群中,ntp服務,應該作為一種基礎的服務,以下在演示在CentOS 7.2集群上配置ntp服務的過程

首先檢查系統中是否安裝ntp包:rpm -q 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端口已經使用:

===注意防火牆屏蔽ntp端口===

ntp服務器默認端口是123,如果防火牆是開啟狀態,在一些操作可能會出現錯誤,所以要記住關閉防火牆。

或者開啟123端口

iptables:

# yum install  iptables  iptables-services

# iptables  -A INPUT -p udp  -m udp --dport  123   -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT

# iptables  -A  OUTPUT -p udp  -m udp --dport  123   -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT

#  systemctl restart iptables.service

firewalld:

#yum  -y install firewalld
# firewall-cmd --zone=public --add-port=123/udp --permanent # firewall-cmd --reload

 

 

 執行: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也可以,只是通信的范圍不太一樣,總之這個配置就是授權局域網內能從本地同步時間的主機范圍

參考:

 

配置下游服務器可以使用該服務的IP網段(192.168.0.0-192.168.0.255)
restrict 127.0.0.1
restrict 192.168.0.0 mask 255.255.255.0 nomodify

配置上游NTP服務器IP地址
server cn.pool.ntp.org
#外部時間服務器不可用時,以本地時間作為時間服務
server 127.127.1.0 #local clock
fudge 127.127.1.0 stratum 3

 

 

 

配置好之后,保存並退出,執行 systemctl restart ntpd.service 重啟ntp服務即可

  2、然后是其他服務器的配置,這里相當於客戶端的配置:

  同樣執行上面的一些命令對ntp進行安裝、啟動、自啟配置、狀態查看等操作,配置文件依然是:/etc/ntp.conf,打開進行如下配置:

  同樣注釋默認的server服務器,添加一行指定時間服務器位置:server 192.168.0.157 因為上面時間服務器地址是192.168.0.157

 

 

配置好之后,保存,重啟ntp服務即可

  所有客戶端都進行以上配置,都啟動之后,集群會自動定期進行服務的同步(啟動后3-5分鍾才會同步),這樣集群的時間就保持一致了

  另外如果想要手動同步某一台機器的時間,那么可以依次執行下面命令實現:

systemctl stop ntpd  # 先停止服務,否則ntp socket會被占用
ntpdate 192.168.0.157  # 手動執行同步
systemctl start ntpd  # 繼續啟動服務

同步時,會看到如下結果表示同步成功:

 

 如果沒有網絡時,可以在https://pkgs.org/download/ntp  ntp離線安裝包,執行其中的install.sh腳本即可安裝,配置過程和前面完全一樣

 

ntp同步狀態查看

1. ntpstat

ntpstat 命令查看時間同步狀態,這個一般需要5-10分鍾后才能成功連接和同步。所以,服務器啟動后需要稍等下。
剛啟動的時候,一般是:

# ntpstat
unsynchronised
  time server re-starting
   polling server every 8 s

連接並同步后

# ntpstat
synchronised to NTP server (100.115.8.147) at stratum 4
   time correct to within 1230 ms
   polling server every 64 s

2. ntpq -p

# ntpq -p
   remote           refid      st t when poll reach   delay   offset  jitter
============================================================================
*10.xx.xx.xx  10.175.113.138   3 u   44  128  377    1.065   -0.469   0.087
+100.xx.xx.xx   10.175.113.138   3 u  112  128  377    3.218   -0.986   0.372
  
 remote: *表示目前使用的ntp server;+表示備用服務器
  st:即stratum階層,值越小表示ntp serve的精准度越高;
  when:幾秒前曾做過時間同步更新的操作;
  Poll表示,每隔多少毫秒與ntp server同步一次;
  reach:已經向上層NTP服務器要求更新的次數;
  delay:網絡傳輸過程鍾延遲的時間;
  offset:時間補償的結果;
  jitter:Linux系統時間與BIOS硬件時間的差異時間

 其他參數配置參考:https://blog.csdn.net/dengyadeng/article/details/81381142

 

 

ntp校時服務器:

server cn.pool.ntp.org
server asia.pool.ntp.org
server cn.ntp.org.cn
server ntp.aliyun.com
server time.asia.apple.com

 參考連接:https://www.cnblogs.com/jiawen010/p/12778891.html

 

時間調整:

# date -s 09:00:00

 

//往后切2s date -s `date -d "2 second" +"%H:%M:%S"`

//往前切1小時  date -s `date -d "-1 hours" +"%H:%M:%S"`


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM