Loading...

Cân bằng tải, share tải server web với Mikrotik

"Cân bằng tải server trên MikroTik là giải pháp Layer 4 giúp phân phối lưu lượng truy cập... sử dụng phương pháp PCC hoặc NTH để tối ưu hiệu suất."

1. Cân bằng tải Web Server và Failover với MikroTik PCC (Layer 7)

Trong các hệ thống dịch vụ Web doanh nghiệp, khi lượng truy cập tăng cao, việc sử dụng một máy chủ đơn lẻ dễ dẫn đến quá tải. Giải pháp tối ưu là triển khai cụm máy chủ (Server Farm) và sử dụng Router MikroTik để điều phối lưu lượng.

Bài viết này hướng dẫn kỹ thuật PCC (Per Connection Classifier) kết hợp với Netwatch HTTP Check – giải pháp "vàng" giúp giữ phiên làm việc (Sticky Session) ổn định tuyệt đối trên cả cổng 80 (HTTP) và 443 (HTTPS).


2. Tại sao nên ưu tiên thuật toán PCC thay vì NTH?

Khi khách hàng truy cập Website, trình duyệt thường mở nhiều kết nối song song. Việc lựa chọn thuật toán băm (Hash) sẽ quyết định độ ổn định của dịch vụ:

  • 2.1 Thuật toán NTH (Round-robin): Chia đều các kết nối theo số thứ tự (1-2-1-2). Điều này dễ dẫn đến lỗi "văng phiên đăng nhập" vì các thành phần của một trang web bị xé nhỏ sang các Server khác nhau.
  • 2.2 Thuật toán PCC (Source IP Hash): MikroTik sẽ băm địa chỉ IP nguồn của khách hàng để cố định họ vào một Server duy nhất. Toàn bộ các yêu cầu từ cùng một người dùng (dù là cổng 80 hay 443) sẽ luôn được đẩy về cùng một máy chủ, đảm bảo tính đồng nhất của Session.

3. Mô hình triển khai hệ thống (Topology)

Dưới đây là sơ đồ kết nối vật lý và luồng đi của dữ liệu từ Internet vào cụm Server nội bộ:

      Internet (WAN)
             |
      [IP Public: 203.0.113.10]
             |
      +--------------+
      |   MikroTik   | (L7 Load Balancer)
      +--------------+
             |
      +------+------+ (Mạng LAN nội bộ)
      |             |
 [Web_Srv1]    [Web_Srv2]
192.168.10.10  192.168.10.11

4. Cấu hình đánh dấu kết nối (Mangle)

Tại bước này, chúng ta để mặc định (không lọc Port) để Router xử lý nhanh hơn, giúp tiết kiệm tài nguyên CPU và đảm bảo tất cả các dịch vụ của cùng một Client đều đi chung một luồng.

/ip firewall mangle
# Phân loại 50% khách hàng vào nhóm Server 1 (Dựa trên IP nguồn)
add chain=prerouting in-interface=ether1 connection-mark=no-mark \
    per-connection-classifier=src-address:2/0 action=mark-connection \
    new-connection-mark=WEB_SRV1_conn passthrough=yes

# Phân loại 50% khách hàng còn lại vào nhóm Server 2
add chain=prerouting in-interface=ether1 connection-mark=no-mark \
    per-connection-classifier=src-address:2/1 action=mark-connection \
    new-connection-mark=WEB_SRV2_conn passthrough=yes

5. Cấu hình điều hướng dịch vụ (DST-NAT)

Chúng ta thực hiện Forward cổng 80 và 443 về các Server nội bộ. Lưu ý: Phần comment bắt buộc phải chính xác để Script tự động hóa ở bước sau có thể nhận diện.

/ip firewall nat
# NAT cho Server 1 (Cổng 80 và 443)
add chain=dstnat connection-mark=WEB_SRV1_conn protocol=tcp dst-port=80,443 \
    action=dst-nat to-addresses=192.168.10.10 comment="NAT_SRV1"

# NAT cho Server 2 (Cổng 80 và 443)
add chain=dstnat connection-mark=WEB_SRV2_conn protocol=tcp dst-port=80,443 \
    action=dst-nat to-addresses=192.168.10.11 comment="NAT_SRV2"

# Cấu hình Masquerade để luồng dữ liệu phản hồi thông suốt
add chain=srcnat out-interface=ether1 action=masquerade

6. Tự động Failover với Netwatch v7 (Health Check Layer 7)

Công cụ Netwatch trên RouterOS v7 cho phép kiểm tra sâu vào trạng thái dịch vụ HTTPS thay vì chỉ Ping IP. Nếu Server không trả về mã 200 OK, Router sẽ tự động vô hiệu hóa Rule NAT để chuyển hướng người dùng sang Server còn lại.

/tool netwatch
# Kiểm tra Server 1 qua HTTPS: Tự động tắt/mở NAT dựa trên trạng thái thực tế
add host=192.168.10.10 type=https-get interval=30s timeout=5s \
    up-script="/ip firewall nat enable [find comment="NAT_SRV1"]" \
    down-script="/ip firewall nat disable [find comment="NAT_SRV1"]"

# Kiểm tra Server 2 qua HTTPS
add host=192.168.10.11 type=https-get interval=30s timeout=5s \
    up-script="/ip firewall nat enable [find comment="NAT_SRV2"]" \
    down-script="/ip firewall nat disable [find comment="NAT_SRV2"]"

7. Các lưu ý quan trọng khi triển khai

  • Đồng bộ chứng chỉ SSL: Cả hai Server cần cài đặt chứng chỉ SSL giống hệt nhau (nên dùng Wildcard) để tránh cảnh báo bảo mật khi khách hàng được điều hướng.
  • Tối ưu Health Check: Nên tạo một tệp tin nhẹ (ví dụ: /health.html) để Netwatch kiểm tra, tránh tạo tải giả lên trang chủ.
  • Kiểm tra Log: Theo dõi quá trình tự động của hệ thống qua Log: /log print where message~"netwatch".

8. Kết luận

Sự kết hợp giữa PCC Load Balancing và Netwatch Health Check biến Router MikroTik thành một bộ cân bằng tải chuyên nghiệp, đảm bảo độ ổn định Session và khả năng dự phòng sự cố tối ưu cho doanh nghiệp.