หน้าเว็บ

วันพุธที่ 29 กรกฎาคม พ.ศ. 2552

Load Balancing

Load balancing คืออะไร?

คือการจัดกลุ่มของคอมพิวเตอร์หลายๆตัวเพื่อแบ่งงานกัน หรือกระจาย load การใช้งานของ user ไปยังคอมพิวเตอร์ภายในกลุ่ม เพื่อให้สามารถรับจำนวน user ที่เข้ามาใช้งานได้มากขึ้น หรือสามารถรับงานที่เข้ามาได้มากขึ้น นอกจากนั้นยังมีคุณสมบัติของ Fail Over คือหากมีคอมพิวเตอร์ภายในกลุ่มไม่สามารถทำงานได้ เช่น Down อยู่ หรือไม่สามารถรับงานหรือ user เพิ่มได้เนื่องจาก resource ที่ใช้ทำงานไม่พอ ตัว Load Balancer ที่เป็นตัวแจก load ให้คอมพิวเตอร์ภายในกลุ่มก็จะส่ง load ไปยังคอมพิวเตอร์เครื่องอื่นๆแทน จนกว่าคอมพิวเตอร์เครื่องนั้นจะกลับมาใช้งานได้ใหม่

การทำงานของ Load Balancer นั้นมี 3 ลักษณะด้วยกันได้แก่

1. Round-robin เป็นการส่ง traffic ไปยัง Server ภายในกลุ่มวนไปเรื่อยๆ

2. Sticky เป็นการส่ง traffic โดยยึดติดกับ Session ที่ user เคยเข้าไปใช้งาน เช่น ถ้า user เคยเข้าไปใช้ใน server ที่ 1 ภายในกลุ่ม traffic ของ user คนนั้นก็จะถู ส่งไปยัง server 1 เท่านั้น

3. การใช้ Load Balancer ปัจจุบันนิยมใช้วิธีนี้มากที่สุด วิธีนี้เราจะมี Load Balancer หนึ่งตัว ขว้างหน้า Server ภายในกลุ่ม เพื่อรอรับ Request จาก User เมื่อมี Request เข้ามาตัว Load Balancer จะทำการ Forward Request ไปยัง Server ภายในกลุ่ม




การทำ Cluster Load Balance คือการผสมผสานการทำงานทั้งสองลักษณะเข้าด้วยกัน แต่หากจะเลือกใช้การทำงานแบบนี้แล้ว การใช้ Load Balance แบบ Ramdom Redirection ก็จะไม่มีความหมายไป เนื่องจาก ทุกๆ Server ภายในกลุ่มเป็น Cluster กันอยู่แล้ว ดังนั้นจึงไม่มีเหตุผลใดที่จะส่ง Traffic ไปให้เครื่องเดิมเสมออีก ควรจะทำ Load Balance แบบ Round-robin หรือ Work load แทน

อย่างไรก็ดีการทำ Cluster ไม่จำเป็นต้องพึ่ง Feature ของ Server เป็นหลัก แต่เราสามารถ Develop ตัว Application ให้เป็น Cluster เองได้ โดยไม่ต้องพึ่ง Feature ของ Server เช่น การใช้หลักการของ File Sharing หรือ Database เข้ามาช่วยก็สามารถทำงานได้เหมือนกัน เช่นเดียวกับการทำ Load Balance เราไม่จำเป็นต้องหา Hardware หรือ Software พิเศษที่จะทำหน้าที่เป็น Load Balancer แต่เราสามารถเขียน Application เพื่อทำการกระจาย Traffic ไปยัง Server ต่างๆได้เหมือนกัน โดยใช้หลักการของ Redirection เป็นต้น


ความแตกต่างกันระหว่างCluster และ Load balance จะสรุปง่ายคือ

#Clustering เป็นมุมมองด้านกายภาพ คือการเอา computer หลายๆเครื่องมาต่อกัน และติดตั้งระบบ network เพื่อความสะดวกสำหรับงานใดงานนึง ซึ่งอาจจะเป็น การทำ load balancing หรือ parallel computing

#Load balancing คือการกระจาย load ให้กับ computer หลายๆเครื่อง โดยมากต้องการเพิ่ม volumn ของการทำงาน อาจจะใช้ ระบบ Cluster หรือระบบอื่นก็ได้ เช่น Grid Computing


Thanks : ccsmail.sut.ac.th || www.narisa.com || www.west-wind.com

ไม่มีความคิดเห็น: