linux服務器在提供服務時,要和其他機器進行請求的交互,實際生産環境中,可能因為時間不同步,導緻了服務異常。
下面介紹下怎麼部署NTP服務來解決這個問題。
ps:強烈吐槽下頭條這個新排版功能,隻要圖片分辨率比較低然後點添加的時候直接白屏,也無法回退,這個很明顯的bug居然沒測出來,導緻我重新寫了三次...1、原理
NTP(Network TimeProtocol,網絡時間協議)是用來使計算機時間同步的一種協議。它可以使計算機對其服務器或時鐘源做同步化,它可以提供高精準度的時間校正(LAN上與标準間差小于1毫秒,WAN上幾十毫秒),切可介由加密确認的方式來防止惡意的協議攻擊。
模式:C/S模式
2、使用的端口
默認NTP服務端口:UDP/123
3、ntp和ntpdate區别
1)兩個服務都是centos自帶的(centos7中不自帶ntp)。ntp的安裝包名是ntp;ntpdate的安裝包是ntpdate。他們并非由一個安裝包提供。
2)ntp守護進程為ntpd,配置文件是/etc/ntp.conf
3)ntpdate用于客戶端的時間矯正,非NTP服務器可以不啟動NTP。
1、IP規劃
2、環境準備
以下基于centos7.3
2.1、關閉SELINUX和防火牆
systemctl stop firewalld systemctl disable firewalld sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config setenforce 0
2.2、配置yum
# cat /etc/yum.repos.d/t.repo [InstallMedia] name=Centos 7.3 baseurl=file:///media/cdrom/ enabled=1 gpgcheck=0 # mount -o loop -t iso9660 /root/CentOS-7-x86_64-Everything-1611.iso /media/cdrom/ # yum clean all && yum makecache
2.3、EDT 和 CST區别和設置
要檢查各個服務器時間格式,EDT或者是CST,在中國我們将服務器的時間格式調為CST
EDT:指美國東部夏令時間,波士頓、紐約市、華盛頓哥倫比亞特區,都在這個時區内,跟北京時間有12小時的時差,晚12小時。
CST:可以指下面兩種:
1). 美國中部标準時間(西六區,-6:00),中國是東八區( 8:00),北京時間比美國中部标準時間早14個小時。3:45 PMCST是北京時間淩晨1:45。
2). 中澳大利亞标準時間( 10:30),中國是東八區( 8:00),北京時間比中澳大利亞标準時間晚2個半小時。3:45 PMCST是北京時間下午上午5:45。
将系統的時間格式調整為CST的命令如下兩條:
# mv /etc/localtime /etc/localtime.bak # ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
3、搭建NTP服務端
3.1、部署ntp服務
#确定是否已經安裝NTP包,客戶端隻安裝ntpdate安裝包 rpm -qa | grep ntp #用yum源安裝 yum -y install ntp /*yum安裝NTP服務*/
3.2、服務端修改配置
# vim /etc/ntp.conf ==================================================================================== #設置默認策略為拒絕所有訪問方式的請求 restrict default ignore #允許哪些機器同步 restrict 127.0.0.1 restrict -6 ::1 #允許局域網内機器同步時間,nomodify拒絕讓他們修改服務器上的時間 restrict 172.xx.xx.xx mask 255.255.255.0 nomodify notrap #将該服務器的本地時間作為ntp server的時間,如果其他客戶端同步,将同步這台服務器的時間 server 127.127.1.0 #stratum這行是時間服務器的層次。設為0則為頂級,如果要向别的NTP服務器更新時間,請不要把它設為0 fudge 127.127.1.0 stratum 2 #每一個system clock的頻率都有小小的誤差,這個就是為什麼機器運行一段時間後會不精确. NTP會自動來監測我們時鐘的誤差值并予以調整. #但問題是這是一個冗長的過程,所以它會把記錄下來的誤差先寫入driftfile.這樣即使你重新開機以後之前的計算結果也就不會丢失了 driftfile /var/lib/ntp/drift # Enable public key cryptography. includefile /etc/ntp/crypto/pw keys /etc/ntp/keys # Disable the monitoring facility to prevent amplification attacks using ntpdc disable monitor ====================================================================================
說明:
關于restrict格式如下:
其中parameter如下:
3.3、啟動ntp服務
systemctl restart ntpd
3.4、驗證
現在已經啟動了NTP的服務,但是系統時間到底和服務器同步了沒有呢? 為此NTP提供了一個很好的查看工具: ntpq (NTP query)
# watch ntpq -p
建議大家在打開NTP服務器後就可以運行ntpq命令來監測服務器的運行.這裡可以使用watch命令來查看一段時間内服務器各項數值的變化。
這裡st為 配置文件設置的stratum,範圍是0--15,如果為16就是錯誤的
說明:
客戶端需要停用ntp服務,否則無法運行ntpdata 服務器地址這個命令 來同步時間,同步的時候會提示ntp被使用中。
1、停用ntp服務
systemctl stop ntpd
2、手動同步ntp服務器時間
ntpdate 172.xx.xx.xx
3、定期同步
#每天8點執行同步命令 * 8 * * * /usr/sbin/ntpdate 172.xx.xx.xx;/sbin/hwclock -w
覺得有用的朋友多幫忙轉發哦!後面會分享更多devops和DBA方面的内容,感興趣的朋友可以關注下~
,
更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!