Cấu hình LACP (802.3ad) trên Linux: Giải pháp gộp băng thông và dự phòng thực chiến

Network tutorial - IT technology blog
Network tutorial - IT technology blog

Vấn đề: Khi một sợi cáp mạng trở thành điểm nghẽn

Khoảng nửa năm trước, mình quản lý cụm database cho một sàn e-commerce với lưu lượng khoảng 10.000 người truy cập đồng thời. Vào giờ cao điểm flash sale, Grafana báo đỏ rực: interface eth0 chạm ngưỡng 950Mbps, gần như kịch trần card 1Gbps. Hệ quả là latency tăng vọt, các bản backup định kỳ bị treo và transaction bắt đầu báo lỗi timeout.

Việc nâng cấp lên card 10Gbps lúc đó là bất khả thi vì hạ tầng Switch cũ không có cổng SFP+. Nếu chỉ gắn thêm card mạng rồi đặt IP khác, mình sẽ phải sửa code ứng dụng để tự cân bằng tải, cực kỳ phức tạp. Chưa kể, nếu sợi cáp duy nhất đó bị lỏng đầu RJ45, toàn bộ server sẽ mất kết nối ngay lập tức.

Tại sao LACP (802.3ad) là cứu cánh?

Linux hỗ trợ nhiều chế độ Bonding (gộp card mạng) khác nhau. Tuy nhiên, nếu bạn cần cả hiệu năng lẫn sự ổn định, LACP (Mode 4) là lựa chọn hàng đầu. Nó cho phép gộp hai card 1Gbps thành một đường truyền logic 2Gbps và tự động chuyển đổi dự phòng khi có sự cố.

Khác với Mode 0 dễ gây lỗi xáo trộn gói tin (out-of-order) hay Mode 1 chỉ dùng được một sợi duy nhất, Mode 4 thực hiện “cái bắt tay” thông minh giữa Server và Switch. Nếu một đường truyền gặp trục trặc, giao thức này sẽ loại bỏ nó khỏi nhóm trong vài miligiây mà không làm đứt quãng phiên làm việc của người dùng.

Lưu ý quan trọng: LACP bắt buộc phải có sự hỗ trợ từ phía Switch. Đừng cố cấu hình trên Server rồi cắm vào một chiếc Unmanaged Switch giá rẻ, hệ thống của bạn sẽ không thể hoạt động.

So sánh nhanh các chế độ gộp kênh thông dụng

  • Active-Backup (Mode 1): Độ an toàn cao nhưng lãng phí. Bạn có 2 card nhưng băng thông vẫn chỉ giới hạn ở 1Gbps.
  • Round-robin (Mode 0): Gộp được băng thông nhưng kén Switch, dễ làm hỏng gói tin TCP do đến sai thứ tự.
  • Adaptive Load Balancing (Mode 6): Hoạt động được với Switch thường nhưng độ ổn định không thể so sánh với LACP chuẩn.

Triển khai LACP chuẩn chỉ trên Linux

Dưới đây là phương án mình đã áp dụng cho hệ thống production và chạy ổn định suốt 6 tháng qua. Bạn cần thực hiện cấu hình song song trên cả thiết bị mạng và máy chủ.

1. Thiết lập trên Switch (Cisco Example)

Bạn phải gom các cổng vật lý vào một Port-Channel trước. Ví dụ, để gộp cổng Gi0/1 và Gi0/2:

interface Range GigabitEthernet0/1 - 2
 channel-group 1 mode active
 channel-protocol lacp

Chế độ mode active đảm bảo Switch sẽ chủ động gửi gói tin LACP để duy trì kết nối.

2. Cấu hình với nmcli (RHEL/CentOS/AlmaLinux/Debian)

Giả sử bạn có 2 interface eth1eth2. Hãy tạo một interface ảo mang tên bond0 bằng các lệnh sau:

# Tạo interface bond0 với các tham số tối ưu
nmcli connection add type bond con-name bond0 ifname bond0 bond.options "mode=4,miimon=100,lacp_rate=1,xmit_hash_policy=layer3+4"

# Gán các card vật lý vào nhóm
nmcli connection add type ethernet slave-type bond con-name bond0-eth1 ifname eth1 master bond0
nmcli connection add type ethernet slave-type bond con-name bond0-eth2 ifname eth2 master bond0

# Thiết lập IP tĩnh
nmcli connection modify bond0 ipv4.addresses 192.168.1.100/24 ipv4.gateway 192.168.1.1 ipv4.method manual

# Kích hoạt hệ thống
nmcli connection up bond0

Mẹo nhỏ: Hãy dùng xmit_hash_policy=layer3+4. Tùy chọn này giúp phân tải dựa trên cả IP và Port, giúp tận dụng tối đa băng thông của cả hai đường truyền thay vì chỉ dựa vào địa chỉ MAC như mặc định.

3. Cấu hình trên Ubuntu với Netplan

Mở file /etc/netplan/01-netcfg.yaml và chỉnh sửa nội dung như sau:

network:
  version: 2
  ethernets:
    eth1: {}
    eth2: {}
  bonds:
    bond0:
      interfaces: [eth1, eth2]
      addresses: [192.168.1.100/24]
      routes:
        - to: default
          via: 192.168.1.1
      parameters:
        mode: 802.3ad
        mii-monitor-interval: 100
        lacp-rate: fast
        transmit-hash-policy: layer3+4

Kinh nghiệm debug từ những đêm thức trắng

Sai lầm đáng nhớ nhất của mình là gặp tình trạng rớt gói tin (packet loss) khoảng 3% chỉ vào khung giờ cao điểm. Mọi thông số nhìn qua đều ổn, nhưng cứ đến 10 giờ tối là hệ thống chập chờn.

Sau khi kiểm tra kỹ, mình phát hiện một sợi cáp mạng bị lỗi vật lý nhẹ, khiến interface liên tục “up/down” trong vài miligiây. Do cấu hình miimon=100 quá nhạy khiến Bond liên tục loại bỏ rồi thêm lại card mạng đó, gây mất ổn định.

Để kiểm tra trạng thái LACP chính xác nhất, bạn hãy dùng lệnh:

cat /proc/net/bonding/bond0

Hãy nhìn vào dòng Partner Mac Address. Nếu thấy giá trị 00:00:00:00:00:00, chắc chắn Switch của bạn đang cấu hình sai hoặc không nhận diện được giao thức LACP.

Checklist nhanh để đảm bảo thành công:

  • Luôn kiểm tra bằng ethtool eth1 để chắc chắn các card mạng chạy cùng tốc độ (Speed) và Duplex.
  • Ưu tiên dùng layer3+4 cho các dịch vụ Web hoặc Database để tối ưu phân tải.
  • Một sợi cáp kém chất lượng có thể kéo sụt hiệu năng của cả cụm LACP, đừng tiếc tiền thay cáp mới.

Triển khai LACP không chỉ đơn thuần là gộp băng thông. Đây là cách bạn xây dựng một lớp giáp bảo vệ vững chắc cho dịch vụ trước những sự cố hạ tầng không thể lường trước.

Share: