เคยสงสัยกันหรือไม่ว่าระบบเว็บไซต์ขนาดใหญ่มีการออกแบบอย่างไรให้ระบบไม่ล่ม เบื้องหลังการทำงานคือระบบ Global Server Load Balancing หรือ GSLB นั่นเอง แล้วระบบดังกล่าวทำงานได้อย่างไร บทความนี้จะแนะนำให้รู้จักระบบดังกล่าว
สำหรับระบบ Global Server Load Balancing (ในบทความนี้ขอเรียกว่า GSLB เพื่อความคุ้นเคยในการทำงาน) เป็นการประยุกต์ใช้งานระบบ Domain Name System (DNS) อีกทีหนึ่ง ดังนั้นหากจะเข้าใจการทำงานคงต้องปูพื้นฐานการทำงานของระบบ DNS ก่อน
การทำงานของระบบ Domain Name System หรือ DNS ทำงานอย่างไร
ระบบ Domain Name System หรือ DNS คือ ระบบที่มีไว้สำหรับบริหารจัดการข้อมูลของชื่อโดเมน (Domain Name) และทำหน้าที่ในการแปลงชื่อโดเมนดังกล่าวเป็นไอพีแอดเดรส (IP Address) เพื่อนำไอพีแอดเดรสดังกล่าวไปติดต่อยังเซิร์ฟเวอร์อีกทีหนึ่ง เปรียบเสมือนสมุดจดเบอร์โทรศัพท์หน้าเหลืองที่มีรายชื่อและเบอร์โทรศัพท์สำหรับการโทรหากันในสมัยก่อน (ปัจจุบันก็ Google หาแทน) ยกตัวอย่างเช่น หากเราต้องการเข้าเว็บไซต์ “www.ksc.net” เครื่องไคลเอนต์ก็จะค้นหาไอพีแอดเดรสเป็นไอพีแอดเดรสเวอร์ชัน 4 (IPv4) เป็น “203.155.1.1” หรือไอพีแอดเดรสเวอร์ชัน 6 (IPv6) เป็น “2405:a000:9000:11:203:155:1:1” โดยสามารถตรวจสอบได้โดยใช้คำสั่ง nslookup บน Command Line ของระบบ Microsoft Windows (สำหรับระบบ Linux หรือ macOS ก็ใช้คำสั่งแบบเดียวกัน) ดังรูปด้านล่าง
โดยเครื่องที่ทำหน้าที่ DNS เซิร์ฟเวอร์ จะมีการกำหนดเอาไว้ล่วงหน้า (เป็นแบบ Static) โดยไม่ได้ตรวจสอบว่าเครื่องเซิร์ฟเวอร์ดังกล่าวยังให้บริการได้หรือไม่ โดยเราสามารถตรวจสอบเครื่องเซิร์ฟเวอร์ที่ทำหน้าที่เป็น DNS โดยเช็คจากเว็บไซต์
https://who.is ดังรูปด้านล่าง ในส่วนของ Name Servers นั่นเอง
หลักการทำงานของ GSLB
สำหรับ Global Server Load Balancing (GSLB) ก็คือการประยุกต์ใช้งานหลักการของ DNS นั่นเอง แต่มีการกำหนดเงื่อนไขในการตอบสนองค่าไอพีแอดเดรสกลับไปยังผู้ร้องขอนั่นเอง (Dynamic) เช่น มีการตรวจสอบไอพีแอดเดรสปลายทางก่อนว่าทำงานได้หรือไม่ (Health Check) หากไม่ตอบสนองก็ไม่ตอบไอพีแอดเดรสดังกล่าว หรือมีการตรวจสอบว่าไอพีแอดเดรสที่เรียกเข้ามาอยู่ในประเทศไหน หากเป็นประเทศไทยก็ให้ตอบกลับเป็นไอพีแอดเดรสที่อยู่ใกล้สุดเพื่อให้เข้าถึงได้อย่างรวดเร็วนั่นเอง ซึ่งเราจะเห็นการใช้งานแบบนี้กับระบบ Google.com หรือ Hotmail.com ที่ตอบสนองเป็นไอพีแอดเดรสที่สิงคโปร์พร้อมทั้งแสดงผลเป็นภาษาไทยโดยตรวจสอบจากไอพีแอดเดรสที่เชื่อมต่อเข้ามานั่นเอง
สำหรับไอทีบางท่านอาจจะรู้จักการทำ “DNS Round Robin” หรือการคอนฟิกให้เครื่อง DNS เซิร์ฟเวอร์ตอบไอพีแอดเดรสมากกว่า 1 ไอพีแอดเดรสนั่นเอง ซึ่งการตรวจสอบเราสามารถใช้คำสั่ง nslookup ในการตรวจสอบ แต่จะพบว่ามีการตอบไอพีแอดเดรสมากกว่า 1 ไอพีแอดเดรส แต่การทำ DNS Round Robin นั้นเป็นการกระจายโหลดออกไปแต่เครื่อง DNS เซิร์ฟเวอร์เองก็ไม่ได้ตรวจสอบไอพีแอดเดรสแต่ละเครื่องว่ายังทำงานอยู่หรือไม่ หากมีเครื่องเซิร์ฟเวอร์ใดไม่สามารถให้บริการได้ผู้ใช้งานบางส่วนก็จะไม่สามารถใช้งานได้ด้วยนั่นเอง ซึ่งผู้ดูแลระบบก็ไม่สามารถระบุจำนวนไคลเอนต์ที่ไม่สามารถใช้งานได้เพราะเป็นการตอบแบบสุ่ม (หรือ Round Robin) นั่นเอง
จากตัวอย่างรูปด้านบนเป็นการเช็คไอพีแอดเดรสของระบบรับอีเมลของ Hotmail.com จะเห็นว่ามีการตอบสนองไอพีแอดเดรสทั้งหมด 4 ไอพีแอดเดรส (ตอบสนองแบบ DNS Round Robin) จากการประเมินคิดว่าระบบของทาง Microsoft มีการใช้งาน GSLB แน่นอน เพราะเมื่อทำการค้นหาซ้ำก็พบว่ามีการตอบสนองเป็นไอพีแอดเดรสชุดอื่นนั่นเอง ซึ่งก็มีการตอบแบบสุ่มเช่นเดียวกัน
เมื่อไหร่ถึงต้องใช้งาน GSLB ในระบบ
สำหรับการใช้งาน GSLB ในระบบขึ้นอยู่กับมูลค่าความเสียหาย (Downtime cost) ที่เกิดขึ้น ซึ่งการประเมินมูลค่าความเสียหายนั้นพบว่าส่วนมากไม่สามารถประเมินได้ หรืออาจจะประเมินไม่ใกล้เคียงความเป็นจริง จึงขออธิบายด้วยตัวอย่างง่ายๆ เช่น หากเป็นบริษัทที่ทำธุรกิจมีการขายสินค้าออนไลน์ 20% ของยอดขายทั้งหมด ส่วนที่เหลือเป็นช่องทางอื่น โดยระบบหลังบ้านทั้งหมดใช้งานภายในองค์กรไม่มีการเชื่อมต่อกับระบบภายนอก และบริษัทมียอดขายประมาณ 100 ล้านบาทต่อปี ดังนั้นมูลค่าความเสียหายบนระบบออนไลน์ต่อชั่วโมงจะคำนวณได้ดังนี้
Downtime Cost per hour |
= |
ยอดขาย 100 ล้านบาทต่อปี x 20% จากยอดขายออนไลน์
|
365 วัน x 24 ชั่วโมง |
จากการคำนวณคร่าวๆ จะได้ว่า 2,283 บาท/ชั่วโมง ซึ่งในความเป็นจริงช่วงเวลาแต่ละช่วงอาจจะมีความสำคัญไม่เท่ากัน และในกรณีที่เกิดเหตุการณ์ที่ทำให้ระบบไม่สามารถทำงานได้ สมมติว่าเป็นระยะเวลา 8 ชั่วโมง ก็จะประเมินความเสียหายได้ที่ 18,264 บาทนั่นเอง
สำหรับการลงทุนในระบบ GSLB นั้น ระบบของเราต้องมีขนาดใหญ่โดยอย่างน้อยต้องมีระบบอยู่ 2 ที่ อยู่คนละศูนย์ข้อมูล (Data Center) และมีระบบแยกออกจากกันอย่างอิสระ อีกทั้งยังต้องออกแบบให้ข้อมูลทั้ง 2 ศูนย์ข้อมูลสามารถเชื่อมต่อกันได้และอัปเดทกันตลอดเวลาอีกด้วย หากลงในรายละเอียดในแต่ละศูนย์ข้อมูลก็มีการออกแบบระบบสำรองภายใน (Redundant) และระบบกระจายโหลด (Server Load Balancing หรือบางที่ก็จะเรียกว่า Application Delivery Controller หรือ ADC) อีก ซึ่งเป็นการลงทุนที่สูงมาก โดยระบบที่กล่าวมาแสดงได้ดังรูปด้านล่าง
บทสรุป
สำหรับเบื้องหลังของระบบออนไลน์ขนาดใหญ่ก็จะมี GSLB เป็นระบบเบื้องหลัง โดย GSLB เปรียบเสมือนกับการชี้ทางเข้าเท่านั้น แต่ยังต้องมีระบบการเชื่อมต่อข้อมูลภายในศูนย์ข้อมูลแต่ละแห่งอีกซึ่งสำคัญไม่แพ้กันกับระบบ GSLB
อ้างอิง: