IV. n8n multi-main setup

N8n Multi-main setup là một kiến trúc triển khai nâng cao, được thiết kế để tăng khả năng chịu tải và tính sẵn sàng cho các hệ thống tự động hóa phức tạp.

Để hiểu rõ hơn, chúng ta cần nắm được cách n8n hoạt động trong các chế độ triển khai khác nhau:

1. Triển khai cơ bản (Single-instance)

Đây là cách phổ biến nhất khi bắt đầu với n8n. Mọi thành phần của n8n, bao gồm giao diện người dùng (UI), engine thực thi workflow và các tiến trình nền (background jobs), đều chạy trên một máy chủ duy nhất.

Điểm lỗi duy nhất (Single Point of Failure): Nếu máy chủ gặp sự cố, toàn bộ hệ thống n8n sẽ ngừng hoạt động.

Ưu điểm:

Đơn giản, dễ cài đặt và quản lý.

Phù hợp với các nhu cầu cá nhân, đội nhóm nhỏ hoặc các workflow có khối lượng công việc thấp.

Nhược điểm:

Giới hạn về khả năng mở rộng: Khi số lượng workflow hoặc khối lượng dữ liệu tăng lên, máy chủ duy nhất có thể bị quá tải, dẫn đến hiệu suất chậm hoặc ngừng hoạt động.

2. Triển khai Queue Mode (Chế độ hàng đợi)

Để giải quyết vấn đề về khả năng mở rộng, n8n cung cấp chế độ hàng đợi (Queue Mode). Trong chế độ này, các thành phần của n8n được tách ra thành các tiến trình riêng biệt:

Database: Lưu trữ dữ liệu về workflow, thông tin xác thực, và lịch sử thực thi.

Web Server/Main Process: Xử lý giao diện người dùng và nhận các yêu cầu kích hoạt workflow (ví dụ: webhook).

Worker Processes: Chuyên trách việc thực thi các workflow. Các tiến trình này lấy công việc từ hàng đợi.

Message Queue: Một hàng đợi tin nhắn (ví dụ: Redis) đóng vai trò trung gian, nhận các yêu cầu thực thi workflow từ Main Process và phân phối cho các Worker.

3. Multi-main Setup (Thiết lập đa máy chủ chính)

Đây là một bước tiến xa hơn của Queue Mode, đặc biệt dành cho các môi trường doanh nghiệp và các hệ thống yêu cầu cường độ hoạt động cao.

Multi-main setup là một kiến trúc triển khai phân tán của n8n, trong đó có nhiều tiến trình Main/Web Server chạy song song trên các máy chủ khác nhau.

Giải thích chi tiết:

  • Mục đích: Đảm bảo hệ thống n8n luôn hoạt động liên tục, ngay cả khi một hoặc nhiều máy chủ chính gặp sự cố. Nó loại bỏ “điểm lỗi duy nhất” của tiến trình Web Server.
  • Kiến trúc:
    • Nhiều Main Processes (Web Server): Thay vì một Web Server duy nhất, bạn có thể thiết lập nhiều Web Server, mỗi cái chạy trên một máy chủ khác nhau. Chúng đều kết nối đến cùng một Message Queue và Database.
    • Load Balancer: Một bộ cân bằng tải (load balancer) được đặt phía trước các Main Process này. Load balancer có nhiệm vụ phân phối các yêu cầu đến từ người dùng hoặc các webhook một cách đồng đều cho các Main Process.
    • Worker Processes: Vẫn hoạt động như trong Queue Mode, lấy công việc từ hàng đợi.
    • Message Queue & Database: Vẫn là các thành phần trung tâm, được chia sẻ bởi tất cả các Main Process và Worker Process.
  • Lợi ích của Multi-main setup:
    • Tính sẵn sàng cao (High Availability): Nếu một máy chủ chính bị sập, load balancer sẽ tự động chuyển hướng các yêu cầu đến các máy chủ chính còn lại. Điều này đảm bảo giao diện người dùng và các webhook vẫn hoạt động bình thường, không làm gián đoạn hệ thống.
    • Khả năng chịu tải (Scalability): Cho phép xử lý lượng truy cập và kích hoạt workflow lớn hơn. Bạn có thể dễ dàng thêm nhiều máy chủ chính (và cả worker) để đáp ứng nhu cầu tăng trưởng.
    • Cải thiện hiệu suất: Phân tán tải trên nhiều máy chủ giúp giảm thiểu độ trễ, đảm bảo các yêu cầu được xử lý nhanh chóng và hiệu quả hơn.

4. Thiết lập Muti-main (chỉ ó sẵn trên các gói self-hosted và Enterprise)

Để triển khai n8n trong thiết lập đa máy chủ, hãy đảm bảo:

  • Tất cả n8n main và các tiến trình đều chạy ở queue mode và được kết nối với Postgres và Redis.
  • Tất cả n8n main và các worker tiến trình đều chạy cùng một phiên bản n8n.
  • Tất cả n8n main và các tiến trình đều đặt biến môi trường N8N_MULTI_MAIN_SETUP_ENABLED thành true.
  • Tất cả các n8n main vef các tiến trình đều chạy phía sau bộ cân bằng tải với tính năng duy trì phiên được bật.

Các biến cần sử dụng để thiết lập n8n muti-main

- EXECUTIONS_PROCESS=main #Biến này xác định vai trò của một tiến trình n8n. Khi được đặt là main, tiến trình này sẽ hoạt động như một máy chủ chính
- N8N_MULTI_MAIN_SETUP_ENABLED=true #Biến này dùng để bật chế độ Multi-main setup.
- N8N_MULTI_MAIN_SETUP_KEY_TTL=10 #Biến này xác định thời gian tồn tại (Time to Live - TTL) của các khóa đồng bộ trong cơ sở dữ liệu (thường là Redis)
- N8N_MULTI_MAIN_SETUP_CHECK_INTERVAL=3 #Biến này xác định khoảng thời gian (tính bằng giây) mà mỗi máy chủ chính kiểm tra và đồng bộ trạng thái của các máy chủ chính khác. 

Để lại một bình luận

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

Nội dung