รับทําเว็บไซต์ รับทําseo
บทความที่น่าสนใจ

บทความ ที่น่าสนใจ

Linux Server (CentOS) : ตั้งเวลาเครื่องให้ตรงมาตรฐานด้วย NTP

    การเปลี่ยนวันเวลาบนลีนุกซ์ด้วยคำสั่ง date นั้น เวลาที่ตั้งอาจคลาดเคลื่อนกับเวลามาตรฐานไปพอสมควร อาจผิดเป็นหน่วยนาที หรือวินาที ซึ่งบางระบบอาจไม่สามารถยอมรับความคลาดเคลื่อนขนาดนี้ได้

    วิธีที่ดีที่สุดที่จะตั้งเวลาให้ตรงกับมาตรฐานจริงๆ คือต้องใช้ NTP

    NTP ย่อมาจาก Network Time Protocol ใช้ในการปรับเวลาของเครื่องต่างๆ ที่อยู่บนเครือข่ายให้มีเวลาตรงกันตลอดเวลา

    โดยเครื่องจะรัน ntpd เพื่อใช้เทียบเวลากับเซิร์ฟเวอร์ที่คอนฟิกไว้อยู่เรื่อยๆ ตลอดเวลา ซึ่งถ้าเวลาไม่ตรง โปรแกรม ntpd จะค่อยๆ ปรับเวลาของเครื่อง client ให้ใกล้เคียงเรื่อยๆ จนตรงกับ server ในที่สุด

    ในการใช้งาน จะมีวิธีการอ้างอิงเวลาเป็นลำดับขั้นที่เรียกว่า stratum โดยบนเครื่องคอมพิวเตอร์ค่าเริ่มต้นจะตั้งแต่ 1 ซึ่งถือเป็นเวลามาตรฐานกลาง เครื่องที่ทำหน้าที่เป็น stratum 1 นั้น จะมีกระบวนการเทียบเวลาจากอุปกรณ์ชนิดอื่นๆ ที่ไม่ใช่คอมพิวเตอร์  เช่น GPS เป็นต้น อุปกรณ์จำพวกนี้ ถือว่าเป็น stratum 0

    ตอนคอนฟิก ถ้าเราไม่มีอุปกรณ์ที่เป็น stratum 0 แล้ว เราก็ต้องต่ออินเตอร์เน็ต เพื่ออ้างอิง (sync) เวลามาจากเครื่องที่เป็น stratum 1 และเมื่อเวลาตรงกันแล้ว เครื่องของเราก็ จะถือว่าเป็น stratum 2 แล้วถ้าเครื่องที่มาอ้างอิงเวลาจากเครื่องนี้อีกที ก็จัดเป็น stratum 3, 4 เรื่อยๆ

    ประโยชน์ในการจัดเป็น stratum คือจะลดโหลดที่เกิดขึ้น คือแทนที่ทุกเครื่องจะไปอ้างอิง (sync) เวลามาจาก stratum 1 ก็กระจายโหลดไป ทั้งลดโหลดบน stratum 1 เอง แล้วก็ประหยัด bandwidth อินเตอร์เน็ตด้วย

    คำแนะนำ : ในทางปฎิบัติ แนะนำให้คอนฟิก NTP บนเครื่องเดียวหรือสองเครื่อง ที่ต่ออินเตอร์เน็ตได้ ให้ไปเทียบเวลาจาก  stratum 1 ส่วนเครื่องอื่นๆ ในสำนักงานของเรา ก็คอนฟิกเพื่อมาเทียบเวลาจากเครื่องนี้แทน หรืออาจจะมี ลำดับ 3, 4 ต่อไปอีกก็ได้ แล้วแต่จำนวนเครื่องที่มีอยู่ เช่น มีเครื่องที่ทำหน้าที่ stratum 2 ที่ต่ออินเตอร์เน็ตอยู่ 2 เครื่อง แล้วมี stratum 3 อีกจำนวนหนึ่งของแต่ละฝ่าย ส่วนเครื่อง client ที่อยู่ในฝ่ายก็คอนฟิกให้เทียบเวลาจาก stratum 3 อีกที ก็จะเป็น statum 4

    โดยดีฟอลต์แล้ว NTP จะติดตั้งมาพร้อมกับ CentOS 6 และจะมีคอนฟิกไฟล์หลักคือ /etc/ntp.conf ในคอนฟิกจะอ้างอิงเวลากับเซิร์ฟเวอร์จำนวน 3 ตัว พร้อมใช้งานได้เลย หากเครื่องเราต่ออินเตอร์เน็ตได้

    ตัวอย่างคอนฟิก NTP ที่ติดตั้งมากับ CentOS 6.2

    [root@cent6 ~]# cat /etc/ntp.conf # For more information about this file, see the man pages # ntp.conf(5), ntp_acc(5), ntp_auth(5), ntp_clock(5), ntp_misc(5), ntp_mon(5). ... # 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 server 1.centos.pool.ntp.org server 2.centos.pool.ntp.org ...

    หากเครื่องที่เราจะคอนฟิกไม่สามารถเชื่อมต่ออินเตอร์เน็ตได้ หรือต้องการแก้ไข NTP server ให้ชี้ไปยัง IP อื่น ก็สามารถทำได้โดยลบคอนฟิก server ทั้งสามบรรทัดนี้ (อาจใส่เป็นเครื่องหมาย # นำหน้าคอนฟิก) แล้วเพิ่มคอนฟิก server ตามด้วย IP ของเซิร์ฟเวอร์ที่เราต้องการไป sync ด้วย เช่น

    #server 0.centos.pool.ntp.org #server 1.centos.pool.ntp.org #server 2.centos.pool.ntp.org server 192.168.1.1

    รันเซอร์วิส ntpdate, ntp

    หลังจากแก้ไขคอนฟิก ขั้นต่อไปคือการรัน service โดยจะมี ntpdate และ ntpd ที่ต้องรัน

    ntpdate จะเป็นเซอร์วิสที่รันเพื่อปรับเวลาของเครื่องให้ใกล้เคียงกับเซิร์ฟเวอร์ที่ เราคอนฟิกไว้ มากที่สุด จะทำให้เวลาของเครื่องเปลี่ยนไปทันที เหมือนกับคำสั่ง date

    รันเซอร์วิส ntpdate

    [root@cent6 ~]# service ntpdate start ntpdate: Synchronizing with time server:                   [  OK  ]

    ส่วนการปรับโดยละเอียดจะเป็นหน้าที่ของ ntpd ซึ่งจะรันเป็น daemon อยู่ตลอดเวลา ค่อยๆ ปรับเวลาให้ตรงกับ server ซึ่งบางครั้งต้องใช้เวลานานพอสมควร

    รันเซอร์วิส ntpd เพื่อสตาร์ต ntpd

    [root@cent6 ~]# service ntpd start Starting ntpd:                                             [  OK  ]

    ตรวจสอบสถานะการ sync

    เราสามารถใช้คำสั่ง ntpstat เพื่อตรวจสอบสถานะการ ลำดับ stratum เท่าไร

    [root@cent6 ~]# ntpstat unsynchronised   time server re-starting    polling server every 64 s

    ถ้าขึ้น “unsynchronised” แปลว่าเวลาของเครื่องเรายังไม่ตรง

    เมื่อเวลาผ่านไปซักพัก  เครื่องก็น่าจะสามารถปรับเวลาให้ตรงได้แล้ว อาจใช้ tail -f ดูไฟล์ /var/log/messages

    เมื่อ sync ได้แล้วจะมีข้อความ “synchronized to …”  พร้อมรายงาน IP และ stratum ของเซิร์ฟเวอร์ที่ sync ได้ ตัวอย่างเช่น

    [root@cent6 ~]# tail -f /var/log/messages May  7 21:14:14 cent6 ntpd[1813]: synchronized to 203.158.118.2, stratum 2 May  7 21:14:14 cent6 ntpd[1813]: kernel time sync status change 2001

    ลองใช้สั่ง ntpstat ดูสถานะอีกครั้ง

    [root@cent6 ~]# ntpstat synchronised to NTP server (203.158.118.2) at stratum 3    time correct to within 655 ms    polling server every 64 s

    ผลลัพธ์ที่ได้ หมายความว่าเครื่องเซิร์ฟเวอร์ของเรา มีเวลาตรง (sync) กับเซิร์ฟเวอร์ 203.158.118.2 ที่มี stratum 3 แล้ว


    เปิดเซอร์วิสตอนบู๊ตเครื่อง

    หลังจากทดสอบเรียบร้อยแล้ว ใช้คำสั่ง chkconfig เพื่อเปิดเซอร์วิส ntpdate และ ntpd ตอนบู๊ตเครื่องด้วย

    [root@cent6 ~]# chkconfig ntpdate on [root@cent6 ~]# chkconfig ntpd on  [root@cent6 ~]# chkconfig --list | grep ntp ntpd            0:off   1:off   2:on    3:on    4:on    5:on    6:off ntpdate         0:off   1:off   2:on    3:on    4:on    5:on    6:off