Cấu hình Network Bonding LACP (802.3ad) trên Proxmox VE: Gộp băng thông và dự phòng mạng thực tế

Virtualization tutorial - IT technology blog
Virtualization tutorial - IT technology blog

Quick start: Cấu hình bond LACP trong 5 phút

2 giờ sáng, Zabbix réo inh ỏi. Cụm PostgreSQL trên Proxmox chạm trần 1 Gbps do chạy batch job đúng lúc sao lưu dữ liệu. Cùng lúc, cổng eth0 chập chờn (flapping) khiến tỷ lệ rớt gói vọt lên 18%. Cách giải quyết dứt điểm lúc này: gộp 2 cổng mạng vật lý (enp3s0 và enp4s0) thành một liên kết LACP 802.3ad duy nhất.

Mở terminal SSH vào node Proxmox và chạy theo thứ tự sau:

  1. Đảm bảo hệ thống đã có ifupdown2 để nạp lại cấu hình mạng không cần khởi động lại server:
apt-get update && apt-get install ifupdown2 -y
  1. Mở file cấu hình mạng /etc/network/interfaces:
nano /etc/network/interfaces
  1. Khai báo interface bond0 và gắn vào bridge vmbr0:
auto lo
iface lo inet loopback

iface enp3s0 inet manual
iface enp4s0 inet manual

auto bond0
iface bond0 inet manual
    bond-slaves enp3s0 enp4s0
    bond-miimon 100
    bond-mode 802.3ad
    bond-xmit-hash-policy layer2+3
    bond-lacp-rate 1

auto vmbr0
iface vmbr0 inet static
    address 192.168.10.50/24
    gateway 192.168.10.1
    bridge-ports bond0
    bridge-stp off
    bridge-fd 0
  1. Kiểm tra cú pháp rồi kích hoạt cấu hình mới ngay lập tức:
ifreload -a
cat /proc/net/bonding/bond0

Cấu hình thành công khi output xuất hiện MII Status: up và cả hai slave interface có cùng Aggregator ID.

Bản chất kỹ thuật của LACP 802.3ad trên Linux

LACP không phải phép thuật cắm dây là chạy. Từng có người cắm 2 dây mạng từ host vào switch unmanaged phổ thông rồi bật mode 4. Chưa đầy 10 giây, loop mạng xảy ra và đánh sập toàn bộ switch bằng broadcast storm. Nguyên tắc bất di bất dịch: switch vật lý bắt buộc phải là loại Managed và được cấu hình Link Aggregation Group (LAG/LACP) tương ứng trước.

3 thông số then chốt cần lưu ý

  • bond-mode 802.3ad (Mode 4): Hai đầu host và switch liên tục trao đổi gói tin LACPDU. Một cổng đứt cáp? Toàn bộ phiên làm việc tự động dồn sang cổng còn lại sau chưa đầy 1 giây. Phiên TCP của máy ảo không bị rớt.
  • bond-miimon 100: Chu kỳ kiểm tra trạng thái vật lý cổng mạng là 100ms. Con số này đủ nhạy để phát hiện đứt link tức thì. Nó cũng nhẹ nhàng, không gây hao tổn CPU server.
  • bond-xmit-hash-policy layer2+3: Thuật toán chia tải khi gửi gói tin. Mặc định là layer2 (chỉ băm MAC). Thiết lập này rất tệ trên môi trường ảo hóa vì mọi gói đi ra gateway đều mang cùng một MAC đích. Bạn nên đổi sang layer2+3 hoặc layer3+4 để thuật toán băm dựa trên cả IP và Port, giúp chia tải đều hơn.
  • bond-lacp-rate 1 (fast): Ép hai đầu gửi LACPDU mỗi 1 giây/lần thay vì 30 giây (slow). Cụm mạng sẽ nhận diện sự cố và đàm phán lại nhanh gấp nhiều lần.

Thao tác trực tiếp từ Proxmox Web GUI

Nếu không muốn chỉnh file qua tay trong đêm, giao diện web của Proxmox hỗ trợ làm việc này rất nhanh:

  1. Truy cập Node > System > Network.
  2. Nhấp Create > Linux Bond.
  3. Đặt tên bond0. Điền enp3s0 enp4s0 vào ô Slaves. Chọn Mode LACP (802.3ad) và Hash policy layer2+3.
  4. Mở chỉnh sửa vmbr0, đổi mục Bridge ports thành bond0.
  5. Nhấn nút Apply Configuration màu cam trên thanh menu. Gói ifupdown2 sẽ áp cấu hình nền mà không gián đoạn máy ảo đang chạy.

Mở rộng: VLAN Trunking và cấu hình switch đầu cuối

Chạy nhiều dải VLAN trên cùng cặp bond

Môi trường sản xuất thường chia tách lưu lượng: VLAN 10 (Web), VLAN 20 (DB) và VLAN 30 (Ceph/NFS). Thay vì tạo hàng loạt interface phụ, hãy bật cờ VLAN Aware trên bridge vmbr0:

auto vmbr0
iface vmbr0 inet static
    address 192.168.10.50/24
    gateway 192.168.10.1
    bridge-ports bond0
    bridge-stp off
    bridge-fd 0
    bridge-vlan-aware yes
    bridge-vids 2-4094

Trong phần cấu hình card mạng của từng VM, bạn chỉ cần gán số VLAN Tag mong muốn. Proxmox tự động gắn tag 802.1Q vào frame rồi đẩy qua bond0 ra switch.

Cấu hình phía Switch (Cisco & MikroTik)

Cổng switch nối vào Proxmox phải ở chế độ Dynamic LACP Active. Ví dụ mẫu trên switch Cisco Catalyst:

interface range GigabitEthernet0/1 - 2
 description Uplink-PVE-Node01
 switchport mode trunk
 channel-group 1 mode active
!

Với MikroTik RouterOS, tạo một interface trong menu Interfaces > Bonding, chọn mode 802.3ad, mục Link Monitoring để mii, và transmit hash policy chọn layer-2-and-3.

Kinh nghiệm thực chiến và xử lý sự cố

1. Bấm Apply xong mất kết nối Web GUI

Trình duyệt xoay vòng, ping gateway rớt sạch. Tình huống này xảy ra khi switch chưa kịp cấu hình LACP, hoặc switch bị cấu hình nhầm sang Static LAG thay vì 802.3ad Dynamic.

Xử lý khẩn cấp qua console IPMI/iDRAC/iLO:

# Tách bridge về card mạng đơn lẻ để lấy lại quyền truy cập
sed -i 's/bridge-ports bond0/bridge-ports enp3s0/' /etc/network/interfaces
ifreload -a

2. Kiểm tra log bonding từ kernel

Đèn link trên switch sáng không có nghĩa là LACP đã bắt tay thành công. Hãy đọc dữ liệu từ driver kernel:

cat /proc/net/bonding/bond0

Tập trung vào 2 dòng quan trọng:

  • Partner Mac Address: Phải là địa chỉ MAC của switch. Nếu thấy 00:00:00:00:00:00, host chưa nhận được gói LACPDU nào từ switch. Kiểm tra lại cáp hoặc cấu hình port-channel.
  • Actor Churn State / Partner Churn State: Trạng thái chuẩn phải là none. Nếu hiện churned, kết nối đang bị flapping do lệch tốc độ (speed duplex) hoặc cáp mạng lỏng.

3. LACP không tăng tốc cho một kết nối đơn lẻ

Gộp 2 card mạng 1 Gbps không biến đường truyền thành 2 Gbps cho một lệnh tải file scp hay wget duy nhất. Một phiên TCP từ Client A đến Server B có hash cố định, nên nó chỉ đi qua đúng một dây mạng (tối đa ~940 Mbps sau khi trừ overhead).

Băng thông tổng 2 Gbps chỉ phát huy tác dụng khi có nhiều client truy cập cùng lúc, hoặc khi chạy các công cụ benchmark hỗ trợ đa luồng song song như iperf3 -P 8.

Share: