Services

Web Cluster / Web Farm / Web Load Balance

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

ปัญหาที่เกิดขึ้นกับเว็บเซิร์ฟเวอร์เพียงเครื่องเดียวคือ
  1. ระบบไม่สามารถให้บริการได้
  2. ระบบตอบสนองช้า

ปัญหาข้อที่ 1 ระบบไม่สามารถให้บริการ หรือที่เรามักเรียกกันว่า "ระบบล่ม" นั้น สำหรับเว็บไซต์ที่ต้องการให้บริการตลอด 24 ชั่วโมง โดยมีอัตราการล่มของระบบ (Down Time) ต่ำที่สุดนั้น จะต้องดูในองค์ประกอบหลายส่วนด้วยกัน เช่น

ปัญหาข้อที่ 2 อาจจะเกิดได้จากหลายสาเหตุด้วยกัน เช่น

ระบบเว็บคลัสเตอร์ มุ่งแก้ไขปัญหา 2 เรื่องข้างต้น โดยเจาะจงลงไปในส่วนของเครื่องคอมพิวเตอร์ที่ให้สามารถให้บริการได้ตลอดเวลาโดยมีอัตราการหยุดให้บริการต่ำที่สุด

การทำในลักษณะนี้ทางคอมพิวเตอร์เราเรียนกันว่า High Availability เรียกสั้น ๆ ว่า HA ในภาษาวิชาการบ้านเราจะใช้คำว่า "ภาวะทนต่อความผิดพร่องสูง" ซึ่งจะแบ่งวิธีการทำงานออกได้เป็น 2 รูปแบบดังต่อไปนี้

1. Active / Stanby หรือ Fail Over ในรูปแบบนี้จะพบในลักษณะของการทำงานของเครื่องคอมพิวเตอร์ 2 เครื่องร่วมกัน โดยที่เครื่องให้บริการหลัก (Active) ค่อยให้บริการอยู่ และเครื่องสำรอง (Stanby) ทำหน้าที่ในการปรับปรุงข้อมูลต่าง ๆ ให้เหมือนกับเครื่องหลักอยู่เสมอ และค่อยตรวจสอบว่าเครื่องหลักยังให้บริการได้เป็นปรกติอยู่หรือไม่ ถ้าพบว่าเครื่องหลักไม่สามารถให้บริการได้ เครื่องสำรองจะให้บริการแทน
2. Active / Active รูปแบบนี้เครื่องคอมพิวเตอร์ทุกเครื่องในระบบ จะให้บริการในงานเดียวทั้งหมด ซึ่งในระบบอาจจะมีหลายเครื่อง ถ้ามีเครื่องใดเครื่องหนึ่งให้บริการไม่ได้ เครื่องที่เหลือก็ยังคงให้บริการอยู่ เพียงแต่ผู้ใช้งานอาจจะรู้สึกว่าระบบให้บริการช้าลง เหตุเพราะมีเครื่องให้บริการน้อยลงนั่นเอง

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

หลักการทำงาน

Full Web Cluster Architecture

หลักการทำงานของเว็บคลัสเตอร์ เมื่อเครื่อง Load Balance ได้รับ request มา ตัว Load Balance จะนำ request นั้น ไปกระจายโหลดไปยังเครื่องเซิร์ฟเวอร์ต่าง ๆ ที่อยู่ในระบบเว็บคลัสเตอร์ โดยมีอัลกอริทึ่มหลาย ๆ รูปแบบ เช่น

และเมื่อเครื่องเซิร์ฟเวอร์ได้รับ request แล้ว ก็จะตอบกลับไปยังเครื่องไคลเอ็นต์ ซึ่งจะมีวีธีตอบกลับที่เป็นที่นิยม 2 วิธีคือ วิธีตอบกลับแบบ NAT และ แบบ Direct Route

NAT Method

Full Web Cluster Architecture

วีธีการตอบกลับแบบ NAT (Network Address Translation) จะมีรูปแบบการตอบกลับโดยที่เมื่อเครื่อง เซิร์ฟเวอร์ Load Balance (router) ได้รับคำร้อง (request) มาจากเครื่องที่ขอรับบริการ (Client)แล้ว ตัวเครื่อง Load Balance จะทำการส่งต่อคำร้องนั้นไปยังเซิร์ฟเวอร์ในกลุ่มคลัสเตอร์ (real server) เพื่อทำการประมวลผล request ที่ได้รับมา เมื่อเครื่อง real server ประมวลผลเสร็จ จะส่งข้อมูลตอบกลับไป ยัง Load Balance เพื่อให้ Load Balance ส่งต่อข้อมูลกลับไปยังเครื่องที่ร้องขอข้อมูล (Client) ก็จะจบกระบวนการ การตอบกลับแบบ NAT ซึ่งวิธีการตอบกลับนี้จะพบได้ใน Hardware Load Balance ส่วนใหญ่ในท้องตลาดนั่นเอง

Direct Route Method

Full Web Cluster Architecture

วีธีการตอบกลับแบบ Direct Rounting จะเป็นการตอบกลับข้อมูลจากเครื่องในกลุ่มคลัสเตอร์ (real server) กลับไปยังเครื่องที่ขอรับบริการ(Client)โดยตรง โดยไม่ต้องผ่านตัว Load Balance
โดยเมื่อเครื่อง Load Balance ได้รับคำร้องจากเครื่องที่ขอรับบริการ (Client) เครื่อง Load Balance จะส่งคำร้อง ต่อไปยังกลุ่มคลัสเตอร์ (real server) และเมื่อกลุ่มเซิร์ฟเวอร์ได้รับคำร้องแล้ว จะตอบกลับไปยังเครื่องที่ขอรับบริการโดยตรง โดยที่ไม่ผ่าน Load Balance ซึ่งวิธีการตอบกลับแบบ Direct Route จะมีประสิทธิภาพในการทำงานมากกว่าการตอบกลับแบบ NAT เนื่องจากระบบจะไม่เป็นคอขวดที่เครื่อง Load Balance ในกรณีที่มี traffic มาก

ระบบเว็บคลัสเตอร์นี้ เราสามารถนำไป integrate ให้ทำงานร่วมกับ MySQL Cluster และ Lustre File System เพื่อสร้างเป็นระบบ Extreme Web Cluster เพื่อให้บริการเว็บไซต์ โดยที่ระบบนั้นทำ fail-over ในทุก ๆ ส่วนของระบบ ทำให้สามารถให้บริการได้อย่างต่อเนื่องและมีประสิทธิภาพ

ผลงานที่ผ่านมา

คลัสเตอร์คิท ได้รับความไว้จากหน่วยงานทั้งภาครัฐและเอกชน ให้ผู้ติดตั้งและดูแลระบบเว็บคลัสเตอร์ ให้กับเว็บไซต์บริการงานต่าง ๆ เช่น