linux 設置系統時間函數 linux系統設置時間命令



文章插圖
linux 設置系統時間函數 linux系統設置時間命令

文章插圖
前言:我們在搭建集群時必須保證集群中每一臺主機的時間都是同步的,下面就具體講解如何進行時間同步.
一 時間服務器的作用
設備集群需要有一個統一的時間,來確保所執行的操作的時序正確 。
NTP 是網絡時間協議(Network Time Protocol)的簡稱,就是通過網絡協議使計算機之間的時間同步化 。
例如服務器集群進行文件創建、數據庫處理等操作的時間 。
二 時區管理1 查看當前時區
timedatectl
[[email protected] ~]# timedatectlLocal time: Sat 2019-02-16 23:07:46 CSTUniversal time: Sat 2019-02-16 15:07:46 UTCRTC time: Sat 2019-02-16 15:07:45Time zone: Asia/Shanghai (CST, +0800)NTP enabled: yesNTP synchronized: yesRTC in local TZ: noDST active: n/a
2 查看當前可用時區
timedatectl list-timezones
Africa/AbidjanAfrica/AccraAfrica/Addis_AbabaAfrica/AlgiersAfrica/AsmaraAfrica/Bamako…
【linux 設置系統時間函數 linux系統設置時間命令】3 設置時區
timedatectl set-timezone Asia/Shanghai
三 進行時間同步方法
3.1 最簡單的方法,讓所有集群(這里默認集群中有三臺服務器:master,slave1,slave2)中的主機跟某個時間服務器的時間同步,執行 ntpdate 時間服務器,
例如:
[[email protected] ~]# ntpdate http://ntp1.aliyun.com
[[email protected] ~]# ntpdate http://ntp1.aliyun.com
[[email protected] ~]# ntpdate http://ntp1.aliyun.com
不過,這種方法不好.ntpdate同步時間是跳躍的,這將導致文件時間標記,監控數據的紊亂.
而且ntpdate只運行一次就結束,即只同步一次.所以即使我們要寫這樣寫
vi /etc/crontab
* * * * root /usr/sbin/ntpdate ntp1.aliyun.com && /sbin/hwclock -w3.2 配置遠程的時間服務器,再讓所有的主機跟他同步
3.3 配置本地的時間服務器,再讓所有的主機跟他同步
下面的 四 配置ntp服務中就是同時配置了遠程和本地的時間服務器,配置目的是先使用遠程時間服務器同步,如果外網發生了問題,再使用本地時間服務器.
四 配置ntp服務
最終目的:將我們的一臺主機配置成ntp服務器,同網段的其他主機可以通過ntpdate -u host-addr命令以ntp服務器的時間來進行客戶端的時間同步 。
4.1 服務端4.1.1 工具安裝
我們需要先安裝ntp服務和ntpdate工具:yum -y install ntp ntpdate即使是作為服務端的主機,在必要時刻也是需要向公用的ntp服務器進行時間同步的(一般不用) 。
4.1.2 進行ntp服務文件配置
[[email protected] ~]# vim /etc/ntp.conf
注意:
1.大家自己在配置時,只需要把我的內容替換你的內容即可
2.#授權下述網段上所有的機器允許從ntp服務器上查詢和同步時間restrict 192.168.10.0 mask 255.255.255.0 nomodify notrap
保證這里的網段是你集群的網段即可
driftfile /var/lib/ntp/drift# 默認情況下,NTP服務器的日志保存在 /var/log/messages.當然我們也可以自己指定# 自己指定日志目錄# 我們要確保他的屬性和SELinux環境(這兩項一般不用改)# chown ntp:ntp /var/log/ntpd.log# chcon -t ntpd_log_t /var/log/ntpd.loglogfile /var/log/ntpd.log?restrict default nomodify notrap nopeer noquery# 給與本機所有權限restrict 127.0.0.1restrict ::1?#授權下述網段上所有的機器允許從ntp服務器上查詢和同步時間restrict 192.168.10.0 mask 255.255.255.0 nomodify notrap?#增加下述幾個時間服務器列表,除了0.asia.pool.ntp.org還會有很多時間服務器.比如0.cn.pool.ntp.org或者time.nist.gov或者server 0.asia.pool.ntp.org iburstserver 1.asia.pool.ntp.org iburstserver 2.asia.pool.ntp.org iburstserver 3.asia.pool.ntp.org iburst?#這兩行內容表示當外部時間不可用時,使用本地時間server 127.127.1.0 iburstfudge 127.127.1.0 stratum 10?#下述四行表示允許上層服務器修改本機時間?restrict 0.asia.pool.ntp.org nomodify notrap noqueryrestrict 1.asia.pool.ntp.org nomodify notrap noqueryrestrict 2.asia.pool.ntp.org nomodify notrap noqueryrestrict 3.asia.pool.ntp.org nomodify notrap noquery?includefile /etc/ntp/crypto/pwkeys /etc/ntp/keysdisable monitor4.1.3 設置開機自啟動服務(初始化)
使服務端服務ntp的守護進程ntpd生效
[[email protected] ~]# systemctl enable ntpd
Created symlink from /etc/systemd/system/multi-user.target.wants/ntpd.service to /usr/lib/systemd/system/ntpd.service.
使客戶端工具ntpdate工具生效(選做)
[[email protected] ~]# systemctl enable ntpdate
Created symlink from /etc/systemd/system/multi-user.target.wants/ntpdate.service to /usr/lib/systemd/system/ntpdate.service.
檢查
[[email protected] ~]# systemctl is-enabled ntpd
顯示: enabled
4.1.4 啟用ntp服務
[[email protected] ~]# systemctl start ntpd
查看ntpd進程
[[email protected] ~]# ps -ef | grep ntpd
ntp 1185 1 0 03:50 ? 00:00:00 /usr/sbin/ntpd -u ntp:ntp -groot 1663 1136 0 04:35 pts/2 00:00:00 grep –color=auto ntp
進程存在,說明服務已經正常啟動
4.1.5 設置防火墻,放行ntp協議請求
提前將防火墻關閉即可
4.1.6 設置硬件時間4.1.6.1 對時間的解釋
linux的時間分為系統時間和硬件時間 。?系統時間:通常在開機時復制硬件時間,之后獨立運行并保存了時間、時區和夏令時設置 。通過date命令設置 。?硬件時間:(RTC、Real-Time Clock),CMOS時間,在主板上靠電池供電,僅保存時期時間數值 。通過hwclock命令設置,在這里,我們用系統時間同步硬件時間:hwclock -w?同步前需要測試ntp上層服務器的連通性4.1.6.2 查看ntp的情況
[[email protected] ~]# ntpq -p
remoterefidst t when poll reachdelayoffsetjitter?==============================================================================+electrode.felix 89.231.96.832 u56641286.2359.1330.971*undefined.hostn 127.67.113.922 u56641202.865-7.22413.201-de-user.deepini 195.13.23.53 u58641273.95316.6892.172+ntp5.flashdance 192.36.143.1532 u55641321.71110.6394.733LOCAL(0).LOCL.10 l646420.0000.0000.000解釋:
remote:即NTP主機的IP或主機名稱.注意最左邊是+表示目前正在起作用的上層NTP,如果是*表示這個也連接上了,不過是作為次要聯機的NTP主機refid:參考的上一層NTP主機的地址st:即stratum階層t:是連接類型.u代表單播(unicast)l代表本地(local) ,其他的還有多播(multicast),廣播(broadcast)when:這個時間之前剛剛做過時間同步poll:下次更新在幾秒之后reach:已經向上層NTP服務器要求更新的次數delay:網絡傳輸過程中的延遲時間offset:時間補償的結果jitter:Linux系統時間和Bios硬件時間的差異時間4.1.6.3 執行同步
[[email protected] ~]# hwclock -w
4.1.6.4 測試
[[email protected] conf]# ntpstatsynchronised to NTP server (78.46.102.180) at stratum 3 time correct to within 189 ms polling server every 64 s
說明本地已經與時間服務器實現了同步
4.2 客戶端4.2.1 安裝ntp服務和ntpdate工具
[[email protected] ~]# yum -y install ntp ntpdate
4.2.2 方法一
1 配置用于同步的服務器
先執行hwclock -w 讓系統時間和bios時間同步.
[[email protected] ~]# hwclock -w
再執行下面的命令
[[email protected] ~]# echo “server 192.168.10.200” >/etc/ntp.conf
2 重啟服務以使配置生效,之后大概要等10分鐘左右,才會同步成功
[[email protected] ~]# systemctl enable ntpd
[[email protected] ~]# systemctl restart ntpd
3 這樣做的好處:
a 客戶端的ntpd服務始終運行著,定期同步時間,不用我們每次都手動同步或者寫定時器b ntpd服務是慢慢改變時間直至標準時間4 注意點:
最好先執行hwclock -w,否則如果bios時間和系統時間差異超過了30分鐘,就會報錯
FAQ:系統報錯-Sep 25 12:23:33 localhost kerne: set_rtc_mmss: can’t update from 3 to 22
4.2.3 方法二
1 進行客戶端與服務器端的時間同步
[[email protected] ~]# systemctl enable ntpdate
[[email protected] ~]# /usr/sbin/ntpdate -u 192.168.10.200
28 Mar 04:54:43 ntpdate[1727]: adjust time server 192.168.10.200 offset 0.000001 sec
2 讓系統時間和硬件時間同步
[[email protected] ~]# hwclock -w
3 可以設置定時器,定時執行,因為ntpdate每次執行完就失效了.
[[email protected] ~]# crontab -e
每天和主機同步一次
10 23 * * * (/usr/sbin/ntpdate -u 192.168.10.200 && /sbin/hwclock -w) &> /var/log/ntpdate.log
4 常見錯誤分析
常見錯誤分析: 客戶端 執行ntpdate master顯示:no server suitable for synchronization found原因:錯誤1.Server dropped: Strata too high(在客戶端執行ntpdate-dmaster可以看到,且顯示“stratum 16” 。而正常情況下stratum這個值得范圍是“0~15”)解決:這是因為NTP server還沒有和其自身或者它的server同步上 。以下的定義是讓NTP Server和其自身保持同步,如果在/ntp.conf中定義的server都不可用時,將使用local時間作為ntp服務提供給ntp客戶端 。server 127.127.1.0fudge 127.127.1.0 stratum 8