Load Balancer as a Service

Load Balancer เป็นหนึ่งในทางเลือกที่ใช้ในเพิ่ม HA (High Availability) ให้กับระบบ หรือลดโอกาสที่ service จะไม่พร้อมให้บริการ โดยการเพิ่มจำนวนของ service node ขึ้นมา และใช้ Load Balancer เป็นตัวกระจาย load ไปยัง service node เหล่านั้น โดยเรียกวิธีการที่เพิ่มหรือลดจำนวน service node เพื่อรองรับปริมาณของ load ที่เพิ่มขึ้นนี้ว่า horizontal scaling (การ scale ในแนวนอน)

โดยปกติแล้ว Load Balancer มีการกระจายโหลดโดยมี logic บางอย่าง เช่น round robin ที่จะวนไปหา node ต่าง ๆตามลำดับ หรือ เลือก node ที่มี load ใช้งานอยู่น้อยที่สุด ซึ่งการจะทำการคำนวนตาม logic เหล่านี้ได้ เท่ากับว่าตัว Load Balancer ก็จะต้องมี compute module เป็นหลัก ดังนั้น เราจะสามารถสร้าง server หรือ Compute Instance มาทำเป็น Load Balancer เองได้เช่นกัน

การทำงานของ Load Balancer

Load Balancer ทำหน้าที่ในการรับ load เข้ามาจำแนกตามกลุ่มต่าง ๆ และ กระจายไปยัง backend ที่กำหนดไว้

ในขั้นตอนการสร้าง Load Balancer ผู้ใช้งานจะต้องเลือก specification ที่มีความสามารถในการรองรับงานที่แตกต่างกัน แบ่งเป็น purpose และ topology

Purpose จะแบ่ง specification ออกเป็น 2 กลุ่ม ตามรูปแบบการใช้งาน คือ

  • Development เหมาะสำหรับงานที่รับการแปรผันของ performance ได้เล็กน้อย หรืองานใน environment test โดยจะมีแต่ standalone topology เท่านั้น

  • Production เหมาะสำหรับงานที่ต้องการความเสถียรของ performance โดยจะมี topology ทั้งแบบ standalone และ high availability

Topology จะระบุจำนวนเครื่อง compute ที่ทำงานเป็น Load Balancer โดยมี 2 รูปแบบ คือ

  • Standalone มี compute 1 เครื่อง ในกรณีที่ compute มีปัญหา จะมีการ self-healing ขึ้นมาภายใน 5 นาที

  • High Availability มี compute 2 เครื่อง ทำงานแบบ active/stand by ทำให้เมื่อ compute ที่ active มีปัญหา จะสามารถสลับมาใช้ standby compute ได้ ภายใน 5 วินาที

รูปแบบของ Load Balancing

สามารถแบ่งรูปแบบการทำ Load Balancing ได้เป็น 3 ประเภท

  • Network Load Balancing

  • Application Load Balancing

  • Global Load Balancing หรือ DNS Load Balancing

โดย NIPA Cloud Space ให้บริการ 2 รูปแบบ คือ Network Load Balancing และ Application Load Balancing โดย Load Balancer 1 Load Balancer จะสามารถทำงานได้ทั้ง 2 แบบ ขึ้นอยู่กับการเลือก protocol ของ Backend Group และ Listener ภายใน Load Balancer โดยแบ่งดังนี้

Network Load Balancing

ประเภทหนึ่งของการทำ Load Balancing คือ Network Load Balancing ที่จะเป็นการ categorize และ balance load บน transport layer ของ OSI model ที่มีประสิทธิภาพสูง categorize ได้แบบพื้นฐาน โดยใช้แค่ protocol และ port number เท่านั้น

TCP/UDP Load Balancing

protocol ที่ใช้งานแบบ Network Load Balancing คือ TCP หรือ UDP โดย traffic ตลอดทั้งเส้น ตั้งแต่ ขาเข้า Load Balancer ไปจนถึง member หรือจาก member response กลับออกไป จะเป็น protocol เดียวกันหมด

Application Load Balancing

ประเภทหนึ่งของการทำ Load Balancing คือ Application Load Balancing ที่จะเป็นการ categorize และ balance load บน application layer ของ OSI model ที่มีความสามารถที่หลากหลาย แต่แลกมาด้วยประสิทธิภาพที่ต่ำกว่าการใช้งาน Network Load Balancing ที่ทำงานบน transport layer ของ OSI model

HTTP Load Balancing

รูปแบบหนึ่งของการใช้งาน Application Load Balancing ที่จะมีพื้นฐานเหมือนกับแบบ Network Load Balancing ที่ใช้งาน HTTP Listener คู่กับ HTTP Backend Group ซึ่งจะทำให้ traffic ที่วิ่งต้องแต่เข้ามาที่ Load Balancer ไปจนถึง member และ response กลับออกไปเป็น protocol HTTP ทั้งหมด และจะมีความสามารถเพิ่มขึ้นมาก็คือ layer 7 policy (UPCOMING FEATURE)

HTTPS Load Balancing

รูปแบบหนึ่งของการใช้งาน Application Load Balancing ที่จะแตกต่างจากรูปแบบอื่นๆ โดยใช้งาน HTTPS Listener คู่กับ HTTP Backend Group ซึ่งจะทำให้ traffic ที่วิ่งต้องแต่เข้ามาที่ Load Balancer เป็น protocol HTTPS มีการ terminate SSL certificate ที่ listener ก่อนส่ง load ที่เป็น protocol HTTP ไปจนถึง member และ response กลับออกไปเป็น protocol HTTPS และสามารถใช้งาน layer 7 policy (UPCOMING FEATURE) ได้เหมือนกับ HTTP Load Balancing

SSL Certificate

ในการใช้งาน HTTPS Load Balancing สิ่งที่ขาดไม่ได้ ที่จะใช้ในการ decrypt/encrypt load บน protocol HTTPS ก็คือ SSL Certificate ที่สามารถ import ขึ้นมาไว้บน NIPA Cloud Space และ register ไว้บน Listener ที่ใช้ protocol HTTPS ได้ โดย certificate ที่ import เข้ามาจะต้องอยู่ใน format .pem ประกอบด้วย

  • certificate: เนื้อหาของ certificate

  • private key: เนื้อหาของ private key

  • certificate chain: อาจไม่มี ขึ้นอยู่กับผู้ให้บริการ certificate โดย 1 SSL Certificate สามารถใช้งานได้กับหลาย Listener หลาย Load Balancer

Status ของ Load Balancer

status ของ Load Balancer จะแบ่งออกเป็น 2 ประเภท คือ

  • Operating Status เป็น status ที่บอกสถานะการทำงานของ Load Balancer แบ่งเป็น

    • Healthy: ทุกอย่าง healthy ทำงานได้ตามปกติ

    • Degraded: member บางส่วน ไม่สามารถทำงานได้

    • Draining: member ไม่สามารถรับ load เพิ่มเติมได้

    • Unhealthy: member ทั้งหมด ไม่สามารถทำงานได้

    • No Monitor: ไม่มีการตั้งค่า health check ไว้บน backend group

  • Provisioning Status เป็น status ที่บอกสถานะการจัดการตัว Load Balancer แบ่งเป็น

    • -no status- จะบ่งบอกว่า Load Balancer นั้น stable ไม่มีการเปลี่ยนแปลงใดๆ เกิดขึ้นอยู่

    • Creating จะแสดงให้เห็นในระหว่างขั้นตอนการสร้าง Load Balancer

    • Updating จะแสดงเมื่อเกิดการเปลี่ยนแปลงภายใน Load Balancer เช่นการสร้าง แก้ไข หรือลบ Listener หรือ Backend Group

    • Deleting จะแสดงให้เห็นระหว่างการลบ Load Balancer

    • Error จะแสดงเมื่อการเปลี่ยนแปลงบางอย่าง ทำงานไม่ถูกต้อง โดยแนะนำให้ติดต่อ Customer Support หรือลบ Load Balancer เพื่อสร้างใหม่

Last updated