Welcome 🎉

logo

ReactLMS

Search
Light Mode
Contact Us

6 min to read

Contact us

No results for your search.
Sorry, an unexpected error occurred

Giới thiệu


Trong thực tế, bài toán cân bằng tải là phần rất quan trọng trong các dự án lớn, giúp điều hướng giải quyết yêu cầu tới nhiều server khác nhau.

Để việc tìm hiểu trở nên dễ dàng, bạn cần host 3 server nodeJS đơn giản để có thể dễ dàng thực nghiệp với chủ đề này.


Cài đặt


Để thực hiện tính năng này, ta cần tới sự giúp đỡ của PM2

Để cài đặt, hãy chạy câu lệnh sau

sudo npm install -g pm2






Sau khi cài đặt xong, hãy chạy câu lệnh sau để thực hiện chạy 3 server nodeJS

pm2 start /srv/nglearns/load-balancer-demo/server-1.js
pm2 start /srv/nglearns/load-balancer-demo/server-2.js
pm2 start /srv/nglearns/load-balancer-demo/server-3.js






Để kiểm tra các server đã được chạy hay chưa, ta dùng câu lệnh sau

pm2 list






Kết quả

# ┌────┬────────────────────┬──────────┬──────┬───────────┬──────────┬──────────┐
# id │ name               │ mode     │ ↺    │ status    │ cpu      │ memory   │
# ├────┼────────────────────┼──────────┼──────┼───────────┼──────────┼──────────┤
# │ 0  │ server-1           │ fork     │ 0    │ online    │ 0%       │ 37.4mb   │
# │ 1  │ server-2           │ fork     │ 0    │ online    │ 0%       │ 37.2mb   │
# │ 2  │ server-3           │ fork     │ 0    │ online    │ 0%       │ 37.1mb   │
# └────┴────────────────────┴──────────┴──────┴───────────┴──────────┴──────────┘






Hãy đảm bảo rằng 3 server NodeJS của bạn đã được thiết lập để chạy trên 3 port 3001, 3002, 3003


Cách triển khai


Để triển khai, ta hãy tham khảo qua ví dụ sau

events {

}

http {
  upstream backend_servers {
    server localhost:3001;
    server localhost:3002;
    server localhost:3003;
  }

  server {
    listen 80;
    server_name nglearns.test;

    location / {
      proxy_pass http://backend_servers;
    }
  }
}






Tại đây, bằng cách sử dụng context upstream, ta sẽ tạo ra tập hợp các server và thiết lập chúng trở thành một BE duy nhất

Hãy thực hiện câu lệnh sau để thấy được cách hoạt động của chúng.

while sleep 0.5; do curl http://nglearns.test; done






Kết quả

# response from server - 2.
# response from server - 3.
# response from server - 1.
# response from server - 2.
# response from server - 3.
# response from server - 1.
# response from server - 2.
# response from server - 3.
# response from server - 1.
# response from server - 2.






Bạn có thể dùng tổ hợp phím Ctrl + C để ngừng tiến trình.

Tại ví dụ trên, các bạn thấy rằng nginx đã điều hướng request của người dùng tới từng server một cách tự động.

Để ngừng tiến trình server bất kỳ, hãy sử dụng câu lệnh sau

pm2 stop server-1 






Bằng cách này, bạn đã thành công ngừng chạy server 1 trong hệ thống BE.


Read More
On This Page