เว็บไซต์ขนาดใหญ่ออกแบบระบบยังไงไม่ให้ล่ม เบื้องหลังคือระบบ GSLB (Global Server Load Balancing)

เคยสงสัยกันหรือไม่ว่าระบบเว็บไซต์ขนาดใหญ่มีการออกแบบอย่างไรให้ระบบไม่ล่ม เบื้องหลังการทำงานคือระบบ 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 ก็ใช้คำสั่งแบบเดียวกัน) ดังรูปด้านล่าง

GSLB_001.webp

โดยเครื่องที่ทำหน้าที่ DNS เซิร์ฟเวอร์ จะมีการกำหนดเอาไว้ล่วงหน้า (เป็นแบบ Static) โดยไม่ได้ตรวจสอบว่าเครื่องเซิร์ฟเวอร์ดังกล่าวยังให้บริการได้หรือไม่ โดยเราสามารถตรวจสอบเครื่องเซิร์ฟเวอร์ที่ทำหน้าที่เป็น DNS โดยเช็คจากเว็บไซต์ https://who.is ดังรูปด้านล่าง ในส่วนของ Name Servers นั่นเอง

 GSLB_002.webp

หลักการทำงานของ 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) นั่นเอง

GSLB_003.webp

จากตัวอย่างรูปด้านบนเป็นการเช็คไอพีแอดเดรสของระบบรับอีเมลของ 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_005.webp

GSLB กับ Cloud Server, VPS และระบบ Server ในองค์กร

ในปัจจุบัน GSLB ถูกนำมาใช้งานร่วมกับ Cloud Server และ Cloud VPS อย่างแพร่หลาย ไม่ว่าจะเป็นการใช้งานบน AWS Thailand, Azure Thailand หรือผู้ให้บริการ Cloud Server ในประเทศไทยเพื่อกระจายโหลดไปยัง Server VPS หลายจุด และรองรับการใช้งานจากผู้ใช้ทั่วโลก

GSLB ต่างจาก Load Balancer แบบทั่วไปอย่างไร?

Load Balancer ทั่วไปทำงานภายในศูนย์ข้อมูลเดียว ขณะที่ GSLB ทำงานในระดับ Global โดยใช้ DNS เป็นตัวกำหนดเส้นทาง จึงเหมาะกับระบบที่มีหลาย Data Center หรือหลาย Cloud Server

การใช้งาน GSLB ร่วมกับ Cloud Server ไทย

การใช้งาน GSLB ร่วมกับ Cloud Server ไทย ช่วยลด Latency สำหรับผู้ใช้งานในประเทศ และเหมาะกับองค์กรที่ต้องการวางระบบ Server ในบริษัทภายใต้ข้อกำหนดด้านข้อมูลและความปลอดภัย

GSLB กับ Security Service และความมั่นคงของระบบ

นอกจากความเสถียรแล้ว GSLB ยังช่วยเสริม Security Service โดยสามารถตัดเส้นทางไปยัง Server ที่มีความเสี่ยง หรือกำลังถูกโจมตีออกจากระบบได้ทันที ซึ่งเป็นแนวคิดสำคัญของการออกแบบระบบ Server สมัยใหม่

องค์กรควรเตรียมระบบ Server อย่างไร หากต้องการใช้ GSLB

องค์กรที่ต้องการใช้งาน GSLB ควรเริ่มจากการวางระบบ Server บน Cloud หรือเช่า Cloud Server ที่สามารถขยายระบบได้ และมีผู้ให้บริการ Cloud ที่เข้าใจโครงสร้าง ICT Solution และการออกแบบระบบระดับองค์กร

บทสรุป
สำหรับเบื้องหลังของระบบออนไลน์ขนาดใหญ่ก็จะมี GSLB เป็นระบบเบื้องหลัง โดย GSLB เปรียบเสมือนกับการชี้ทางเข้าเท่านั้น แต่ยังต้องมีระบบการเชื่อมต่อข้อมูลภายในศูนย์ข้อมูลแต่ละแห่งอีกซึ่งสำคัญไม่แพ้กันกับระบบ GSLB

อ้างอิง: