CentOS 7 ปรับเวลาให้ตรงมาตรฐาน ntp ด้วย chrony

เวลาเป็นสิ่งสำคัญไม่ใช่แค่มนุษย์เท่านั้น เครื่องคอมพิวเตอร์โดยเฉพาะที่ทำหน้าที่เป็นเซิร์ฟเวอร์ เวลาในเครื่องสมควรเป็นเวลามาตรฐาน ตรงกับเครื่องอื่นๆ ที่ทำงานร่วมกัน

วิธีหนึ่งที่นิยมคือ ใช้โปรแกรมที่รองรับโปรโตคอล NTP ในการปรับเวลาของเครื่องให้ตรงกับ NTP Server ที่ใช้เป็นเวลามาตรฐานโลก ซึ่งเปิดบริการให้เราสามารถคอนฟิกเครื่องเราให้ไปเทียบเวลาได้

ใน CentOS 7 หรือ Red Hat 7 Enterprise ทาง Red Hat แนะนำให้ใช้ chronyd เพราะมีคุณสมบัติหลายอย่างที่ดีกว่า ntpd โดยเฉพาะการปรับเวลาให้ตรงได้เร็วกว่า

ในที่นี้ขออธิบายการติดตั้งและคอนฟิก chrony เพื่อให้เครื่องของเรา sync เวลากับ NTP Server เพื่อให้มีเวลามาตรฐานสากลได้


ตั้งค่า Timezone ให้ถูกต้อง

ก่อนที่จะคอนฟิก ntp เพื่อให้เครื่องมีเวลาตรงกับมาตรฐาน ต้องตั้งค่า timezone ของเครื่องให้ถูกต้องก่อน

บน CentOS 7 สามารถใช้คำสั่ง timedatectl เพื่อดูวันเวลา ค่า timezone ที่เลือกไว้

[alice@cent7 ~]$ timedatectl
      Local time: Sat 2015-06-27 22:30:08 SGT
  Universal time: Sat 2015-06-27 14:30:08 UTC
        Timezone: Asia/Singapore (SGT, +0800)
     NTP enabled: n/a
NTP synchronized: no
 RTC in local TZ: no
      DST active: n/a

หากตอนติดตั้ง CentOS 7 เลือก Timezone ไว้ไม่ถูกต้อง เช่นเลือกไว้เป็น Asia/Singapore ซึ่งเวลาจะเร็วกว่าประเทศไทย 1 ชั่วโมง

หากต้องการเปลี่ยนให้เป็นเวลาไทย ซึ่งใช้ชื่อ Timezone: Asia/Bangkok สามารถใช้คำสั่ง timedatectl ระบุออปชัน set-timezone ตามด้วยชื่อ Timezone ที่ต้องการ

การเปลี่ยนค่าต้องใช้ root หรือ sudo เพื่อใช้สิทธิเป็น root

[root@cent7 ~]# timedatectl set-timezone Asia/Bangkok

ลองใช้คำสั่ง timedatectl อีกครั้ง เพื่อดูค่าคอนฟิก Timezone ที่เปลี่ยนไป

[alice@cent7 ~]$ timedatectl
      Local time: Sat 2015-06-27 21:35:35 ICT
  Universal time: Sat 2015-06-27 14:35:35 UTC
        Timezone: Asia/Bangkok (ICT, +0700)
     NTP enabled: n/a
NTP synchronized: no
 RTC in local TZ: no
      DST active: n/a

ติดตั้งและคอนฟิก chrony

ในหน้าจอติดตั้ง CentOS 7 Installation จะมีหน้าจอให้เลือกคอนฟิก NTP ได้ (ภายใต้หัวข้อ DATE & TIME) แต่ต้องคอนฟิกค่าในส่วน NETWORK & HOSTNAME ให้ถูกต้องก่อนเพื่อให้เครื่องสามารถเชื่อมต่อกับ NTP Server ได้

ตัวอย่างหน้าจอคอนฟิก NTP ตอนติดตั้ง CentOS 7  คลิกปุ่มข้างคำว่า Network Time ให้เป็นค่า ON

กดปุ่มรูปเครื่องมือ เพื่อดูรายชื่อ NTP Servers

n01-DATE-TIME

n02-ntp-list

หรือหากไม่ได้เลือกคอนฟิก NTP ตอนติดตั้ง CentOS 7 ไว้ สามารถติดตั้งเองภายหลังได้

ใช้คำสั่ง yum เพื่อติดตั้ง chrony

[root@cent7 ~]# yum install chrony

ไฟล์คอนฟิกของ chrony คือ /etc/chrony.conf ดีฟอลต์จากการติดตั้ง จะมีรายชื่อเซิร์ฟเวอร์ NTP Server ที่เปิดบริการสาธารณะ ให้เราไปเทียบเวลาได้

[root@cent7 ~]# cat /etc/chrony.conf
# Use public servers from the pool.ntp.org project.
# Please consider joining the pool (http://www.pool.ntp.org/join.html).
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
...

คอนฟิกดีฟอลต์สามารถใช้งานได้เลย แต่เครื่องเราต้องต่ออินเทอร์เน็ต เพื่อติดต่อกับเซิร์ฟเวอร์เหล่านี้ได้

ใช้คำสั่ง systemctl ระบุออปชัน start เพื่อรัน chronyd

[root@cent7 ~]# systemctl start chronyd

ใช้คำสั่ง systemctl ระบุออปชัน status เพื่อดูสถานะการรัน chronyd

[root@cent7 ~]# systemctl status chronyd
chronyd.service - NTP client/server
   Loaded: loaded (/usr/lib/systemd/system/chronyd.service; enabled)
   Active: active (running) since Sat 2015-06-27 21:46:31 ICT; 1min 48s ago
  Process: 2583 ExecStartPost=/usr/libexec/chrony-helper add-dhclient-servers (code=exited, status=0/SUCCESS)
  Process: 2580 ExecStart=/usr/sbin/chronyd -u chrony $OPTIONS (code=exited, status=0/SUCCESS)
 Main PID: 2582 (chronyd)
   CGroup: /system.slice/chronyd.service
 └─2582 /usr/sbin/chronyd -u chrony

Jun 27 21:46:31 cent7.example.com systemd[1]: Starting NTP client/server...
Jun 27 21:46:31 cent7.example.com chronyd[2582]: chronyd version 1.29.1 starting
Jun 27 21:46:31 cent7.example.com chronyd[2582]: Linux kernel major=3 minor=10 patch=0
Jun 27 21:46:31 cent7.example.com chronyd[2582]: hz=100 shift_hz=7 freq_scale=1.00000000 nominal_tick=10000...ll=2
Jun 27 21:46:31 cent7.example.com chronyd[2582]: Generated key 1
Jun 27 21:46:31 cent7.example.com systemd[1]: Started NTP client/server.
Jun 27 21:46:37 cent7.example.com chronyd[2582]: Selected source 203.158.118.8
Jun 27 21:46:37 cent7.example.com chronyd[2582]: System clock wrong by 52.475834 seconds, adjustment started
Jun 27 21:47:29 cent7.example.com chronyd[2582]: System clock was stepped by 52.476 seconds

เราสามารถใช้คำสั่ง chronyc ระบุออปชัน tracking เพื่อดูรายละเอียดการตั้งค่าเวลา

[alice@cent7 ~]$ chronyc tracking
Reference ID    : 203.158.118.8 (x220.ip13.me)
Stratum         : 3
Ref time (UTC)  : Sat Jun 27 14:49:40 2015
System time     : 0.000608020 seconds slow of NTP time
Last offset     : -0.000914266 seconds
RMS offset      : 1.721436381 seconds
Frequency       : 27888.445 ppm slow
Residual freq   : 0.022 ppm
Skew            : 13.183 ppm
Root delay      : 0.029936 seconds
Root dispersion : 0.019448 seconds
Update interval : 64.2 seconds
Leap status     : Normal

จากตัวอย่างด้านบน เครื่องของเราจะใช้เครื่องเซิร์ฟเวอร์ 203.158.118.8 (x220.ip13.me) เป็นมาตรฐาน (Reference) ในการปรับเวลาให้ตรง โดยขณะที่รันคำสั่ง เวลาของเครื่องเรา ​(System time) จะช้ากว่า (slow of NTP time) 0.000608020 วินาที

ข้อมูลอ้างอิง

Leave a Reply

Your email address will not be published.