Linux中的網絡時間服務器

本章主要介紹網絡時間的服務器

  • 使用chrony配置時間服務器
  • 配置chrony客戶端服務器同步時間

1.1 時間同步的重要性

一些服務對時間要求非常嚴格,例如如圖所示的由三臺服務器搭建的ceph集群

這三臺服務器的時間必須保持一致,如果不一致,就會顯示警告信息。那么。如何能讓這三臺服務器的時間保持一致呢?手動調整時間的方式肯定不行,因為手動調整時間最多只能精確到分,很難精確到秒。而且即使現在時間調整一致了,過一段時間之后,時間可能又不一樣了

所以,需要通過設置讓這些服務器的時間能夠自動同步,如圖

這里假設我們有一個時間服務器時間為7:00,設置 server1和 server2向此時間服務器進行時間同步。 假設serverl 當前時間為6;59,它與時間服務器一對 比,“我的時間比時間服務器慢了一分鐘”,然后它主板上的晶體芯片就會跳動得快一些,很快 就“追”上了時間服務器的時間

假設server2當前時間是7:01,它與時間服務器一對比,“我竟然比時間服務器快了一分鐘”,然后它主板上的晶體芯片就會跳動得慢一些,“等著”時間服務器

下面就開始使用chrony來配置時間服務器

1.2 配置時間服務器

實驗需求

兩臺Linux主機(redhat8、node1)這里把redhat8配置成時間服務器,node1作為客戶端向redhat8進行時間同步

在安裝系統時,如果已經選擇了圖形化界面,則默認已經把 chrony這個軟件安裝上了(如果沒有安裝,請先看后面的軟件 包管理章節,然后自行安裝上去)

使用vim編輯器打開/etc/chrony.conf,只修改我們能用的幾行

(1)指定所使用的上層時間服務器

把pool 2.rhel.pool.ntp.org iburst修改成pool 127.127.1.0 iburst

pool后面跟的是時間服務器,因為這里把redhat8作為chrony服務器,沒有上一層的服務 器,所以上層服務器設置為本地時鐘的IP:127.127.1.0

這里iburst的意思是,如果chrony服務器出問題,客戶端會發送一系列的包給chrony服務器,對服務器進行檢測

(2)指定允許訪問的客戶端

修改allow所在行,把注釋符#去掉,并把后面的網段改為192.168.161.0/24

把#allow 192.168.0.0/16修改為allow 192.168.161.0/24

redhat8配置成時間服務器之后,只允許192.168.161.0/24網段的客戶端進行時間同步。如果要允許所有客戶端都能向此時間服務器進行時間同步,可以寫成allow 0/0或allow all

(3)把local stratum 前的注釋符#去掉

這行的意思是,即使服務器本身沒有和時間服務器保持時間同步,也可以對外提供時間服務,這行注釋要取消

保存退出,去除空白行和注釋行之后,最后修改完成的代碼如下

[root@redhat8 ~]# egrep -v "^#|^$" /etc/chrony.conf 
pool 127.127.1.0 iburst
driftfile /var/lib/chrony/drift
makestep 1.0 3
rtcsync
allow 192.168.161.0/24
local stratum 10
keyfile /etc/chrony.keys
leapsectz right/UTC
logdir /var/log/chrony
[root@redhat8 ~]#

然后重啟chronyd這個服務(注意,這里是chronyd而不是chrony),并設置開機自動啟動

[root@redhat8 ~]# systemctl restart chronyd
[root@redhat8 ~]# systemctl enable chronyd
Created symlink /etc/systemd/system/multi-user.target.wants/chronyd.service → /usr/lib/systemd/system/chronyd.service.
[root@redhat8 ~]#

chrony用的是UDP的123和323

[root@redhat8 ~]# netstat -nutlp | grep chronyd
udp        0      0 0.0.0.0:123             0.0.0.0:*                           2622/chronyd        
udp        0      0 127.0.0.1:323           0.0.0.0:*                           2622/chronyd        
udp6       0      0 ::1:323                 :::*                                2622/chronyd        
[root@redhat8 ~]#

在防火墻中把這兩個端口開放

[root@redhat8 ~]# firewall-cmd --add-port=123/udp --permanent 
success
[root@redhat8 ~]# firewall-cmd --add-port=323/udp --permanent 
success
[root@redhat8 ~]# firewall-cmd --reload 
success
[root@redhat8 ~]# 

這里加上 --permanent選項的目的是讓其永久生效,然后通過reload重新加載防火墻規則, 讓其也立即生效

至此,用chrony搭建的時間服務器完成

1.3 配置chrony客戶端

把node1配置成時間服務器的客戶端,也就是chrony客戶端

在node1(IP地址為192.168.161.12)上用vim編輯器修改/etc/chrony.conf,修改下面的幾行

(1)修改pool那行,指定要從哪臺時間服務器同步時間

 由原來的pool 2.rhel.pool.ntp.org iburst改為pool 192.168.161.16 iburst

這里指定時間服務器為192.168.161.16,即向192.168.161.16進行時間同步

(2)修改makestep那行,格式如下

 makestep 閾值 limit

客戶端向服務器同步時間有兩種方式:step和 slew

step:跳躍著更新時間,如時間由1點直接跳到7點

slew:平滑著移動時間,晶體芯片跳動得快一些,就好比秒針的轉速“快進”了一樣

如果客戶端和服務器的時間相差較多,則通過step的方式更新時間;如果客戶端和服務器的時間相差不多,則通過slew的方式更新時間。那么,時間相差多或不多的標準是什么呢? 就要看時間差是否超過makestep后面的住值了

舉一個例子,makestep 10 3的意思是,如果客戶端和服務器的時間相差10秒以上,就認為客戶端和服務器的時間相差較多,則前三次通過step 的方式更新時間。客戶端通過這種方式會更新得很快,有些應用程序因為時間的突然跳動會帶來問題

如果客戶端和服務器的時間相差10秒以內,就認為二者時間相差不多,則通過slew的方式更新時間。這種方式更新的速度會比較慢,但比較平穩

 把原來的makestep 1.0 3改成makestep 200 3

如果客戶端和服務器的時間相差200秒以上,就認為二者時間相差較多,則通過step的方式更新時間

保存退出并重啟 chronyd服務

[root@node1 ~]# systemctl restart chronyd.service 
[root@node1 ~]# systemctl enable chronyd.service 
[root@node1 ~]#

為了更細致地看到兩臺機器的時間差,先配置ssh使得node1可以無密碼登錄到redhat8。 先生成密鑰對

[root@node1 ~]# ssh-keygen -N "" -f /root/.ssh/id_rsa
Generating public/private rsa key pair.
Created directory '/root/.ssh'.

配置到redhat8的密鑰登錄

[root@node1 ~]# ssh-copy-id 192.168.161.16

給node1上通過date命令設置時間,使得node1和redhat8的時間相差200秒

[root@node1 ~]# date -s "2023-12-07 12:30:00" ; hwclock -w
2023年 12月 07日 星期四 12:30:00 CST
[root@node1 ~]# 

然后同時顯示兩臺機器的時間

[root@node1 ~]# date ; ssh 192.168.161.16 date
2023年 12月 07日 星期四 12:30:03 CST
2023年 12月 07日 星期四 12:16:39 CST
[root@node1 ~]#

可以看到,時間相差了約13分鐘,即780秒

然后重啟node1的chronyd服務,等待幾秒之后再次查看

[root@node1 ~]# systemctl restart chronyd.service 
[root@node1 ~]# date ; ssh 192.168.161.16 date
2023年 12月 07日 星期四 12:18:59 CST
2023年 12月 07日 星期四 12:18:59 CST
[root@node1 ~]#

可以看到,時間很快就同步了,因為這是通過step的方式同步的

再次修改時間

[root@node1 ~]# date -s "2023-12-07 12:22:00" ; hwclock -w
2023年 12月 07日 星期四 12:22:00 CST
[root@node1 ~]# date ; ssh 192.168.161.16 date
2023年 12月 07日 星期四 12:22:06 CST
2023年 12月 07日 星期四 12:20:26 CST
[root@node1 ~]# 

兩臺機器的時間相差1分40秒,即100秒,這個值低于200秒,即在makestep的闕值范圍 之內,此時客戶端向服務器進行時間同步時只能通過slew的方式同步

此時重啟 chronyd服務,也不會保持時間同步

[root@node1 ~]# systemctl restart chronyd.service 
[root@node1 ~]# date ; ssh 192.168.161.16 date
2023年 12月 07日 星期四 12:23:14 CST
2023年 12月 07日 星期四 12:21:34 CST
[root@node1 ~]#

可以看到,并沒有同步,因為slew同步的速度比較慢

此時如果通過執行chronyc makestep命令手動step同步,則會立即同步時間

[root@node1 ~]# chronyc makestep
200 OK
[root@node1 ~]# date ; ssh 192.168.161.16 date
2023年 12月 07日 星期四 12:22:20 CST
2023年 12月 07日 星期四 12:22:20 CST
[root@node1 ~]#

這樣就可以看到立即同步成功了

通過chronye -n sources -v查看現在的同步狀況,如圖

可以看到,node1是向192.168.161.16進行時間同步的

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/208452.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/208452.shtml
英文地址,請注明出處:http://en.pswp.cn/news/208452.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Django講課筆記01:初探Django框架

文章目錄 一、學習目標二、課程導入(一)課程簡介(二)課程目標(三)適用人群(四)教學方式(五)評估方式(六)參考教材 三、新課講授&#…

android項目實戰之編輯器集成

引言 項目需要用到編輯器&#xff0c;采用RichEditor&#xff0c;如下效果 實現 1. 引入庫2 implementation jp.wasabeef:richeditor-android:2.0.0 2. XML <LinearLayout xmlns:android"http://schemas.android.com/apk/res/android"android:layout_width&q…

LeetCode:2008. 出租車的最大盈利(dp C++)

目錄 2008. 出租車的最大盈利 題目描述&#xff1a; 實現代碼與解析&#xff1a; DP 二分&#xff08;兩種寫法&#xff09; 原理思路&#xff1a; 2008. 出租車的最大盈利 題目描述&#xff1a; 你駕駛出租車行駛在一條有 n 個地點的路上。這 n 個地點從近到遠編號為 1 …

如何使用 Wordpress?托管, 網站, 插件, 緩存

這是該系列教程的第一個教程&#xff0c;最終將在運行高性能 LEMP 堆棧的阿里云 ECS 實例上運行一個新的 WordPress 站點。 在本教程中&#xff0c;我們將創建一個運行 Ubuntu 16.04 的實例&#xff0c;然后通過創建超級用戶并禁用 root 登錄來保護服務器&#xff0c;最后配置…

持續集成交付CICD:使用Maven命令下載Nexus制品

目錄 一、實驗 1.Maven安裝 2.Nexus搭建公共組倉庫及Maven全局配置文件 3.使用Maven命令下載Nexus制品 一、實驗 1.Maven安裝 &#xff08;1&#xff09;CentOS環境安裝步驟 tar -xf apache-maven-3.8.6-bin.tar.gz #解壓 mv apache-maven-3.8.6 /usr/local/maven #移動…

如何進行更好的面試回復之緩存函數在項目中的性能優化?

緩存函數是一種提高函數性能的技術&#xff0c;在函數被調用時&#xff0c;會將計算結果緩存起來&#xff0c;以便在后續的調用中直接返回緩存的結果&#xff0c;從而減少了重復計算的時間。 緩存函數的實現通常包括兩個步驟&#xff1a; 判斷緩存是否存在&#xff1a;在函數被…

提取視頻光流成幀并寫入視頻中

修改一下配置文件就可以運行了 配置文件 config.py video_path xxxx/dataset/data/huaping/BXDQ05-花屏-1.mp4#要處理的視頻路徑 frame_path xxxx/dataset/frame#處理成幀之后保存的路徑 flow_path xxxx/dataset/flow#處理成光流之后保存的路徑 save_video_path xxxx/fe…

自動補全的 select antd react

自動補全的 select antd react 文檔&#xff1a;自動補全的 select antd react.note 鏈接&#xff1a;http://note.youdao.com/noteshare?idf5e4a93d2b9d6be8e459edd4eb86323b&sub19796E9BC04D4ABD9ACE325FDFF59B0E 添加鏈接描述 import React, { useState, useRef } from…

【1day】泛微e-office OA系統xml.php 文件 SORT_ID 參數 SQL 注入漏洞學習

注:該文章來自作者日常學習筆記,請勿利用文章內的相關技術從事非法測試,如因此產生的一切不良后果與作者無關。 目錄 一、漏洞描述 二、影響版本 三、資產測繪 四、漏洞復現

理解傳統模式與互聯網時代 消費行為模型 AIDMA , AISAS , SICAS

1 AIDMA與AISAS 消費行為模型&#xff0c;以及所誕生的IT崗位 1.1 傳統市場營銷消費行為模型 AIDMA模型&#xff1a;Attention&#xff08;吸引&#xff09;&#xff0c;Interest &#xff08;興趣&#xff09;&#xff0c;Desire&#xff08;欲望&#xff09; &#xff0c;Me…

LeetCode 76. 最小覆蓋子串 滑動窗口框架

雙指針的特殊應用&#xff1a;滑動窗口 代碼 題目鏈接&#xff1a;https://leetcode.cn/problems/minimum-window-substring/description/ 不說廢話&#xff0c;直接貼代碼&#xff1a; static string minWindow(string s, string t) {// need記錄需要匹配的字符串t中每個字…

? Mac IDEA使用并運行項目

? IDEA導入項目并運行 Mac IDEA使用 (1) 倉庫導入 通過獲取giett倉庫包的url&#xff0c;在idea中導入項目 在gitee里獲取項目的ur打開idea&#xff0c;點擊 File->new->Project from Version Control (2) 創建數據庫ry并導入數據腳本 &#xff08;3&#xff09;修改配…

華為配置Smart Link主備備份示例

定義 Smart Link&#xff0c;又叫做備份鏈路。一個Smart Link由兩個接口組成&#xff0c;其中一個接口作為另一個的備份。Smart Link常用于雙上行組網&#xff0c;提供可靠高效的備份和快速的切換機制。 Monitor Link是一種接口聯動方案&#xff0c;它通過監控設備的上行接口…

npm私有源構建項目下載依賴報錯

Jenkins構建項目報錯&#xff0c;依賴找不到 Error: Couldnt find any versions for "babel/helper-module-imports" that matches "^7.22.15"at MessageError.ExtendableBuiltin (/data1/jenkins/tools/jenkins.plugins.nodejs.tools.NodeJSInstallation/…

log4j(日志的配置)

日志一般配置在resources的config下面的&#xff0c;并且Util當中的initLogRecord中的initLog&#xff08;&#xff09;方法就是加載這個log4j.properties的. 首先先看log4j.properties的配置文件 log4j.rootLoggerdebug, stdout, Rlog4j.appender.stdoutorg.apache.log4j.Co…

高性能和多級高可用,云原生數據庫 GaiaDB 架構設計解析

1 云原生數據庫和 GaiaDB 目前&#xff0c;云原生數據庫已經被各行各業大規模投入到實際生產中&#xff0c;最終的目標都是「單機 分布式一體化」。但在演進路線上&#xff0c;當前主要有兩個略有不同的路徑。 一種是各大公有云廠商選擇的優先保證上云兼容性的路線。它基于存…

考研真題數據結構

【2021年山西大學真題】將二叉樹中所有非終端結點的左右子樹交換位置&#xff0c;可以得到原二叉樹的 鏡像二叉樹&#xff0c;如圖。假設二叉樹的存儲形式為&#xff08;lchild&#xff0c;data&#xff0c;rchild&#xff09;&#xff0c;給出求鏡像二叉樹的算法: &#xff0…

Sql Server Management Studio連接Mysql

目標 已知mysql連接參數&#xff08;地址和用戶&#xff09;&#xff0c;期望通過Microsoft Sql Server Management Studio &#xff08;以下簡稱MSSSMS&#xff09;連接Mysql&#xff0c;在MSSSMS中直接查詢或修改Mysql中的數據。 下載MySql Connector/ODBC并安裝&#xff0c…

使用poi-tl填充word模板,并轉化為pdf輸出

后端 依賴 <dependency><groupId>com.deepoove</groupId><artifactId>poi-tl</artifactId><version>1.12.0</version> </dependency>Word版本 Word版本填充代碼 // 培訓詳情HashMap<String, Object> textMap new Ha…

maven環境搭建

maven歷史版本下載&#xff1a;https://archive.apache.org/dist/maven/ 新建系統變量編輯Path&#xff0c;添加bin目錄mvn -v測試查看版本號conf目錄下新建repository文件夾&#xff0c;作為本地倉庫 settings.xml <?xml version"1.0" encoding"UTF-8&…