การใช้งาน Nginx เป็น Load Balancer เขียนเมื่อ 2011.01.18 โดย

ใน Nginx มี module ที่มีความสามารถช่วยในการกระจายภาระไปยังหน่วยต่างๆ ได้ซึ่ง module นั้นมีชื่อว่า upstream module ทำหน้าที่ส่ง request ต่างๆ ไปยังส่วนประมวลผลต่างๆ เช่นเดียวกับ mod_proxy_balancer ใน Apache และ mod_proxy_core ใน Lighttpd เพื่อกระจายภาระออกไปได้ ซึ่งเป็นความสามารถอีกอันที่มีประโยชน์อย่างมาก

การตั้งค่าก็ไม่มีอะไรซับซ้อน สมมุติว่าเรามี node เพื่อใช้ในการประมวลผล 3 node คือ 10.0.0.2, 10.0.0.3, 10.0.0.4 และใช้ Nginx เป็น Load Balancer เราสามารถตั้งค่าได้ดังนี้

upstream backend {
server 10.0.0.2;
server 10.0.0.3;
server 10.0.0.4;
}

server {
server_name mydomain.com www.mydomain.com;

location / {
proxy_pass backend;
}
}

จะเป็นการกระจาย request ไปยัง node ต่างๆ เท่าๆกัน แต่ในบางครั้ง node แต่ละ node อาจจะมีความสามารถในการประมวลผลไม่เท่ากัน เราสามารถให้แต่ละ node รับภาระไม่เท่ากันได้ โดยเพิ่ม parameter "weight" ต่อท้าย
upstream backend {
server 10.0.0.2 weight=2;
server 10.0.0.3;
server 10.0.0.4;
}

server {
server_name mydomain.com www.mydomain.com;

location / {
proxy_pass backend;
}
}

จากการตั้งค่าแบบนี้ node 10.0.0.2 จะรับภาระ 50% ส่วน 10.0.0.3 และ 10.0.0.4 จะรับภาระ node ละ 25% การไม่ระบุ weight จะมีค่า default เป็น 1.




คำเตือนคำเตือน เนื้อหาต่างๆ ในบทความ รวมถึงรูปภาพทั้งหมดในบทความนี้ เป็นความเห็นส่วนตัวของผู้เขียนแต่ละคน ซึ่งแต่ละคนได้ทำการลงทะเบียน และเขียนบทความลงใน Modoeye Articles นี้โดยไม่มีค่าธรรมเนียมใดๆ บทความเหล่านี้เป้าหมายเพื่อการศึกษา และความบันเทิงเท่านั้น การนำส่วนหนึ่งส่วนใดของบทความไปใช้งาน ควรทำการอ้างอิงถึงผู้เขียนและแหล่งที่มาด้วย