วันพุธที่ 11 พฤษภาคม พ.ศ. 2554

Nginx Web Cluster (ตอนที่ 1)

ตอนนี้อยู่ในช่วงขาขึ้นของระบบทำงาน คนเข้าเว็บไซต์เพิ่มขึ้นกว่าแต่ก่อนมาก ดังนั้น เพื่อให้รองรับ ปริมาณการใช้งานที่เพิ่มขึ้น จำเป็นต้องมีการปรับปรุงระบบใหม่ ดังต่อไปนี้

1. ระบบจะต้อง รองรับการทำงานที่หนักขึ้น ซึ่ง เครื่องเดียวอาจจะรับ Load ทั้งหมดไม่ได้ ต้องกระจายระบบ ออกไป
2. สำหรับระบบใหม่นี้ จะต้องไม่มี Single point of failure.

เพื่อคง Concept จะยังคงใช้ FreeBSD อยู่เหมือนเดิม

ทางเลือกของเราคือ ใช้ Nginx ทำหน้าที่เป็น Load Balance ข้างหน้า 2 ตัว ส่วน Backend Server Cluster จะเป็น Apache หรือ Nginx ก็ได้
ในตอนนี้จะอธิบายในส่วนของการทำ Backend Server Clusterก่อน

- ในส่วน nginx.conf ให้เพิ่ม config ในลักษณะนี้เข้าไป จาก config จะเห็นว่า เรามี backend อยู่ 4 ตัว และ กำหนดให้ตัวที่ 1 ทำงานเป็น 3 เท่าของตัวอื่นๆ (weight 3)

- ในส่วนของการ config server ก็ ใช้ proxy_pass ไปยัง cluster ของเรา


http {
upstream backend_cluster {
server 192.168.1.10:80 weight=3;
server 192.168.1.11:80;
server 192.168.1.12:80;
server 192.168.1.13:80;
}

server {
listen 80;
server_name www.domain.com;
location / {
proxy_pass http://backend_cluster;
}
}
}


- ในส่วนของ Backend Cluster ก็คือ เครื่องที่เป็น Web Server ปกติ นั่นเอง
- ลอง Restart nginx แล้ว ทดสอบการทำงานดูได้เลย
- การสลับการทำงาน ของ แต่ละ server จะเป็น แบบ Round Robin อยู่

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

แสดงความคิดเห็น