時間同步伺服器NTP
前言
伺服器的時間同步操作,是每臺伺服器應該配置的核心功能之一。不管是單機的定時任務,還是大規模的叢集服務,都需要有一個統計的時間基準,才能保證程式的正常執行。
目錄
- 配置同步伺服器ntp
- 客戶機進行時間同步
- 系統時間 和 bios硬體時間hwclock
系統環境
Linux Ubuntu 12.10 64位 server
~ uname -a Linux delta 3.5.0-17-generic #28-Ubuntu SMP Tue Oct 9 19:31:23 UTC 2012 x86_64 x86_64 x86_64 GNU/Linux ~ cat /etc/issue Ubuntu 12.10 \n \l
NTP伺服器配置
NTP伺服器: 10.0.0.240
NTP客戶端: 10.0.0.8
1、安裝NTP軟體包
yum install -y ntp ntpdate |
2、NTP的配置檔案詳解
#在與上級時間伺服器聯絡時所花費的時間,記錄在driftfile引數後面的文#件內 driftfile /var/lib/ntp/drift #開啟內部遞迴網路介面lo埠 #廣播延遲時間 #broadcastdelay 0.008 |
3、啟動ntp服務
Centos6: /etc/init.d/ntpd start Centos7: systemctl start ntpd |
4、伺服器端顯示時間節點
[root@yum etc]# ntpq -p remote refid st t when poll reach delay offset jitter ============================================================================== 120.25.115.20 10.137.53.7 2 u 23 64 1 34.125 43.874 0.000 203.107.6.88 10.137.55.181 2 u 22 64 1 50.264 51.479 0.000 *LOCAL(0) .LOCL. 10 l 21 64 1 0.000 0.000 0.000 |
5、使用客戶端10.0.0.8來測試時間伺服器
1) 先客戶端時間更改為2009-01-01 [root@mysql ~]# date -s "20090101" Thu Jan 1 00:00:00 CST 2009 [root@mysql ~]# date Thu Jan 1 00:00:03 CST 2009 2) 使用時間伺服器來同步時間 [root@mysql ~]# ntpdate 10.0.0.240 3 Oct 10:11:06 ntpdate[23572]: step time server 10.0.0.240 offset 339329339.566811 sec [root@mysql ~]# date Thu Oct 3 10:11:10 CST 2019 |
6、客戶端配置crontab每過1小時自動同步ntp伺服器1次
[root@mysql ~]# crontab -e * 1 * * * /sbin/ntpdate 10.0.0.240 >> /usr/local/logs/crontab/ntpdate.log [root@mysql ~]# crontab -l * 1 * * * /sbin/ntpdate 10.0.0.240 >> /usr/local/logs/crontab/ntpdate.log |
7、客戶端顯示時間節點
[root@mysql ~]# ntpq -p remote refid st t when poll reach delay offset jitter ============================================================================== 10.0.0.240 LOCAL(0) 11 u 1 64 1 1.192 0.144 0.000 |
8、客戶端同步問題
[root@mysql ~]# ntpdate 10.0.0.240 1 Jan 00:00:13 ntpdate[23539]: the NTP socket is in use, exiting |
改為題為存在已經啟動的ntpdate服務,重複啟動導致的
處理方案:通過lsof -i:123 來檢視ntp服務的程序後,kill ntp的服務程序即可
[root@mysql ~]# lsof -i:123 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME ntpd 23590 ntp 16u IPv4 179721 0t0 UDP *:ntp ntpd 23590 ntp 17u IPv6 179722 0t0 UDP *:ntp ntpd 23590 ntp 18u IPv4 179727 0t0 UDP localhost:ntp ntpd 23590 ntp 19u IPv4 179728 0t0 UDP mysql:ntp ntpd 23590 ntp 20u IPv4 179729 0t0 UDP mysql:ntp ntpd 23590 ntp 21u IPv4 179730 0t0 UDP mysql:ntp ntpd 23590 ntp 22u IPv6 179731 0t0 UDP localhost:ntp ntpd 23590 ntp 23u IPv6 179732 0t0 UDP mysql:ntp ntpd 23590 ntp 24u IPv6 179733 0t0 UDP mysql:ntp ntpd 23590 ntp 25u IPv6 179734 0t0 UDP mysql:ntp |
kill掉ntp服務程序
[root@mysql ~]# kill -9 23590 |
重新同步成功
[root@mysql ~]# ntpdate 10.0.0.240 3 Oct 10:21:37 ntpdate[23627]: adjust time server 10.0.0.240 offset -0.000162 sec |
1. 配置同步伺服器ntp
host: 192.168.1.79
安裝並啟動ntp伺服器
~ sudo apt-get install ntp
~ ps -aux|grep ntp
ntp 23717 0.0 0.0 39752 2184 ? Ss 19:40 0:00 /usr/sbin/ntpd -p /var/run/ntpd.pid -g -u 126:135
~ /etc/init.d/ntp status
* NTP server is running
2. 客戶機進行時間同步
client: 192.168.1.41
使用ntpdate命令
~ ntpdate
1 Jul 19:58:48 ntpdate[2056]: no servers can be used, exiting
~ ping 192.168.1.79
PING 192.168.1.79 (192.168.1.79) 56(84) bytes of data.
64 bytes from 192.168.1.79: icmp_req=1 ttl=64 time=0.274 ms
64 bytes from 192.168.1.79: icmp_req=2 ttl=64 time=0.285 ms
時間同步操作
~ whereis ntpdate
ntpdate: /usr/sbin/ntpdate /usr/share/man/man8/ntpdate.8.gz
#當前時間
~ date
Mon Jul 1 20:05:33 CST 2013
#重置時間
~ sudo date -s 19:00:00
Mon Jul 1 19:00:00 CST 2013
~ date
Mon Jul 1 19:00:03 CST 2013
#同步時間
~ sudo /usr/sbin/ntpdate 192.168.1.79
1 Jul 20:07:02 ntpdate[2084]: step time server 192.168.1.79 offset 3987.719712 sec
~ date
Mon Jul 1 20:07:10 CST 2013
同步時間成功,設定定時任務,每天同步2次時間。(8:00, 16:00)
#編輯cron任務
~ sudo crontab -e
0 8,16 * * * /usr/sbin/ntpdate 192.168.1.79
#檢視cron設定
~ sudo crontab -l
0 8,16 * * * /usr/sbin/ntpdate 192.168.1.79
#重啟cron任務
~ sudo /etc/init.d/cron restart
cron stop/waiting
cron start/running, process 2190
完成時間同步的設定。
3. 系統時間和bios硬體時間
下面我們做多一點時間的測試:
host機, 先後打出下面兩條命令:時間是正常的
#系統時間
~ date
Mon Jul 1 20:18:54 CST 2013
#硬體時間
~ sudo hwclock --show
Mon 01 Jul 2013 08:19:00 PM CST -0.172315 seconds
client機,先後打出下面兩條命令,發現兩個命令有時間差。
#系統時間
~ date
Mon Jul 1 20:22:31 CST 2013
#硬體時間
~ sudo hwclock --show
Mon 01 Jul 2013 08:24:38 PM CST -0.927363 seconds
也就是說,剛才client在同步host時,系統時間已經改變了,而硬體的bios時間沒有改變,所以出現了軟體和硬體的時間不同步的情況。如果client被重啟時,系統就會使用硬體時間。
下面同步系統時間,寫入到硬體bios
#寫入到硬體bios
~ sudo hwclock --systohc
~ date
Mon Jul 1 20:27:19 CST 2013
~ sudo hwclock --show
Mon 01 Jul 2013 08:27:25 PM CST -0.720095 seconds
好了,這回把時間就設定好了!!
常見的網際網路時間伺服器:
上海交通大學的NTP
ntp.sjtu.edu.cn
aliyun的NTP
ntp1.aliyun.com
ntp2.aliyun.com
ntp3.aliyun.com
ntp4.aliyun.com
ntp5.aliyun.com
ntp6.aliyun.com
ntp7.aliyun.com