Monday, April 22, 2013

Load Balance Mechanism - Triangulation

การทำงานของ Load Balance แบบที่ใช้กันทั่วๆไปมีแบบต่อตรงอยู่ในลักษณะเป็น Gateway และแบบ Triangulation นอกจากนี้ยังเพิ่มการทำ NAT ไปด้วยได้

แบบอยู่ในลักษณะเป็น Gateway จะเป็นดังรูปแรก

ในแบบนี้จะมีขั้นตอนการทำงานดังนี้ 
  1. traffic ที่มาจาก network ข้างนอก (4.3.2.1) จะวิ่งเข้ามายัง VIP(Virtual IP) ของ Server Farm (6.6.6.100) 
  2. load balancer จะเลือก server ใน farm ที่จะ service request อันนี้ตาม algorithm ที่ set ไว้ ในตัวอย่างนี้จะเลือก server 192.168.1.10
  3. load balancer จะเปลี่ยน destination ip และ destination mac ของ frame ให้เป็นของเครื่อง 192.168.1.10 แล้วส่งออกไป (source เหมือนเดิม)
  4. server reply ข้อมูลกลับโดย destination ip เป็น 4.3.2.1 ซึ่งเป็นคนละ network ทำให้ server ส่ง frame กลับไปที่ default gateway ซึ่งในกรณีนี้ต้องให้เป็น ip ของ load balancer
  5. load balancer เปลี่ยน source ip ของ packet กลับให้เป็น 6.6.6.100 โดย destination ip เป็น 4.3.2.1 เหมือนเดิม แล้วส่งกลับไปยัง client ที่ network ข้างนอก

อีกแบบหนึ่งคือแบบ Triangulation จะเป็นดังรูปด้านล่างนี้

แบบนี้จะมีขั้นตอนการทำงานดังนี้
ขั้นที่ 1 และ 2 เหมือนเดิม โดย server ที่ load balancer เลือกในตัวอย่างนี้คือ 6.6.6.10
3.  load balancer จะไม่เปลี่ยน destination ip 6.6.6.100 แต่จะเปลี่ยนเฉพาะ destination mac ของ frame ให้เป็น mac address ของเครื่อง server เบอร์ 6.6.6.10 ทำให้ frame เดินทางไปที่ server ได้
4.  ที่เครื่อง server จะต้องทำการ setup loopback interface ที่มี ip 6.6.6.100 ไว้ และต้อง make sure ว่าไม่มีการ broadcast ในส่วนของ arp ออกไป ที่ต้องทำแบบนี้เพราะถ้าไม่มี interface ที่มี ip 6.6.6.100 ไว้ พอ network interface แกะ frame ออกมา แล้วเห็นว่า ip address ที่ packet ต้องการส่งถึง เป็น 6.6.6.100 แล้วตัวเองไม่มี ก็จะทำการ drop packet ทิ้งไป ไม่ส่งต่อให้ layer บน
5.  เครื่อง server reply packet กลับ โดย set destination ip เป็น 4.3.2.1 ส่วน source ก็เป็น 6.6.6.100 แล้วส่งไปที่ default gateway ซึ่งในกรณีนี้เป็น  Gateway Router อีกตัวหนึ่ง

การทำงานแบบนี้เหมาะกับ traffic ในลักษณะ streaming เพื่อไม่ให้ไป load หรือ bottleneck ที่ load balancer และยังใช้กับ ในกรณี client อยู่ใน network เดียวกับ server ได้ด้วย เพราะ ในกรณีนี้ ตอน server reply กลับ จะวิ่งไปหา client ตรง ไม่กลับไปที่ load balance อีก เพราะเป็น network เดียวกัน

นอกจากนี้ ยังสามารถทำ NAT ที่ load balance ได้ด้วย เพื่อ force ให้ traffic ต้องวิ่งกลับไปที่ load balancer ดังรูปด้านล่าง โดยเป็นการทำ Client NAT หรือ Source NAT (ในรูป ip 6.6.6.50 ต้องเปลี่ยนเป็น 192.168.1.50 - รูปผิด) ทั้งนี้โดยหน้าที่ของ load balancer ตามรูปข้างล่างก็เหมือนเป็นการทำ server NAT ไปด้วยกลายๆ