環(huán)境準(zhǔn)備:
- 服務(wù)器集群
我準(zhǔn)備了4臺(tái)虛擬機(jī)点晴,主機(jī)名分別是node01霍掺、node02匾荆、node03、node04杆烁,操作系統(tǒng)版本為CentOS-6.6
虛擬機(jī)集群的準(zhǔn)備牙丽,可以參考以下兩篇文章:
在Windows中安裝一臺(tái)Linux虛擬機(jī)
通過(guò)已有的虛擬機(jī)克隆四臺(tái)虛擬機(jī)
1. 查看系統(tǒng)當(dāng)前時(shí)間和時(shí)區(qū)
# 查看時(shí)間
[root@hadoop01 ~]# date
Thu Nov 23 04:37:46 CST 2017
[root@hadoop01 ~]# date -R # 顯示時(shí)區(qū)
Thu, 23 Nov 2017 04:37:40 +0800
[root@hadoop01 ~]# date '+%Y-%m-%d %H:%M:%S' # 按照指定格式顯示日期時(shí)間
2017-11-23 04:38:15
# 查看時(shí)區(qū)
[root@hadoop01 ~]# cat /etc/sysconfig/clock
ZONE="Asia/Shanghai"
2. 修改時(shí)區(qū)
要做到服務(wù)器集群的時(shí)間同步,集群中各臺(tái)機(jī)器的時(shí)區(qū)必須相同的兔魂,我們?cè)趪?guó)內(nèi)就使用中國(guó)時(shí)區(qū)烤芦,如果你的機(jī)器的時(shí)區(qū)不是"Asia/Shanghai",需要修改時(shí)區(qū)
CentOS 中時(shí)區(qū)是以文件形式存在析校,當(dāng)前正在使用的時(shí)區(qū)文件位于
/etc/localtime
构罗,其他時(shí)區(qū)文件則位于/usr/share/zoneinfo
下,中國(guó)時(shí)區(qū)的文件全路徑是/usr/share/zoneinfo/Asia/Shanghai
(1) 如果系統(tǒng)中有/usr/share/zoneinfo/Asia/Shanghai
這個(gè)文件
要更改時(shí)區(qū)智玻,直接使用如下命令就OK
cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
(2) 如果沒(méi)有 Asia/Shanghai 時(shí)區(qū)文件
需要使用 tzselect
命令去生成時(shí)區(qū)文件遂唧,生成好的時(shí)區(qū)文件就在/usr/share/zoneinfo 目錄下,具體步驟去下:
<1> 執(zhí)行tzselect命令
[root@hadoop01 ~]# tzselect
Please identify a location so that time zone rules can be set correctly.
Please select a continent or ocean.
1) Africa
2) Americas
3) Antarctica
4) Arctic Ocean
5) Asia
6) Atlantic Ocean
7) Australia
8) Europe
9) Indian Ocean
10) Pacific Ocean
11) none - I want to specify the time zone using the Posix TZ format.
#? 5 # 選亞洲
Please select a country.
1) Afghanistan 18) Israel 35) Palestine
2) Armenia 19) Japan 36) Philippines
3) Azerbaijan 20) Jordan 37) Qatar
4) Bahrain 21) Kazakhstan 38) Russia
5) Bangladesh 22) Korea (North) 39) Saudi Arabia
6) Bhutan 23) Korea (South) 40) Singapore
7) Brunei 24) Kuwait 41) Sri Lanka
8) Cambodia 25) Kyrgyzstan 42) Syria
9) China 26) Laos 43) Taiwan
10) Cyprus 27) Lebanon 44) Tajikistan
11) East Timor 28) Macau 45) Thailand
12) Georgia 29) Malaysia 46) Turkmenistan
13) Hong Kong 30) Mongolia 47) United Arab Emirates
14) India 31) Myanmar (Burma) 48) Uzbekistan
15) Indonesia 32) Nepal 49) Vietnam
16) Iran 33) Oman 50) Yemen
17) Iraq 34) Pakistan
#? 9 # 選中國(guó)
Please select one of the following time zone regions.
1) Beijing Time
2) Xinjiang Time
#? 1 # 只能選擇北京時(shí)間和新疆時(shí)間吊奢,但即使選擇了北京時(shí)間盖彭,最后生成的也是上海時(shí)區(qū)的文件
The following information has been given:
China
Beijing Time
Therefore TZ='Asia/Shanghai' will be used.
Local time is now: Thu Nov 23 04:44:37 CST 2017.
Universal Time is now: Wed Nov 22 20:44:37 UTC 2017.
Is the above information OK?
1) Yes
2) No
#? 1 # 確認(rèn)
You can make this change permanent for yourself by appending the line
TZ='Asia/Shanghai'; export TZ
to the file '.profile' in your home directory; then log out and log in again.
Here is that TZ value again, this time on standard output so that you
can use the /usr/bin/tzselect command in shell scripts:
Asia/Shanghai # 很無(wú)奈,不是北京页滚,但問(wèn)題不大
<2> 執(zhí)行cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
這個(gè)命令
<3> 執(zhí)行cat /etc/sysconfig/clock
命令驗(yàn)證谬泌,如果ZONE的值不是Asia/Shanghai
,手動(dòng)改為這個(gè)值逻谦,注意掌实,不執(zhí)行第<1>步直接手動(dòng)修改是無(wú)效果的
3. 集群時(shí)間同步方法一:手動(dòng)修改
使用date -s
命令來(lái)修改系統(tǒng)時(shí)間
[root@node01 ~]# date -s 12/25/2016
[root@node01 ~]# date -s 19:57:30
[root@node01 ~]# date -s "2017-11-22 20:50:30"
# 手動(dòng)修改后,使用以下命令邦马,把系統(tǒng)時(shí)間寫(xiě)入主板贱鼻,這樣,即使服務(wù)器關(guān)機(jī)或斷電滋将,時(shí)間也會(huì)更新
[root@node01 ~]# hwclock -w
讓集群所有的服務(wù)器的時(shí)間同步邻悬,就用遠(yuǎn)程連接工具連接所有服務(wù)器,然后在所有的服務(wù)器中同時(shí)執(zhí)行date -s
命令設(shè)置時(shí)間随闽,然后在所有的服務(wù)器中執(zhí)行hwclock -w
命令即可
4. 集群時(shí)間同步方法二:自動(dòng)同步網(wǎng)絡(luò)時(shí)間(需要網(wǎng)絡(luò))
(1) 通過(guò)外網(wǎng)同步時(shí)間
[root@node01 ~]# ntpdate time.nist.gov
# 或者
[root@node01 ~]# ntpdate 192.43.244.18
美國(guó)標(biāo)準(zhǔn)技術(shù)院時(shí)間服務(wù)器:time.nist.gov(192.43.244.18)
上海交通大學(xué)網(wǎng)絡(luò)中心NTP服務(wù)器地址:ntp.sjtu.edu.cn(202.120.2.101)
中國(guó)國(guó)家授時(shí)中心服務(wù)器地址:cn.pool.ntp.org(210.72.145.44)
若以上提供的網(wǎng)絡(luò)時(shí)間服務(wù)器不可用父丰,請(qǐng)自行上網(wǎng)尋找可用的網(wǎng)絡(luò)時(shí)間服務(wù)器
(2)設(shè)置自動(dòng)執(zhí)行任務(wù),定時(shí)更新時(shí)間
<1> 使用命令:crontab -e
[root@node01 ~]# crontab -e
<2> 然后往里加入一行內(nèi)容
*/10 * * * * ntpdate 202.120.2.101
上面的配置表示,每隔十分鐘從 202.120.2.101
該時(shí)間服務(wù)器同步一次時(shí)間蛾扇。
<3> 保存退出
(3) 說(shuō)明
以上兩步操作可以讓node01這個(gè)服務(wù)器每隔10分鐘去指定的服務(wù)器同步時(shí)間攘烛,如果需要讓集群中的所有服務(wù)器(hadoop01-hadoop04)時(shí)間同步,那么每臺(tái)服務(wù)器都要做以上兩步操作镀首。
5. 集群時(shí)間同步方法三:局域網(wǎng)內(nèi)選一臺(tái)服務(wù)器作為時(shí)間服務(wù)器坟漱,其他服務(wù)器從局域網(wǎng)內(nèi)的時(shí)間服務(wù)器更新時(shí)間,同時(shí)局域網(wǎng)內(nèi)的時(shí)間服務(wù)器向外網(wǎng)時(shí)間服務(wù)器同步時(shí)間
node01的IP為192.168.21.101更哄,讓它作為時(shí)間服務(wù)器芋齿,192.168.21.0局域網(wǎng)內(nèi)的所有服務(wù)器都向它同步時(shí)間,而node01這臺(tái)時(shí)間服務(wù)器本身成翩,向外網(wǎng)時(shí)間服務(wù)器同步時(shí)間(比如中國(guó)國(guó)家授時(shí)中心服務(wù)器)
(1) 選擇一臺(tái)服務(wù)器作為NTP服務(wù)器
我用node01
(2) 給局域網(wǎng)所有需要同步時(shí)間的服務(wù)器安裝ntp服務(wù)
yum install ntp -y
(3) 給所有的需要同步時(shí)間的機(jī)器(包括node01)設(shè)置ntp服務(wù)開(kāi)機(jī)自啟動(dòng)觅捆,但不要啟動(dòng)服務(wù)
chkconfig ntpd on
(4) 修改node01的配置文件/etc/ntp.conf
我去掉了所有的默認(rèn)注釋,對(duì)其中的修改寫(xiě)了自己的注釋麻敌,沒(méi)有寫(xiě)注釋的是默認(rèn)配置
driftfile /var/lib/ntp/drift
restrict default kod nomodify notrap nopeer noquery
restrict -6 default kod nomodify notrap nopeer noquery
restrict 127.0.0.1
restrict -6 ::1
# 允許192.168.21.0網(wǎng)段內(nèi)所有機(jī)器從node01同步時(shí)間
restrict 192.168.21.0 mask 255.255.255.0 nomodify notrap
# node01通過(guò)外網(wǎng)同步時(shí)間的服務(wù)器列表惠拭,注釋掉的是默認(rèn)的
# server 0.centos.pool.ntp.org iburst
# server 1.centos.pool.ntp.org iburst
# server 2.centos.pool.ntp.org iburst
# server 3.centos.pool.ntp.org iburst
# 中國(guó)國(guó)家授時(shí)中心服務(wù)器地址
server 0.cn.pool.ntp.org
server 1.cn.pool.ntp.org
server 2.cn.pool.ntp.org
server 3.cn.pool.ntp.org
# 允許上層時(shí)間服務(wù)器主動(dòng)修改本機(jī)時(shí)間
restrict 0.cn.pool.ntp.org nomodify notrap noquery
restrict 1.cn.pool.ntp.org nomodify notrap noquery
restrict 2.cn.pool.ntp.org nomodify notrap noquery
restrict 3.cn.pool.ntp.org nomodify notrap noquery
# 外部時(shí)間服務(wù)器不可用時(shí),以本地時(shí)間作為時(shí)間服務(wù)
server 127.127.1.0
fudge 127.127.1.0 stratum 10
includefile /etc/ntp/crypto/pw
keys /etc/ntp/keys
# 同步時(shí)間后庸论,寫(xiě)到硬件中
SYNC_HWCLOCK=yes
(5) 啟動(dòng)ntpd服務(wù)之前职辅,手動(dòng)同步一下時(shí)間
因?yàn)閚tpd服務(wù)開(kāi)啟之后,就不能手動(dòng)同步時(shí)間了聂示,那么為什么要先手動(dòng)同步時(shí)間呢域携?
當(dāng)server(中國(guó)國(guó)家授時(shí)中心服務(wù)器)與client(node01)之間的時(shí)間誤差過(guò)大時(shí)(可能是1000秒),node01去同步時(shí)間可能對(duì)系統(tǒng)和應(yīng)用帶來(lái)不可預(yù)知的問(wèn)題鱼喉,node01將停止時(shí)間同步秀鞭!所以如果發(fā)現(xiàn)node01啟動(dòng)之后時(shí)間并不進(jìn)行同步時(shí),應(yīng)該考慮到可能是時(shí)間差過(guò)大引起的扛禽,此時(shí)需要先手動(dòng)進(jìn)行時(shí)間同步锋边!
(6) 啟動(dòng)node01的ntpd服務(wù)
[root@node01 ~]# service ntpd start
(7) 檢查ntp端口是否已經(jīng)開(kāi)啟
[root@node01 ~]# netstat -unlnp | grep ntpd
看到紅色框中的內(nèi)容,表示連接和監(jiān)聽(tīng)已正確
(7) 查看網(wǎng)絡(luò)中的NTP服務(wù)器编曼,顯示客戶端和每個(gè)服務(wù)器的關(guān)系
[root@node01 ~]# ntpq -p
這里的前4行就是我們配置的4個(gè)中國(guó)國(guó)家授時(shí)中心的服務(wù)器的信息
# 中國(guó)國(guó)家授時(shí)中心服務(wù)器地址
server 0.cn.pool.ntp.org
server 1.cn.pool.ntp.org
server 2.cn.pool.ntp.org
server 3.cn.pool.ntp.org
最后一行就是本地時(shí)間服務(wù)的信息
# 外部時(shí)間服務(wù)器不可用時(shí)豆巨,以本地時(shí)間作為時(shí)間服務(wù)
server 127.127.1.0
fudge 127.127.1.0 stratum 10
下面對(duì)每個(gè)列的意義進(jìn)行說(shuō)明:
- 每個(gè)remote地址前的符號(hào)
*
:響應(yīng)的NTP服務(wù)器和最精確的服務(wù)器
+
:響應(yīng)這個(gè)查詢請(qǐng)求的NTP服務(wù)器
blank(什么都沒(méi)有)
:沒(méi)有響應(yīng)的NTP服務(wù)器
說(shuō)明
ntp服務(wù)啟動(dòng)后,一般需要5-10分鐘左右的時(shí)候才能與外部時(shí)間服務(wù)器開(kāi)始同步時(shí)間掐场,所以需要等待幾分鐘才能看到正常的現(xiàn)象往扔,否則你看到的是響應(yīng)的NTP服務(wù)器和最精確的服務(wù)器是LOCAL(0),最后一行前面是*
符號(hào)熊户,其他都是空白 - remote
響應(yīng)這個(gè)請(qǐng)求的NTP服務(wù)器的名稱 - refid
NTP服務(wù)器使用的更高一級(jí)服務(wù)器的名稱 - st
正在響應(yīng)請(qǐng)求的NTP服務(wù)器的級(jí)別 - when
上一次成功請(qǐng)求之后到現(xiàn)在的秒數(shù) - poll
本地和遠(yuǎn)程服務(wù)器多少時(shí)間進(jìn)行一次同步萍膛,單位秒,在一開(kāi)始運(yùn)行NTP的時(shí)候這個(gè)poll值會(huì)比較小嚷堡,服務(wù)器同步的頻率大蝗罗,可以盡快調(diào)整到正確的時(shí)間范圍,之后poll值會(huì)逐漸增大,同步的頻率也就會(huì)相應(yīng)減小 - reach
用來(lái)測(cè)試能否和服務(wù)器連接串塑,是一個(gè)八進(jìn)制值沼琉,每成功連接一次它的值就會(huì)增加 - delay
從本地機(jī)發(fā)送同步要求到ntp服務(wù)器的往返時(shí)間 - offset
主機(jī)通過(guò)NTP時(shí)鐘同步與所同步時(shí)間源的時(shí)間偏移量,單位為毫秒拟赊,offset越接近于0刺桃,主機(jī)和ntp服務(wù)器的時(shí)間越接近
jitter 統(tǒng)計(jì)了在特定個(gè)連續(xù)的連接數(shù)里offset的分布情況粹淋。簡(jiǎn)單地說(shuō)這個(gè)數(shù)值的絕對(duì)值越小吸祟,主機(jī)的時(shí)間就越精確
(8) 查看node01的ntp服務(wù)狀態(tài)
[root@node01 ~]# ntpstat
synchronised to NTP server (203.135.184.123) at stratum 2
time correct to within 699 ms
polling server every 64 s
同樣,服務(wù)啟動(dòng)后需要等待5-10分鐘才能看到這個(gè)正常的信息
到這里桃移,我們局域網(wǎng)內(nèi)的時(shí)間服務(wù)器node01就已經(jīng)配置完畢了
(9) 配置客戶端(node02-node04)向node01同步時(shí)間
<1> 修改每臺(tái)客戶端的/etc/ntp.conf
配置文件
文件內(nèi)容如下:
同樣屋匕,沒(méi)有寫(xiě)注釋的都是默認(rèn)的配置
driftfile /var/lib/ntp/drift
restrict default kod nomodify notrap nopeer noquery
restrict -6 default kod nomodify notrap nopeer noquery
restrict 127.0.0.1
restrict -6 ::1
# 默認(rèn)的服務(wù)器列表注釋掉
# server 0.centos.pool.ntp.org iburst
# server 1.centos.pool.ntp.org iburst
# server 2.centos.pool.ntp.org iburst
# server 3.centos.pool.ntp.org iburst
# 從node01中同步時(shí)間
server 192.168.21.101
# 允許node01修改本地時(shí)間
restrict 192.168.21.101 nomodify notrap noquery
# 如果node01不可用,用本地的時(shí)間服務(wù)
server 127.127.1.0
fudge 127.127.1.0 stratum 10
includefile /etc/ntp/crypto/pw
keys /etc/ntp/keys
# 同步時(shí)間后寫(xiě)到硬件中
SYNC_HWCLOCK=yes
<2> 每臺(tái)客戶端在啟動(dòng)ntpd服務(wù)之前借杰,手動(dòng)同步一下時(shí)間
原因同(5)
[root@node02 ~]# ntpdate -u node01
[root@node03 ~]# ntpdate -u node01
[root@node04 ~]# ntpdate -u node01
<3> 啟動(dòng)每臺(tái)客戶端的ntpd服務(wù)
[root@node02 ~]# service ntpd start
[root@node03 ~]# service ntpd start
[root@node03 ~]# service ntpd start
<4> 等待5-10分鐘后过吻,查看每個(gè)客戶端的狀態(tài)
到這里,利用局域網(wǎng)內(nèi)一臺(tái)時(shí)間服務(wù)器來(lái)同步整個(gè)集群時(shí)間的全部配置就已經(jīng)完成
(10) 測(cè)試,在4臺(tái)服務(wù)器同時(shí)執(zhí)性date命令
[root@node01 ~]# date '+%Y-%m-%d %H:%M:%S'
2017-12-21 20:10:32
[root@node02 ~]# date '+%Y-%m-%d %H:%M:%S'
2017-12-21 20:10:32
[root@node03 ~]# date '+%Y-%m-%d %H:%M:%S'
2017-12-21 20:10:32
[root@node04 ~]# date '+%Y-%m-%d %H:%M:%S'
2017-12-21 20:10:32
說(shuō)明:若以上提供的網(wǎng)絡(luò)時(shí)間服務(wù)器不可用蔗衡,請(qǐng)自行上網(wǎng)尋找可用的網(wǎng)絡(luò)時(shí)間服務(wù)器纤虽,另外需要關(guān)閉各服務(wù)器的防火墻,才能進(jìn)行時(shí)間同步
參考文章:
內(nèi)網(wǎng)環(huán)境NTP服務(wù)及時(shí)間同步(CentOS6.x)配置和部署
配置NTP服務(wù)ntpd/ntp.conf(搭建Hadoop集群可參考)