Monday, March 24, 2025

Cấu hình Load Balancing và Failover trên pfSense

-

1. Giới thiệu về Load Balancing và Failover

Trong hệ thống mạng, việc đảm bảo kết nối Internet luôn ổn định và có tốc độ tối ưu là rất quan trọng. Hai kỹ thuật phổ biến giúp duy trì kết nối mạng tốt hơn là Load Balancing (Cân bằng tải)Failover (Dự phòng kết nối).

pfSense là một firewall mã nguồn mở mạnh mẽ, cung cấp khả năng triển khai cả hai tính năng này, giúp tăng độ tin cậy của hệ thống mạng.

2. Load Balancing là gì?

2.1. Khái niệm

Load Balancing (Cân bằng tải) là kỹ thuật giúp chia lưu lượng mạng qua nhiều đường truyền WAN khác nhau nhằm tận dụng tối đa băng thông của từng kết nối, giảm tải cho mỗi đường truyền và cải thiện hiệu suất truy cập Internet.

Ví dụ:

  • WAN 1 có tốc độ 3Mbps
  • WAN 2 có tốc độ 7Mbps
  • Khi áp dụng Load Balancing, tổng băng thông có thể đạt 10Mbps, tùy thuộc vào cách thiết lập thuật toán cân bằng tải.

2.2. Lợi ích của Load Balancing

  • Tăng băng thông tổng thể: Kết hợp nhiều kết nối WAN thành một kênh truyền lớn hơn.
  • Tối ưu hóa tài nguyên mạng: Tránh tình trạng một đường truyền bị quá tải trong khi đường truyền khác rảnh rỗi.
  • Tăng cường độ tin cậy: Khi một WAN gặp sự cố, lưu lượng mạng sẽ được điều hướng sang các đường truyền còn lại.
  • Cải thiện hiệu suất truy cập: Giúp người dùng có tốc độ truy cập nhanh hơn và ổn định hơn.

2.3. Hoạt động của Load Balancing

pfSense sử dụng tính năng Gateway Groups để thiết lập Load Balancing. Khi một người dùng truy cập Internet, pfSense sẽ phân bổ lưu lượng dựa trên thuật toán Round-Robin hoặc Weighted Load Balancing (cân bằng tải theo trọng số).

Ví dụ nếu WAN 1 có trọng số là 3 và WAN 2 có trọng số là 7, thì khoảng 30% lưu lượng sẽ đi qua WAN 1 và 70% qua WAN 2.

3. Failover là gì?

3.1. Khái niệm

Failover (Dự phòng kết nối) là cơ chế giúp đảm bảo tính liên tục của kết nối Internet khi một đường truyền WAN gặp sự cố. Hệ thống sẽ tự động chuyển sang sử dụng đường truyền dự phòng mà không làm gián đoạn kết nối.

Ví dụ:

  • WAN 1 có tốc độ 7Mbps (được đặt làm kết nối chính).
  • WAN 2 có tốc độ 3Mbps (được đặt làm dự phòng).
  • Nếu WAN 1 bị mất kết nối, pfSense sẽ tự động chuyển sang WAN 2 mà không cần sự can thiệp thủ công.

3.2. Lợi ích của Failover

  • Đảm bảo tính liên tục của kết nối mạng: Hệ thống không bị gián đoạn khi đường truyền chính gặp sự cố.
  • Tự động chuyển đổi: Người dùng không cần can thiệp thủ công khi mạng chính bị mất.
  • Dễ dàng triển khai: Chỉ cần thiết lập Gateway Groups trên pfSense.

3.3. Hoạt động của Failover

pfSense sẽ giám sát trạng thái của các kết nối WAN thông qua chức năng Monitor IP. Khi kết nối chính (Primary WAN) bị mất, hệ thống sẽ tự động chuyển hướng toàn bộ lưu lượng sang kết nối dự phòng (Backup WAN). Khi kết nối chính được khôi phục, hệ thống sẽ tự động chuyển trở lại.

4. Mô hình triển khai trên pfSense

Dưới đây là sơ đồ mạng mô phỏng triển khai Load Balancing và Failover trên pfSense:

4.1. Thành phần hệ thống

  • pfSense Firewall: Đóng vai trò kiểm soát lưu lượng mạng và thực hiện Load Balancing + Failover.
  • WAN 1 (10.236.17.1/24): Kết nối với nhà cung cấp Internet 1.
  • WAN 2 (10.236.18.1/24): Kết nối với nhà cung cấp Internet 2.
  • LAN (10.237.7.80/24): Mạng nội bộ.
  • Router WAN 1 (10.236.17.254/24)Router WAN 2 (10.236.18.254/24): Cổng kết nối đến Internet.
  • DNS Server (8.8.8.8): Server DNS của Google để kiểm tra kết nối mạng.

4.2. Cách hoạt động

  • pfSense sẽ sử dụng Gateway Groups để thiết lập Load Balancing và Failover.
  • Khi cả hai WAN hoạt động bình thường, lưu lượng sẽ được chia theo trọng số giữa WAN 1 và WAN 2.
  • Khi WAN 1 mất kết nối, toàn bộ lưu lượng sẽ được chuyển sang WAN 2 và ngược lại.
  • Khi WAN 1 khôi phục, pfSense sẽ tự động đưa lưu lượng về trạng thái Load Balancing ban đầu.

5. Hướng dẫn cấu hình.

5.1. Cấu hình Load Balancing.

Bước 1 – Assignments interface.

Đây là Pfsense mình vừa cài xong và setup mới hoàn toàn, nên mình sẽ làm từ phần Assignments interface luôn.

Nhìn hình dưới thì mình đang có WAN, LAN và 1 interface chưa được assignments, bấm Add để assignments sử dụng interface này làm WAN thứ 2.

Bấm Save để lưu lại.

Bấm vào tên OPT1 (là tên của interface vừa Assignments ở trên), enable interface, đổi tên thành WAN 2 và set ip tĩnh cho nó.

Tượng tự cho WAN 1.

Bước 2 – Thiết lập tạo các Gateway nếu chưa có.

Bạn nhìn ở (1) sẽ thấy thông tin các interface mà bạn đã thiết lập ở phần trên (phần interface LAN mình đã thiết lập sẵn). Giờ bạn bấm thử vào Routing.

Chọn Gateway Groups -> Add.

Truy nhiên ở Gateway Groups bạn chưa có interface nào xuất hiện cả, lý do là bạn chưa thiết lập gateway cho các interface tương ứng.

Qua tab Gateways, bấm Add.

Thiết lập gateway cho WAN 1.

Kết quả đã có Interface cho WAN 1, bấm vào Add để thiết lập Interface cho WAN 2.

Thiết lập gateway cho WAN 2.

Giờ đây bạn đã có 2 Gateway tương ứng với 2 Interface.

Bước 3 – Phần này tùy chọn vì chỉ là phần giả lập DNS Server 8.8.8.8.

Ở phía đầu giả lập DNS Server 8.8.8.8 mình có 2 Server Linux để giả lập.

  • Mỗi server có 2 interface tương ứng 2 card mạng, interface ens160 sử dụng để ssh thôi (không quan tâm).
  • Interface thứ 2 ens192 sử dụng kết nối đến sơ đồ hệ thống LAB, trên interface này set 2 IP:
    • IP 10.236.17.254 sử dụng làm GW cho WAN1.
    • IP là 8.8.8.8 sử dụng làm địa chỉ DNS Server.

Và đây là cấu hình netplan của DNS Server thứ 1 của mình.

network:
  ethernets:
    ens160:
      addresses:
      - 10.237.7.71/24
    ens192:
      addresses:
      - 10.236.17.254/24
      - 8.8.8.8/32
      routes:
      - to: 0.0.0.0/0
        via: 10.236.17.1
  version: 2

Tương tự đây là cấu hình netplan của DNS Server thứ 2 của mình.

network:
  ethernets:
    ens160:
      addresses:
      - 10.237.7.72/24
    ens192:
      addresses:
      - 10.236.18.254/24
      - 8.8.8.8/32
      routes:
      - to: 0.0.0.0/0
        via: 10.236.18.1
  version: 2

Bước 4 – Kiểm tra kết nối đến gateway các WAN.

Kết nối từ WAN 1 đến gateway 10.236.17.254 thành công.

Kết nối từ WAN 2 đến gateway 10.236.18.254 thành công.

Kết nối từ WAN2 đến gateway 8.8.8.8 cũng thành công.

Kết nối từ WAN1 đến gateway 8.8.8.8 cũng thành công luôn.

Bước 5 – Cấu hình Gateway Groups.

Đây là phần quan trọng trong cấu hình ngày hôm nay, cấu hình này thuộc phần Gateway Groups trong pfSense, dùng để thiết lập cân bằng tải (Load Balancing) và chịu lỗi (Failover) cho các kết nối Internet.

🔹 Group Name (Tên nhóm)

  • Tên nhóm gateway, ví dụ: INTERNET_LOADBALANCING
  • Dùng để định danh nhóm khi áp dụng vào các rules của firewall.

🔹 Gateway Priority (Ưu tiên Gateway)

Cách hoạt động của Tier (Mức độ ưu tiên)

  • Các gateway được xếp theo Tier (mức độ ưu tiên).
  • Các gateway cùng Tier sẽ hoạt động theo cơ chế Load Balancing (Cân bằng tải).
  • Nếu một Tier không khả dụng, hệ thống sẽ chuyển sang Tier tiếp theo (Failover).

🔹 Ví dụ:

  • Cả 2 gateway đều Tier 1 → pfSense sẽ cân bằng tải giữa 2 đường mạng.
  • Gateway 1 là Tier 1, Gateway 2 là Tier 2 → pfSense sẽ chỉ sử dụng Gateway 1, nếu Gateway 1 bị lỗi thì sẽ chuyển sang Gateway 2.

Cách chọn cho từng trường hợp:

Mục đíchCách chọn Tier
Cân bằng tảiĐặt cả hai Gateway vào Tier 1
Chỉ sử dụng Gateway chính, failover sang backupGateway chính: Tier 1, Gateway dự phòng: Tier 2
Failover 2 bước (chính → phụ → dự phòng thứ 2)Gateway chính: Tier 1, phụ: Tier 2, dự phòng: Tier 3

🔹 Trigger Level (Mức kích hoạt)

Xác định khi nào pfSense sẽ coi một gateway là “bị lỗi” và chuyển sang Gateway khác, các tùy chọn như sau:

  • Member Down (Mặc định) ✅
    • Chỉ chuyển khi gateway không phản hồi (down hoàn toàn).
    • Phù hợp cho Failover (Dự phòng).
  • Packet Loss 📶
    • Chuyển khi phát hiện tỷ lệ mất gói quá cao.
    • Có thể gây chuyển đổi quá nhạy cảm khi mạng kém ổn định.
  • High Latency
    • Chuyển nếu độ trễ vượt ngưỡng.
    • Hữu ích nếu cần duy trì kết nối có độ trễ thấp (VD: VoIP, Game).
  • Packet Loss hoặc High Latency 📉
    • Kết hợp cả hai yếu tố.
    • Hữu ích khi cần chất lượng kết nối ổn định.

Cách chọn:

Mục đíchCách chọn Trigger Level
Chỉ chuyển khi link mất hoàn toànMember Down (Mặc định)
Chuyển khi mạng kém (lag, mất gói)Packet Loss hoặc High Latency
Yêu cầu kết nối nhanh, ổn định (VoIP, game)High Latency

Tóm tắt lựa chọn tốt nhất

Tình huốngTier SetupTrigger Level
Cân bằng tải giữa 2 đường mạngCả 2 gateway là Tier 1Member Down
Failover khi 1 đường mạng bị lỗiGateway chính: Tier 1, phụ: Tier 2Member Down
Chuyển nhanh khi mạng lag hoặc mất góiCả 2 gateway là Tier 1Packet Loss hoặc High Latency

Nếu bạn chỉ cần đảm bảo Internet không bị gián đoạn, Member Down là lựa chọn an toàn nhất. Nếu bạn cần đảm bảo chất lượng mạng (VD: họp Zoom, chơi game, VoIP), hãy thử Packet Loss hoặc High Latency.

Vậy trong trường hợp này mình thiết lập cân bằng tải nên mình chọn 2 interface đều tier 1.

Kết quả.

Bước 6 – Thiết lập Firewall Rules.

Phần thiết lập WAN mình bỏ qua vì mình chẳng cần test kết nối từ ngoài vào. Mình sẽ chỉ nói đến phần interface LAN.

Mình đơn giản chỉ thiết lập 1 rule any any cho interface LAN nhưng chỉ khác là mình chọn gateway là group INTERNET_LOADBALANCING thay cho từng gateway cụ thể.

Đây là hình ảnh các tùy chọn mình chụp tại phần lựa chọn Gateway cho bạn xem lại dễ hình dung.

Kết quả sau khi tạo xong rule.

6. Kiểm tra kết quả.

Đầu tiên hãy để cả 2 WAN1 và WAN2 đang online và test tới 8.8.8.8.

Sau đó ngắt 1 WAN bất kỳ, ví dụ của mình là WAN 2 và test kết nối, ping tới 10.236.18.254 với source là WAN 2 kết quả timeout.

Nhưng khi ping tới 8.8.8.8 với source là LAN, vẫn có kết nối -> dự phòng thành công.

Tiếp tục mở lại WAN 2 và tắt WAN 1.

-> Kết quả ping tới 10.236.17.254 với source là WAN 1 đã mất kết nối.

-> Kết quả ping tới 10.236.18.254 với source là WAN 2 đã có kết nối trở lại.

Nhưng khi bạn check tới 8.8.8.8 với source là LAN thì kết quả vẫn tới 8.8.8.8 bình thường. Như vậy đã dự phòng thành công.

6. Cấu hình Failover

Đơn giản cấu hình Failover chỉ chọn 2 loại Tier khác nhau, Tier nào thấp sẽ ưu tiên chạy trước.

Kết quả sau khi thay đổi.

7. Kết luận

Load Balancing và Failover là hai kỹ thuật quan trọng giúp nâng cao hiệu suất và độ tin cậy của hệ thống mạng. Với pfSense, bạn có thể dễ dàng triển khai cả hai tính năng này để đảm bảo hệ thống mạng hoạt động ổn định ngay cả khi có sự cố xảy ra. Hy vọng bài viết này sẽ giúp bạn hiểu rõ hơn về cách hoạt động của Load Balancing và Failover để áp dụng vào hệ thống của mình một cách hiệu quả.

LEAVE A REPLY

Please enter your comment!
Please enter your name here

4,956FansLike
256FollowersFollow
223SubscribersSubscribe
spot_img

Related Stories