ก่อนอื่นต้องขอขอบคุณ 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)
โดยมีคุณลักษณะดังนี้
มีรูปแบบการเชื่อมต่ออยู่สามแบบ คือ
1. IPVS via Network Address Translation (IPVS/NAT)
2. IPVS via Direct Routing (IPVS/DR)
3. IPVS via IP Tunneling (IPVS/TUN)
ส่วนรูปแบบของ Scheduling Algorithms มีดังต่อไปนี้
รู้สึกว่าหากลงไปลึกคงจมแน่ๆ ( เมา ) วันนี้ขอพักไว้แค่นี้ก่อน ยังมีการทำงานของ Heartbeat อีกส่วนหนึ่ง
สำหรับข้อมูลในการ ติดตั้งใช้งาน ลองศึกษาจาก เอกสาร นี้
และลองมาดูการประยุกต์ใช้งานของคุณ pphetra : ทำความรู้จัก LVS
โดยมีคุณลักษณะดังนี้
- ทำงานเป็นเลเยอร์ 4 สวิตชิ่ง (Layer 4 Switching) ที่รองรับโปรโตคอล ทีซีพี (TCP) และยูดีพี (UDP)
- สามารถกระจายภาระไปยังเรียลเซิร์ฟเวอร์ที่ใช้ระบบปฏิบัติการที่แตกต่างกันได้
- จะ มีเซิร์ฟเวอร์หนึ่งเครื่องทำหน้าที่รับการร้องขอบริการที่เข้ามาทางหมายเลข ไอพีเสมือน (Virtual IP) จากนั้นจะทำการกระจายสมดุลภาระไปยังเซิร์ฟเวอร์ที่ให้บริการ
- เรียกเซิร์ฟเวอร์ที่ใช้ในการกระจายภาระนี้ว่า "ไดเรกเตอร์เซิร์ฟเวอร์"(Director Server) หรือลินุกซ์ไดเรกเตอร์ (Linux Director)
- เรียกเซิร์ฟเวอร์ที่ให้บริการนี้ว่า "เรียลเซิร์ฟเวอร์" (Real Server)
มีรูปแบบการเชื่อมต่ออยู่สามแบบ คือ
1. IPVS via Network Address Translation (IPVS/NAT)
- ลินุกซ์ไดเรกเตอร์และเรียลเซิร์ฟเวอร์ต่างๆ ที่อยู่ภายในระบบคลัสเตอร์จะทำการเชื่อมต่อกันโดยสวิตช์ (Switch) หรือฮับ (Hub)
- ใช้เทคนิคเปลี่ยนหมายเลขไอพีและหมายเลขพอร์ตเป็นของเซิร์ฟเวอร์ที่ได้เลือกไว้
- เซิร์ฟเวอร์ส่งผลลัพธ์กลับไปยังลินุกซ์ไดเรกเตอร์
- ใช้เทคนิคเปลี่ยนฮาร์ดแวร์แอดเดรส(MAC Address) ในเดตาเฟรม (DataFrame) ให้เป็นของเซิร์ฟเวอร์ในคลัสเตอร์ที่ได้เลือกไว้
- เพิ่มลูปแบ็คอินเทอร์เฟส lo:0 มีหมายเลขไอพีเสมือนที่เซิร์ฟเวอร์ทุกเครื่องในคลัสเตอร์
- เซิร์ฟเวอร์ส่งผลลัพธ์กลับไปยังไคลเอนต์โดยตรง
- ใช้เทคนิคที่ทำการห่อหุ้มไอพีเดตาแกรม(IP Datagram Encapsulate) ภายในไอพีเดตาแกรมอีกทีหนึ่ง
- เพิ่มอินเตอร์เฟสแบบ Tunnel คือ tunl0 มีหมายเลขไอพีเสมือนที่เซิร์ฟเวอร์ทุกเครื่องในคลัสเตอร์
- เซิร์ฟเวอร์ส่งผลลัพธ์กลับไปยังไคลเอนต์โดยตรง
- Round - Robin (rr)
- Least - Connection (lc)
- Weighted Least - Connection (wlc)
- Destination Hashing (dh)
- Source Hashing (sh)
- และอื่นๆ
รู้สึกว่าหากลงไปลึกคงจมแน่ๆ ( เมา ) วันนี้ขอพักไว้แค่นี้ก่อน ยังมีการทำงานของ Heartbeat อีกส่วนหนึ่ง
สำหรับข้อมูลในการ ติดตั้งใช้งาน ลองศึกษาจาก เอกสาร นี้
และลองมาดูการประยุกต์ใช้งานของคุณ pphetra : ทำความรู้จัก LVS
ไม่มีความคิดเห็น:
แสดงความคิดเห็น