หน้าเว็บ

วันพุธที่ 19 สิงหาคม พ.ศ. 2552

LVS หรือ Linux Virtual Sever อีกทางเลือกหนึ่ง

คงมีหลายท่านที่กำลังมองหา Solution ในการใช้งาน Clustering เพื่อเพิ่มความคงอยู่ได้(high availability ) ของระบบ และการทำ Load Balancing เพื่อกระจายสมดุลภาระงานแก่ระบบ

ก่อนอื่นต้องขอขอบคุณ google และ คุณวิบูลย์ วราสิทธิชัย เจ้าหน้าที่ประจำศูนย์คอมฯ มหาวิทยาลัยสงขลานครินทร์ ที่ได้ให้การสนับสนุนข้อมูลและความรู้ต่าง ๆ

มาเข้าเรื่องกันเลย วันนี้ขอนำเสนอ LVS หรือ Linux Virtual Sever เป็นโครงการที่ทำการศึกษาการสร้างระบบบริการเสมือน (Virtual Server System) ให้สามารถทำงานทางด้านการกระจายภาระและมีความคงทนสูงสำหรับใช้ในเทคโนโลยี คลัสเตอริ่ง (Clustering Technology) เพื่อให้เป็นเครื่องบริการที่ใช้ระบบปฏิบัติการลินุกซ์

โครงการ LVS พัฒนาซอฟต์แวร์เพื่อ
• กระจายสมดุลภาระระดับไอพี (IP Load Balancing Software, IPVS)
• การกระจายภาระตามระดับของแอพลิเคชัน (Application-Level Load Balancing Software, KTCPVS)
• การจัดการคลัสเตอร์

ในที่นี้จะขอกล่างถึง IPVS ซึ่งมีคุณสมบัติกระจายสมดุลภาระระดับไอพี ซึ่งมีหลักการทำงานดังรูป






เมื่อ มองระบบคลัสเตอร์นี้ทั้งระบบ จะเสมือนว่าไคลเอนต์ได้ทำการติดต่อกับเซิร์ฟเวอร์เพียงเครื่องเดียว จึงเรียกระบบนี้ว่า “เซิร์ฟเวอร์เสมือน" (Virtual Server)

โดยมีคุณลักษณะดังนี้
  • ทำงานเป็นเลเยอร์ 4 สวิตชิ่ง (Layer 4 Switching) ที่รองรับโปรโตคอล ทีซีพี (TCP) และยูดีพี (UDP)
  • สามารถกระจายภาระไปยังเรียลเซิร์ฟเวอร์ที่ใช้ระบบปฏิบัติการที่แตกต่างกันได้
  • จะ มีเซิร์ฟเวอร์หนึ่งเครื่องทำหน้าที่รับการร้องขอบริการที่เข้ามาทางหมายเลข ไอพีเสมือน (Virtual IP) จากนั้นจะทำการกระจายสมดุลภาระไปยังเซิร์ฟเวอร์ที่ให้บริการ
  • เรียกเซิร์ฟเวอร์ที่ใช้ในการกระจายภาระนี้ว่า "ไดเรกเตอร์เซิร์ฟเวอร์"(Director Server) หรือลินุกซ์ไดเรกเตอร์ (Linux Director)
  • เรียกเซิร์ฟเวอร์ที่ให้บริการนี้ว่า "เรียลเซิร์ฟเวอร์" (Real Server)

มีรูปแบบการเชื่อมต่ออยู่สามแบบ คือ

1. IPVS via Network Address Translation (IPVS/NAT)



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

2. IPVS via Direct Routing (IPVS/DR)



  • ใช้เทคนิคเปลี่ยนฮาร์ดแวร์แอดเดรส(MAC Address) ในเดตาเฟรม (DataFrame) ให้เป็นของเซิร์ฟเวอร์ในคลัสเตอร์ที่ได้เลือกไว้
  • เพิ่มลูปแบ็คอินเทอร์เฟส lo:0 มีหมายเลขไอพีเสมือนที่เซิร์ฟเวอร์ทุกเครื่องในคลัสเตอร์
  • เซิร์ฟเวอร์ส่งผลลัพธ์กลับไปยังไคลเอนต์โดยตรง

3. IPVS via IP Tunneling (IPVS/TUN)




  • ใช้เทคนิคที่ทำการห่อหุ้มไอพีเดตาแกรม(IP Datagram Encapsulate) ภายในไอพีเดตาแกรมอีกทีหนึ่ง
  • เพิ่มอินเตอร์เฟสแบบ Tunnel คือ tunl0 มีหมายเลขไอพีเสมือนที่เซิร์ฟเวอร์ทุกเครื่องในคลัสเตอร์
  • เซิร์ฟเวอร์ส่งผลลัพธ์กลับไปยังไคลเอนต์โดยตรง

ส่วนรูปแบบของ Scheduling Algorithms มีดังต่อไปนี้
  1. Round - Robin (rr)
  2. Least - Connection (lc)
  3. Weighted Least - Connection (wlc)
  4. Destination Hashing (dh)
  5. Source Hashing (sh)
  6. และอื่นๆ

รู้สึกว่าหากลงไปลึกคงจมแน่ๆ ( เมา ) วันนี้ขอพักไว้แค่นี้ก่อน ยังมีการทำงานของ Heartbeat อีกส่วนหนึ่ง
สำหรับข้อมูลในการ ติดตั้งใช้งาน ลองศึกษาจาก เอกสาร นี้
และลองมาดูการประยุกต์ใช้งานของคุณ pphetra : ทำความรู้จัก LVS

1 ความคิดเห็น:

ไม่ระบุชื่อ กล่าวว่า...

หุหุ.....ขอบใจมากสำหรับข้อมูล