[Linux] Hướng dẫn cấu hình bonding interface network trên CentOS/RHEL 6/7

Linux cho phép quản trị viên cấu hình bonding interface từ 2 đến nhiều interface vật lý kết hợp lại thành 1 interface ảo có tên là ‘bonding interface‘ bằng cách sử dụng module kernel ‘bonding’ trên Linux. Điều này sẽ giúp cho 2 hoặc nhiều network interface hoạt động như 1 card mạng interface cũng như các lợi ích mà tính năng ‘bonding‘ mang đến như : tăng bandwidth, tăng tính dự phòng card mạng network, cân bằng tải mức cơ bản ở tầng network server,…

Hình ảnh cấu hình bonding interface network trên CentOS/RHEL. 
Nói sơ qua 1 ví dụ là bạn có thể sử dụng cơ chế dự phòng card mạng với ‘bonding interface‘ thì khi 1 card mạng NIC vật lý chết hoặc bị tháo dây mạng thì, ‘bonding interface‘ card mạng sẽ tự động chuyển đổi hoạt động network sang card mạng còn lại.

Trong bài viết này mình sẽ demo với ví dụ các thành phần như sau :
– Sử dụng 2 card mạng ‘eth0‘ và ‘eth1‘ tương ứng server phải có 2 card mạng vật lý, nhóm lại thành 1 card mạng ảo ‘bonding‘ là ‘bond0‘.
– Sử dụng cơ chế mode ‘active-backup‘ để chạy cơ chế dự phòng card mạng.

Giờ thì chúng ta cùng đến nội dung hướng dẫn cấu hình tạo card mạng ảo bonding trên Linux.

Contents

1. Cài đặt module ‘bonding’

– Bạn cần kiểm tra xem trên hệ thống Linux đã load module ‘bonding’ cho tính năng ‘bonding’ interface hay chưa, mặc định là chưa được load ? Bạn có thể đọc thêm bài viết này : Hướng dẫn liệt kê thông tin các module kernel driver trên Linux

# lsmod | grep “bonding"

 
– Nếu chưa thì bạn cần kích hoạt như sau.

# modprobe --first-time bonding
# modinfo bonding

 
– Cấu hình để load module ‘bonding’ khi hệ thống khởi động lại. Bạn cần tạo 1 file ‘bonding.conf’ nằm trong thư mục ‘/etc/modprobe.d’ (RHEL/CentOS từ 6.3 trở lên).

# vi /etc/modprobe.d/bonding.conf
alias bond0 bonding

 
Lưu ý:
– Nếu mới chỉ tạo 1 bonding interface ‘bond0’ thì cấu hình 1 dòng alias như trên.

2. Cấu hình bonding interface network

2.1 Khởi tạo cấu hình ‘bonding interface’ MASTER

– Để khởi tạo được cổng bonding interface, bạn cần tạo 1 file cấu hình có cú pháp ‘ifcfg-bondX‘ với X là số thứ tự của cổng interface bonding này.
– Nội dung cấu hình của file ‘ifcfg-bondX‘ vẫn dựa trên thông tin cấu hình 1 card mạng network bình thường. Điều quan trọng là bạn sẽ có thêm 2 cấu hình gồm : ‘TYPE=Bond‘ và ‘BONDING_MASTER=yes‘.
– Cơ chế chạy bonding interface sẽ là ‘active-backup‘ 1 card mạng hoạt động và 1 card mạng dự phòng trong trường hợp card mạng 1 chết hoặc có vấn đề.

# vi /etc/sysconfig/network-scripts/ifcfg-bond0
DEVICE=bond0
IPADDR=192.168.100.5
NETMASK=255.255.255.0
GATEWAY=192.168.100.1
ONBOOT=yes
BOOTPROTO=none
USERCTL=no
NM_CONTROLLED=no
BONDING_OPTS="miimon=100 mode=1"

– Không cấu hình 2 giá trị ‘NETWORK‘ và ‘BROADCAST‘ trong file cấu hình card mạng ‘bond0’ nếu bạn muốn cấu hình default gateway.
– “BONDING_OPTS” có thể cài giá trị sau: BONDING_OPTS=”miimon=100 mode=1″
mode của bonding interface có thể là 1 trong các lựa chọn sau:

+ mode = 0: balance-rr
+ mode = 1: active – backup
+ mode = 2: balance – xor
+ mode = 3: broadcast
+ mode = 4: 802.3ad
+ mode = 5: balance – tlb
+ mode = 6: balance – alb
+ miimon: là giá trị tính bằng milisecond (ms) chỉ thời gian giám sát MII của NIC.

 
2.2 Cấu hình card mạng ‘SLAVE’

– Sau khi cấu hình cổng ‘bonding interface‘ xong thì cổng bonding đó sẽ được coi là MASTER (chính) và các cổng interface khác được gom tham gia vào hoạt động bond interface sẽ được coi là các SLAVE (phụ). Lúc này ta cần lưu ý khi cấu hình các cổng interface chính đang có trong hệ thống phải thêm 2 giá trị ‘MASTER‘ và ‘SLAVE‘ để chỉ rõ vai trò thuộc tính của các interface này trong quá trình tham gia hoạt động bonding.

– Kế đến chúng ta sẽ cấu hình cho 2 card interface tham gia vào card interface bonding ví dụ là eth0eth1. Nội dung file cấu hình eth0 và eth1 như sau :

# vi /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
TYPE=Ethernet
ONBOOT=yes
BOOTPROTO=none
NM_CONTROLLED=no
MASTER=bond0
SLAVE=yes
# vi /etc/sysconfig/network-scripts/ifcfg-eth1
DEVICE=eth1
TYPE=Ethernet
ONBOOT=yes
BOOTPROTO=none
NM_CONTROLLED=no
MASTER=bond0
SLAVE=yes

 
Chú ý :
slave = yesmaster = bond0

3. Khởi động card bond0

– Bây giờ ta sẽ tiến hành khởi động lại dịch vụ mạng để up các card mạng cùng card bond0 mới cấu hình lên. Trong một số trường hợp bạn cần khởi động lại hệ thống để có thể hoạt động các cổng interface đã cấu hình.

# service network restart
# ifconfig -a
bond0 Link encap:Ethernet HWaddr 08:00:27:27:34:1D
inet addr:192.168.100.5 Bcast:192.168.100.255 Mask:255.255.255.0
inet6 addr: fe80::a00:27ff:fe27:341d/64 Scope:Link
UP BROADCAST RUNNING MASTER MULTICAST MTU:1500 Metric:1
RX packets:200 errors:0 dropped:0 overruns:0 frame:0
TX packets:160 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:18581 (18.1 KiB) TX bytes:22607 (22.0 KiB)

eth0 Link encap:Ethernet HWaddr 08:00:27:27:34:1D
UP BROADCAST RUNNING SLAVE MULTICAST MTU:1500 Metric:1
RX packets:195 errors:0 dropped:0 overruns:0 frame:0
TX packets:146 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:18281 (17.8 KiB) TX bytes:20855 (20.3 KiB)

eth1 Link encap:Ethernet HWaddr 08:00:27:27:34:1D
UP BROADCAST RUNNING SLAVE MULTICAST MTU:1500 Metric:1
RX packets:8 errors:0 dropped:0 overruns:0 frame:0
TX packets:17 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:480 (480.0 b) TX bytes:2010 (1.9 KiB)

 
– Với output lệnh trên, bạn sẽ thấy card interface NIC eth0 eth1 sẽ có cờ ‘SLAVE‘ và card interface bond0 sẽ có cờ ‘MASTER‘.

– Để theo dõi hoạt động trạng thái của card interface ‘bond0‘ thì bạn có thể đọc nội dung file hệ thống sau.

# cat /proc/net/bonding/bond0
Ethernet Channel Bonding Driver: v3.7.1 (April 27, 2011)

Bonding Mode: load balancing (round-robin)
MII Status: up
MII Polling Interval (ms): 100
Up Delay (ms): 0
Down Delay (ms): 0

Slave Interface: eth1
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 08:00:27:a5:56:c3
Slave queue ID: 0

Slave Interface: eth0
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 1
Permanent HW addr: 08:00:27:27:34:1d
Slave queue ID: 0

4. Một số lưu ý khác

– Để kiểm xác cơ chế hoạt động bonding, thì hãy xem nội dung file sau :

# cat /sys/class/net/bond0/bonding/mode
active-backup 1

 
– Để kiểm tra có bao nhiêu card interface ‘bonding‘ đang hoạt động trên hệ thống.

# cat /sys/class/net/bonding_masters
bond0

 
– Kiểm tra xem hoạt động có đúng chức năng backup card mạng không, thì bạn cứ rút 1 dây mạng ra và quan sát Linux có tự động chuyển đổi NIC từ eth0 sang eth1 để chạy dự phòng hay không. Log hoạt động này sẽ được ghi lại trong file ‘/var/log/messages

Nội dung bài viết đến đây là dừng rồi. Hy vọng các bạn thấy bài viết hữu ích.

Nguồn tham khảo thêm:
Link 1 | Link 2

Previous article[Linux] Hướng dẫn liệt kê thông tin các module kernel driver trên Linux
Next article[DirectAdmin] Hướng dẫn cấu hình DKIM trên Direct Admin
Bạn đang theo dõi website "https://cuongquach.com/" nơi lưu trữ những kiến thức tổng hợp và chia sẻ cá nhân về Quản Trị Hệ Thống Dịch Vụ & Mạng, được xây dựng lại dưới nền tảng kinh nghiệm của bản thân mình, Quách Chí Cường. Hy vọng bạn sẽ thích nơi này !