หลักการทำงานของเว็บคลัสเตอร์

ส่วนประกอบหลัก ๆ ของการสร้างระบบเว็บคลัสเตอร์

Load Balancer (Layer4-Software)

คือเครื่องที่ทำหน้าที่กระจายงานไปยังเครื่องต่าง ๆ ในระบบตามรูปแบบของอัลกอริทึมที่ได้กำหนดไว้ตัวอย่างเช่น Round-robin, Least-Connection เป็นต้น ส่วนการตอบกลับการร้องขอจากไคลเอนต์นั้นมีอยู่ 3 รูปแบบดังนี้



รูป: การทำ Load balance แบบ NAT


  • Direct Routing

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


รูป: การทำ Load balance แบบ Direct Routing


  • IP Tunneling

    เป็นรูปแบบที่ตัว Load balancer ส่งการร้องขอจากไคลเอนต์ผ่านทาง Tunnel ไปยังเครื่องจริงแล้วเครื่องจริงสามารถตอบกลับไปหาไคลเอนต์ได้โดยตรง


รูป:

การทำ Load balance แบบ IP Tunneling

Clustered file system

ใช้เพื่อการแชร์ข้อมูลร่วมกันระหว่างเครื่องเซิร์ฟเวอร์ในระบบคลัสเตอร์

  • Shared-disk

    เป็นรูปแบบที่ต้องตั้งเครื่องเซิร์ฟเวอร์ขึ้นมาเพื่อทำการแชร์ข้อมูลระหว่างกันของเครื่องเซิร์ฟเวอร์ต่าง ๆ ในระบบ เช่น NFS

  • Distributed file systems

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

High Availability

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

  • Active – Standby

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

  • Active – Active

    รูปแบบนี้คือเครื่องเซิร์ฟเวอร์ทั้งหมดให้บริการพร้อมกันดังนั้นถ้ามีเครื่องใดเครื่องหนึงขัดข้องระบบก็จะยังคงให้บริการต่อไปได้


รูปแบบเว็บคลัสเตอร์ที่เลือกใช้


ใช้ระบบปฎิบัติการลินุกซ์ Ubuntu โดยทำเว็บคลัสเตอร์ในแบบ Direct Routing คือเมื่อเครื่องลูกข่ายเรียกใช้บริการมาที่ไอพีเสมือน(VIP) เครื่องที่ทำหน้าที่ Load Balance จะทำการส่งต่อไปยังเครื่องที่ให้บริการในระบบจากนันจะตอบกลับไปยังเครื่องลูกข่ายโดยตรง โดยไม่ต้องย้อนกลับมาที่เครื่อง Load Balance และให้ทุกส่วนของระบบเป็นแบบ All in oneสามารถอธิบายได้จากรูปด้านล่างดังนี้

  • การเรียกใช้บริการจากเครื่องไคลเอนต์จากอินเทอร์เน็ตผ่านทางไอพีเสมือน(Virtual IP)

  • แต่ละเซิร์ฟเวอร์ในระบบจะมีการตรวจสอบการคงอยู่ถ้าเกิดมีเครื่องใดมีปัญหาจะตัดออกจากคลัสเตอร์

  • การกระจายคำร้องของจากไคลเอนต์ไปยังเครื่องเซิร์ฟเวอร์ในระบบ

  • ตอบกลับไปยังเครื่องไคลเอนต์โดยตรงโดยไม่ผ่านเครื่องที่เป็น Load Balance



รูป: รูปแบบเว็บคลัสเตอร์ที่เลือกใช้ ในระบบมี 4 เครื่องและทำงานทุกเครื่อง


ส่วนประกอบของระบบเว็บคลัสเตอร์

Pacemaker และ Corosync

นำมาใช้เพื่อทำให้ระบบมีความคงอยู่สูง (High Availability) มีหน้าที่สำหรับสร้างไอพีเสมือน(Virtual IP) และตรวจสอบเซิร์ฟเวอร์ในระบบคลัสเตอร์ว่ายังทำงานอยู่หรือไม่


Ldirectord และ IPVS

IPVS (IP Virtual Server) ใช้สำหรับทำ Load Balance ในระดับเน็ตเวิร์กชั้นที่ 4 ส่วน ldirectord จะมีหน้าที่ส่งต่อการเรียกเว็บจากไคลเอนต์ไปยังเครื่องเซิร์ฟเวอร์ที่ให้บริการเว็บในระบบคลัสเตอร์

Glusterfs

ใช้สำหรับ sync ข้อมูลต่าง ๆ และใช้สำหรับแชร์ session ของ PHPในระบบเว็บคลัสเตอร์

MySQL/Garela

ใช้สำหรับ sync ข้อมูลในส่วนของระบบฐานข้อมูลในรูปแบบที่เป็นการทำงานพร้อมกันทั้งระบบ (active – active )



รูป: รายละเอียดของระบบ SUTinsWebCluster