So sánh phương pháp: Netplan và NetworkManager cho Linux Network Bonding
Vận hành các hệ thống production quan trọng trên một card mạng (NIC) duy nhất tiềm ẩn rủi ro vận hành rất lớn. Dây cáp mạng bị lỏng, module quang SFP+ bị hỏng hoặc cổng switch gặp sự cố đều có thể khiến toàn bộ máy chủ ngừng hoạt động. Network bonding giải quyết triệt để điểm lỗi đơn (single point of failure) này. Bằng cách gộp nhiều NIC vật lý thành một giao diện mạng logic duy nhất, bạn sẽ có được khả năng failover liền mạch cùng băng thông tổng hợp cao hơn.
Các bản phân phối Linux doanh nghiệp hiện đại quản lý mạng thông qua hai công cụ chính: Netplan (mặc định trên Ubuntu 20.04/22.04/24.04 và Debian 12) và NetworkManager / nmcli (tiêu chuẩn trên RHEL 8/9, AlmaLinux, Rocky Linux và Fedora).
Kiến trúc Netplan vs. NetworkManager
- Netplan (Khai báo dạng YAML): Netplan đọc và phân tích các tệp YAML trong
/etc/netplan/, sau đó tạo tệp cấu hình back-end chosystemd-networkdhoặcNetworkManager. Công cụ này rất phù hợp với quy trình triển khai tự động hóa qua cloud-init, Ansible hoặc Terraform khi cấu hình được quản lý trên Git. - NetworkManager (Dynamic Daemon & CLI): NetworkManager sử dụng công cụ dòng lệnh
nmcliđể cấu hình kết nối linh hoạt theo thời gian thực. Công cụ lưu trữ các hồ sơ kết nối trong/etc/NetworkManager/system-connections/và áp dụng thay đổi ngay lập tức mà không cần khởi động lại toàn bộ network stack.
Các chế độ Bonding: LACP (Mode 4) vs. Active-Backup (Mode 1)
Lựa chọn chế độ bonding phù hợp dựa trên tính năng của switch mạng phía trên (upstream switch):
- Mode 4 (802.3ad Dynamic Link Aggregation / LACP): Gộp nhiều giao diện mạng thành một đường truyền chung duy nhất. Lưu lượng gửi đi (outbound traffic) được cân bằng tải trên các link đang hoạt động thông qua chính sách transmit hash (chẳng hạn như Layer 3+4 băm IP và cổng mạng). Chế độ này yêu cầu upstream switch phải được cấu hình nhóm cổng LACP port-channel (LAG) ở chế độ active.
- Mode 1 (Active-Backup): Chỉ duy trì một card mạng slave hoạt động tại một thời điểm. Card slave ở trạng thái dự phòng sẽ tiếp quản đường truyền chỉ trong vài mili-giây nếu link chính bị mất tín hiệu kết nối. Chế độ này không yêu cầu cấu hình đặc biệt nào trên switch.
Ưu và nhược điểm của các phương pháp & chế độ cấu hình
Netplan
Ưu điểm:
- Cú pháp YAML dạng khai báo rõ ràng, giúp việc review mã nguồn và kiểm tra lịch sử GitOps trở nên dễ dàng.
- Lệnh
netplan trytích hợp sẵn tính năng tự động rollback sau 120 giây, ngăn ngừa nguy cơ mất kết nối điều khiển từ xa. - Được cài đặt sẵn và tích hợp chặt chẽ trong toàn bộ hệ sinh thái Ubuntu.
Nhược điểm:
- Quy tắc thụt đầu dòng nghiêm ngặt: chỉ cần thừa một phím tab hoặc khoảng trắng là quá trình parse cấu hình sẽ báo lỗi.
- Đóng vai trò là lớp vỏ renderer tạo cấu hình thay vì là một service mạng độc lập.
NetworkManager (nmcli)
Ưu điểm:
- Tính năng tự động hoàn thành lệnh (Tab-completion) trong
nmcligiúp đẩy nhanh thao tác cấu hình thủ công khi cần xử lý sự cố khẩn cấp. - Áp dụng thay đổi cấu hình hồ sơ ngay tức thì cho các interface đang hoạt động.
- Cú pháp lệnh nhất quán trên toàn bộ các hệ thống RHEL, AlmaLinux và Rocky Linux enterprise.
Nhược điểm:
- Khó viết template tự động hóa hơn so với việc sử dụng các tệp manifest YAML tĩnh.
- Các profile kết nối cũ không còn dùng và sự sai lệch UUID có thể tích tụ sau các lần chạy thử nghiệm liên tục.
So sánh đánh đổi giữa LACP (Mode 4) và Active-Backup (Mode 1)
| Tính năng | LACP (Mode 4 / 802.3ad) | Active-Backup (Mode 1) |
|---|---|---|
| Yêu cầu Switch | Managed switch có cấu hình 802.3ad Port-Channel / LAG ở trạng thái active | Hoạt động tốt trên unmanaged switch hoặc các switch độc lập riêng biệt |
| Băng thông khả dụng | Toàn bộ băng thông tổng hợp của các link (ví dụ: 2 cổng 10GbE mang lại tới ~20 Gbps cho các luồng truyền song song) | Giới hạn ở tốc độ của một giao diện mạng đơn lẻ (ví dụ: tối đa 10 Gbps) |
| Tốc độ Failover | Phát hiện dưới 1 giây (<1000ms với gói tin LACPDU 1s chu kỳ nhanh) | Thường từ 100ms–300ms tùy thuộc vào chu kỳ thăm dò MII của link |
Mô hình đề xuất
Đối với các máy chủ database bare-metal, hypervisor và storage server kết nối vào managed switch, bạn nên cấu hình Mode 4 (802.3ad) LACP kết hợp với chính sách transmit hash layer3+4. Bằng cách băm (hash) địa chỉ IP nguồn/đích cùng với số cổng TCP/UDP, Linux sẽ phân bổ lưu lượng đều trên tất cả các link vật lý.
Trước khi bắt đầu, hãy đảm bảo bạn đã chuẩn bị:
- Hai giao diện mạng vật lý sẵn sàng (ví dụ: 2 cổng 1GbE
enp3s0/enp3s1hoặc 2 cổng 10GbE SFP+ens1f0/ens1f1). - Các cổng trên upstream switch đã được gán vào nhóm trunk LACP active (ví dụ: lệnh
channel-group 1 mode activetrên Cisco IOS). - Quyền truy cập quản trị ngoài băng (out-of-band như IPMI, iDRAC hoặc serial console) để dự phòng an toàn.
Trên một cụm replication PostgreSQL gồm 2 node chạy Ubuntu 22.04 LTS trên máy chủ Dell PowerEdge trang bị 2 card mạng 10GbE Intel X520, cấu hình LACP này đã giúp tăng tốc độ truyền snapshot database đa luồng từ 114 MB/s (mức nghẽn của một link đơn) lên 218 MB/s qua giao diện bond.
Hướng dẫn triển khai chi tiết
Bước 1: Kiểm tra các giao diện mạng vật lý và nạp Kernel Module
Liệt kê các giao diện mạng hiện có trên hệ thống:
ip link show
Nạp module bonding của Linux và cấu hình để tự động nạp lại sau mỗi lần khởi động:
sudo modprobe bonding
echo "bonding" | sudo tee /etc/modules-load.d/bonding.conf
Bước 2A: Cấu hình LACP Bonding với Netplan (Ubuntu / Debian)
Xác định tệp cấu hình Netplan chính trong thư mục /etc/netplan/ (thường là 01-netcfg.yaml hoặc 50-cloud-init.yaml). Luôn tạo bản sao lưu trước:
sudo cp /etc/netplan/01-netcfg.yaml /etc/netplan/01-netcfg.yaml.bak
Mở tệp và khai báo giao diện bond master bond0 cùng các thành viên slave enp3s0 và enp3s1:
network:
version: 2
renderer: networkd
ethernets:
enp3s0:
dhcp4: no
enp3s1:
dhcp4: no
bonds:
bond0:
interfaces:
- enp3s0
- enp3s1
addresses:
- 192.168.1.50/24
routes:
- to: default
via: 192.168.1.1
nameservers:
addresses:
- 1.1.1.1
- 8.8.8.8
parameters:
mode: 802.3ad
lacp-rate: fast
mii-monitor-interval: 100
transmit-hash-policy: layer3+4
Kiểm tra cú pháp một cách an toàn. Nếu cấu hình mới làm mất kết nối và bạn không nhấn Enter trong vòng 120 giây, Netplan sẽ tự động khôi phục lại cấu hình cũ:
sudo netplan try
Sau khi xác nhận thành công, áp dụng vĩnh viễn các thay đổi:
sudo netplan apply
Bước 2B: Cấu hình LACP Bonding với NetworkManager (RHEL / AlmaLinux / Rocky)
Thực thi các lệnh nmcli sau để khởi tạo bond master và gắn các giao diện slave vào:
# 1. Tạo profile cho bond master
sudo nmcli connection add type bond con-name bond0 ifname bond0 \
bond.options "mode=802.3ad,lacp_rate=fast,miimon=100,xmit_hash_policy=layer3+4" \
ipv4.addresses 192.168.1.50/24 ipv4.gateway 192.168.1.1 \
ipv4.dns "1.1.1.1 8.8.8.8" ipv4.method manual
# 2. Gán các interface slave vật lý vào bond master
sudo nmcli connection add type ethernet con-name bond0-slave1 ifname enp3s0 master bond0
sudo nmcli connection add type ethernet con-name bond0-slave2 ifname enp3s1 master bond0
# 3. Kích hoạt các link slave và master bond
sudo nmcli connection up bond0-slave1
sudo nmcli connection up bond0-slave2
sudo nmcli connection up bond0
Bước 3: Kiểm tra trạng thái Bond và LACP Aggregation
Kiểm tra trạng thái thời gian thực được driver kernel bonding báo cáo:
cat /proc/net/bonding/bond0
Kiểm tra xem các Aggregator ID có đang active và tốc độ kết nối trên toàn bộ các cổng có đạt chuẩn không:
Ethernet Channel Bonding Driver: v5.15.0-generic
Bonding Mode: IEEE 802.3ad Dynamic link aggregation
Transmit Hash Policy: layer3+4 (1)
MII Status: up
MII Polling Interval (ms): 100
Up Delay (ms): 0
Down Delay (ms): 0
802.3ad info
LACP rate: fast
Min links: 0
Aggregator ID: 1
Number of ports: 2
Slave Interface: enp3s0
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 0
Aggregator ID: 1
Slave Interface: enp3s1
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 0
Aggregator ID: 1
Bước 4: Thực hiện kiểm thử Failover thực tế
Bắt đầu gửi luồng ICMP ping tần suất cao đến gateway từ một máy bên ngoài hoặc một cửa sổ terminal riêng biệt:
ping -i 0.2 192.168.1.1
Mô phỏng sự cố interface bằng cách hạ một cổng vật lý xuống:
sudo ip link set enp3s0 down
Kiểm tra lại /proc/net/bonding/bond0. Bạn sẽ thấy enp3s0 chuyển sang MII Status: down. Tiến trình ping vẫn tiếp tục truyền qua enp3s1 mà không bị rớt gói tin nào. Bật lại giao diện mạng:
sudo ip link set enp3s0 up
LACP sẽ tự động đàm phán lại trạng thái và đưa enp3s0 trở lại aggregator đang hoạt động trong vòng 1 đến 3 giây.

