ยินดีต้อนรับสู่ show running-config ครับ

บล็อก show running-config นี้สร้างไว้เพื่อเป็นแหล่งรวบรวมเทคนิคการตั้งค่าอุปกรณ์เครือข่าย Cisco ไม่ว่าจะเป็น Cisco IOS Router, Cisco Catalyst Swtich, Cisco ASA Firewall, Cisco Mars เป็นต้น รวมทั้งอาจจะมีเทคนิคการตั้งค่าอุปกรณ์ในยี่ห้ออื่น ๆ บ้างเล็กน้อยครับ

ซึ่งบทความในบล็อกนี้ก็จะรวบรวมมาจากประสบการณ์ส่วนตัวของกระผมเองครับ (หากมีข้อผิดพลาดก็ขออภัยไว้ล่วงหน้าเลยละกันนะครับ) และก็อยากใช้พื้นที่แห่งนี้เป็นแหล่งในการแลกเปลี่ยนความรู้ รวมไปถึงวิธีการหรือเทคนิคการตั้งค่าอุปกรณ์เครือข่าย กับทุก ๆ คนครับ

Sunday, November 21, 2010

การตั้งเวลาเพื่อให้อุปกรณ์ reload โดยอัตโนมัติ

reload eem

           ในบางครั้งที่เราใช้งานอุปกรณ์เครือข่าย เมื่อเกิดมีปัญหาขึ้นมา สิ่งที่หลาย ๆ คนเลือกที่จะทำ(รวมทั้งผมด้วย) ก็คือการทดลอง reload อุปกรณ์นั้น ๆ ดูก่อน เพื่อเป็นการล้างค่าต่าง ๆ บนตัวอุปกรณ์ ซึ่งก็เป็นวิธีการในการแก้ไขปัญหาเฉพาะหน้าที่ดีวิธีนึงใช่มั้ยครับ 

          ยกตัวอย่างเช่น ในไซต์ลูกค้าของผมไซต์นึง ทางลูกค้าพบปัญหาคือ อุปกรณ์ในรุ่นที่ลูกค้าใช้งานอยู่นั้นเป็นรุ่นเล็กจนไม่เพียงพอต่อการใช้งานขององค์กร ซึ่งเมื่อเปิดใช้งานไว้หลาย ๆ วัน จะทำให้มีการใช้ memory ในปริมาณที่สูงมาก จนทำให้การใช้งานของผู้ใช้ช้าลงจนเห็นได้ชัด และด้วยเหตุผลบางประการ ทางลูกค้าก็ไม่สามารถที่จะ upgrade ไปใช้งานอุปกรณ์ในรุ่นอื่นได้ จึงต้องทำการแก้ไขปัญหาเฉพาะหน้าด้วยการ reload เราเตอร์ทุก ๆ วันในช่วงที่ไม่มีการใช้งานโดยการใช้คำสั่ง "reload at 00.00" เพื่อให้เราเตอร์ทำการ reload ตัวเองในเวลาเที่ยงคืน ซึ่งก็ต้องมาทำการตั้งคำสั่งนี้ด้วยตัวเองทุก ๆ วัน ทางลูกค้าจึงได้มาปรึกษาผมว่า มีวิธีใดบ้างที่จะทำให้เราเตอร์ reload ตัวเองโดยอัตโนมัติ โดยไม่ต้องตั้งค่าทุก ๆ วันบ้าง ซึ่งทางผมก็ได้ไปค้นหาวิธีการมาจนได้ ในวันนี้จึงอยากที่จะมาแนะนำเพื่อน ๆ เผื่อได้นำไปใช้งานกันครับ

          สำหรับวิธีการที่จะแนะนำในวันนี้ก็คือการใช้ Embedded Event Manager (EEM) ร่วมกับการใช้ cron ซึ่งสำหรับเพื่อน ๆ ที่เคยใช้งาน unix หรือ linux มาก็คงเคยผ่านตาการใช้ cron กันมาบ้างใช่มั้ยครับ แต่สำหรับเพื่อน ๆ ที่ไม่เคยรู้จักการใช้งาน cron ในวันนี้ผมก็จะมาแนะนำวิธีการใช้งาน cron สั้น ๆ กันก่อนนะครับ

          cron เป็นการสั่งให้ทำการใช้คำสั่ง หรือใช้ script ต่าง ๆ ตามช่วงเวลาที่กำหนดไว้ ในการใช้งาน cron จะต้องมีการกำหนดเวลาเอาไว้ โดยมีรูปแบบเป็น 6 fields ดังนี้

#  .------------- minute (0 - 59)
#  |    .---------- hour (0 - 23)
#  |    |   .-------- day of month (1 - 31)
#  |    |   |   .------ month (1 - 12) OR jan,feb,mar,apr ...
#  |    |   |   |  .----- day of week (0 - 6) (Sunday=0 or 7)  OR sun,mon,tue,wed,thu,fri,sat
#  |    |   |   |  |
#  *   *   *  *  *  command to be executed

*ในส่วนนี้ขอขอบคุณ wikipedia นะครับ เนื่องจากเห็นว่าอธิบายไว้ได้ง่ายและชัดเจนดีครับ

ตัวอย่างการใช้ cron
ใช้คำสั่งบางอย่างในทุก ๆ เดือน ก็จะต้องทำการตั้งค่า cron ดังนี้
0 0 1 * *
ใช้คำสั่งบางอย่างในทุก ๆ วันจันทร์ถึงวันพุธทุก ๆ 6 โมงเช้า ก็จะต้องทำการตั้งค่า cron ดังนี้
0 6 * * 1-3

          ทั้งนี้ในการใช้งาน cron ได้มีการกำหนดค่าต่าง ๆ ที่มีการใช้งานเป็นประจำเอาไว้เป็นคำสั่ง เพื่อให้สะดวกต่อการนำไปใช้ เช่น เราต้องการให้ใช้คำสั่งบางอย่างในทุก ๆ ชั่วโมง แทนที่จะต้องใช้คำสั่งว่า “0 * * * *” ก็สามารถใช้คำสั่งว่า @hourly แทนได้ โดยคำสั่งที่มีการกำหนดไว้มีดังนี้

คำสั่ง

อธิบาย

มีค่าเท่ากับ

@yearly (หรือ @annually) ทำทุกปี 0 0 1 1 *
@monthly ทำทุกเดือน 0 0 1 * *
@weekly ทำทุกสัปดาห์ 0 0 * * 0
@daily (หรือ @midnight) ทำทุกวัน 0 0 * * *
@hourly ทำทุกชั่วโมง 0 * * * *
@reboot ทำเมื่อเริ่ม boot ใหม่  

          เอาล่ะครับ เมื่อเพื่อน ๆ ทำความรู้จักกับการใช้งาน cron กันแล้ว เราก็จะมาเริ่มทำการตั้งค่า EEM และ cron เพื่อกำหนดเวลาให้ทำการ reload กันครับ สำหรับขั้นตอนในการตั้งค่าก็มีดังนี้

  1. ทำการตั้งค่าวันและเวลาให้ตรงกับเวลาในปัจจุบัน
  2. เข้าสู่โหมด appler configuration mode ด้วยการใช้คำสั่ง "event manager applet <applet-name>"
  3. ทำการกำหนดเวลาโดยใช้ cron ด้วยคำสั่ง "event timer cron name <name> cron-entry <cron-entry>"
  4. ทำการกำหนด action ว่าให้ทำการ reload เมื่อถึงเวลาที่กำหนด

          ในอันดับแรกเราก็ควรที่จะทำการตั้งวันและเวลาของอุปกรณ์เราให้ตรงกับปัจจุบันกันก่อนนะครับ แนะนำว่าควรที่จะทำการเทียบเวลากับ ntp server นะครับ
ตัวอย่าง
Router(config)#ntp server 203.185.69.59 prefer
Router(config)#ntp server 203.185.69.60
Router(config)#clock timezone ICT +7
Router(config)#do show clock
10:11:47.662 ICT Sun Nov 21 2010

          จากนั้นขั้นตอนต่อมา เราก็จะมาเริ่มทำการตั้งค่า EEM กันครับ โดยจากตัวอย่างนี้จะกำหนดให้ทำการ reload ในทุก ๆ นาทีที่ 0 และชั่วโมงที่ 0 ของทุก ๆ วัน หรือก็คือในทุก ๆ เที่ยงคืนนั่นเองครับ ซึ่งการใช้คำสั่ง "0 0 * * *" นั้นสามารถใช้คำสั่งว่า "@midnight" แทนก็ได้ครับ
ตัวอย่าง
Router(config)#event manager applet reload@midnight
Router(config-applet)#event timer cron name midnight cron-entry "0 0 * * *"
Router(config-applet)#action 1.0 reload
Router(config-applet)#exit

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

No comments:

Post a Comment