Saturday, January 18, 2025

Hướng dẫn cấu hình bonding 2 card mạng trong Centos

-

1. Giới thiệu.

Network bonding (còn được gọi là NIC bonding hoặc Ethernet bonding) là một kỹ thuật trong hệ thống mạng cho phép bạn kết hợp nhiều card mạng thành một link logical duy nhất trên máy chủ. Mục tiêu chính của network bonding là tăng cường khả năng sẵn sàng và tăng hiệu suất của kết nối mạng bằng cách cho phép các card mạng hoạt động song song và cân bằng tải lưu lượng mạng giữa chúng. Nó cũng có khả năng dự phòng, tức là nếu một card mạng gặp sự cố, thì các card mạng khác vẫn có thể duy trì kết nối mạng.

Dưới đây là các chế độ hoạt động của network bonding trên CentOS 7:

  • Balance Round Robin (mode=0): Trong chế độ này, dữ liệu được gửi đi qua các card mạng theo chu kỳ tuần tự. Nó không cân bằng tải dựa trên tải lưu lượng mạng, mà chỉ sử dụng tất cả các card mạng có sẵn theo thứ tự.
  • Active Backup (mode=1): Chế độ này chỉ sử dụng một card mạng làm hoạt động chính và card mạng còn lại làm dự phòng. Nếu card mạng chính gặp sự cố, thì card mạng dự phòng sẽ tiếp quản.
  • Balance XOR (mode=2): Dữ liệu được gửi đi dựa trên một hàm băm của địa chỉ nguồn và địa chỉ đích, nghĩa là lưu lượng mạng được cân bằng tải dựa trên các thông tin trong gói tin.
  • Broadcast (mode=3): Chế độ này sử dụng tất cả các card mạng để gửi dữ liệu đến tất cả các card mạng khác. Nó thường không được sử dụng nhiều vì gây tăng tải mạng không cần thiết.
  • 802.3ad (mode=4): Chế độ này yêu cầu cả hai phía (máy chủ và switch) hỗ trợ giao thức IEEE 802.3ad (LACP – Link Aggregation Control Protocol). Nó cân bằng tải dựa trên cơ sở nhiều thông tin như tình trạng của các card mạng.
  • Balance TLB (mode=5): Cân bằng tải theo lưu lượng đến và ra. Dữ liệu ra được gửi đến một card mạng, trong khi dữ liệu vào được chia đều qua các card mạng.
  • Balance ALB (mode=6): Chế độ này cân bằng tải theo địa chỉ MAC. Nó tạo ra một bản sao của địa chỉ MAC của card mạng chính và gửi dữ liệu ra thông qua các card mạng khác với các địa chỉ MAC này.

Mỗi chế độ có ứng dụng và tính năng riêng, bạn cần chọn chế độ phù hợp với nhu cầu của mạng và cơ sở hạ tầng của bạn. Để cấu hình bonding trên CentOS 7, bạn cần sử dụng công cụ cấu hình nmcli hoặc chỉnh sửa file cấu hình của bonding trực tiếp.

2. Cấu hình.

Hãy list tất cả các interfaces hiện có của bạn, chọn 2 port có tốc độ giống nhau để bonding, mình sử dụng 2 port enp98s0f0 và enp98s0f1.

$ tcpdump --list-interfaces
1.eno1
2.eno2
3.enp59s0
4.enp59s0d1
5.enp98s0f0
6.enp98s0f1
7.lo [Loopback]

Mình sẽ down 2 port này trước.

ifdown enp98s0f0
ifdown enp98s0f1

Thư mục lưu file cấu hình network trong Centos /etc/sysconfig/network-scripts. Hãy tạo file cấu hình interface theo định dạng ifcfg-<interface_name>, đầu tiên mình tạo file ifcfg-enp98s0f0.

vi /etc/sysconfig/network-scripts/ifcfg-enp98s0f0

Điền vào nội dung dưới

TYPE=Ethernet
NAME="bond1 link 1"
DEVICE=enp98s0f0
ONBOOT=yes
MASTER=bond1
SLAVE=yes

Tiếp theo mình tạo file ifcfg-enp98s0f1.

vi /etc/sysconfig/network-scripts/ifcfg-enp98s0f1

Điền vào nội dung dưới

TYPE=Ethernet
NAME="bond1 link 1"
DEVICE=enp98s0f1
ONBOOT=yes
MASTER=bond1
SLAVE=yes

Tiếp theo mình tạo file ifcfg-bond1 cho interface bond1

vi /etc/sysconfig/network-scripts/ifcfg-bond1

Điền vào nội dung dưới

BONDING_OPTS="downdelay=300 miimon=300 mode=802.3ad updelay=300 xmit_hash_policy=layer3+4 lacp_rate=30"
TYPE=Bond
BONDING_MASTER=yes
NAME="Bond connection 2"
DEVICE=bond1
ONBOOT=yes
BRIDGE="br1"

Do mình chạy vlan trunking nên mình sẽ tạo 1 interface bond cho vlan 204.

vi /etc/sysconfig/network-scripts/ifcfg-bond1.204

Điền vào nội dung dưới với VLAN_ID chính là vlan bạn đã tạo trên thiết bị network và interface bond1.204 này mình sẽ bridge sang card interface br1 để đặt ip cho nó.

VLAN=yes
TYPE=Vlan
PHYSDEV=bond1
VLAN_ID=204
REORDER_HDR=yes
GVRP=no
MVRP=no
HWADDR=
DEVICE=bond1.204
ONBOOT=yes
BRIDGE="br1"

Tiếp theo mình tạo file ifcfg-br1 cho interface br1.

vi /etc/sysconfig/network-scripts/ifcfg-br1

Hãy gõ vào nội dung dưới.

DEVICE="br1"
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=none
IPADDR=192.168.89.141
PREFIX=25
DEFROUTE=yes
ONBOOT=yes
TYPE="Bridge"
DELAY="2"
STP="off"

Sau khi hoàn thành bạn hãy start toàn bộ các interface liên quan như dưới.

ifup enp98s0f0
ifup enp98s0f1
ifup bond1
ifup bond1.204
ifup br2

List lại các interfaces bạn sẽ thấy đã xuất hiện thêm 3 interface mới bond1, bond1.204 và br1.

$ tcpdump --list-interfaces
1.eno1
2.eno2
3.br1
4.bond1
5.bond1.204
6.enp59s0
7.enp59s0d1
8.enp98s0f0
9.enp98s0f1
10.lo [Loopback]

Kiểm tra trạng thái các interface.

$ nmcli device status
DEVICE           TYPE      STATE                                  CONNECTION
br1              bridge    connected                              Bridge br1
enp59s0          ethernet  connected                              bond0 slave 1
enp59s0d1        ethernet  connected                              bond0 slave 2
bond1.204        vlan      connected                              Vlan bond1.204
lo               loopback  unmanaged                              --

Kiểm tra trạng thái bonding bằng cách xem file bond như dưới.

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

Bonding Mode: IEEE 802.3ad Dynamic link aggregation
Transmit Hash Policy: layer3+4 (1)
MII Status: up
MII Polling Interval (ms): 300
Up Delay (ms): 300
Down Delay (ms): 300

802.3ad info
LACP rate: slow
Min links: 0
Aggregator selection policy (ad_select): stable
System priority: 65535
System MAC address: ac:1f:6b:eb:1a:e4
Active Aggregator Info:
	Aggregator ID: 1
	Number of ports: 2
	Actor Key: 9
	Partner Key: 32769
	Partner Mac Address: 00:23:04:ee:be:01

Slave Interface: eno1
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 1
Permanent HW addr: ac:1f:6b:eb:1a:e4
Slave queue ID: 0
Aggregator ID: 1
Actor Churn State: none
Partner Churn State: none
Actor Churned Count: 0
Partner Churned Count: 0
details actor lacp pdu:
    system priority: 65535
    system mac address: ac:1f:6b:eb:1a:e4
    port key: 9
    port priority: 255
    port number: 1
    port state: 61
details partner lacp pdu:
    system priority: 32667
    system mac address: 00:23:04:ee:be:01
    oper key: 32769
    port priority: 32768
    port number: 257
    port state: 61

Slave Interface: eno2
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: ac:1f:6b:eb:1a:e5
Slave queue ID: 0
Aggregator ID: 1
Actor Churn State: none
Partner Churn State: none
Actor Churned Count: 0
Partner Churned Count: 0
details actor lacp pdu:
    system priority: 65535
    system mac address: ac:1f:6b:eb:1a:e4
    port key: 9
    port priority: 255
    port number: 2
    port state: 61
details partner lacp pdu:
    system priority: 32667
    system mac address: 00:23:04:ee:be:01
    oper key: 32769
    port priority: 32768
    port number: 16641
    port state: 61

Kết quả vPC mình show trên switch.

vPC-NXOS01# show vpc 7

vPC status
----------------------------------------------------------------------------
Id    Port          Status Consistency Reason                Active vlans
--    ------------  ------ ----------- ------                ---------------
7     Po7           up     success     success               1,204

Và cuối cùng là check kết nối về gateway.

$ ping 192.168.89.129
PING 192.168.89.129 (192.168.89.129) 56(84) bytes of data.
64 bytes from 192.168.89.129: icmp_seq=1 ttl=255 time=1.37 ms
64 bytes from 192.168.89.129: icmp_seq=2 ttl=255 time=1.25 ms
64 bytes from 192.168.89.129: icmp_seq=3 ttl=255 time=1.30 ms
64 bytes from 192.168.89.129: icmp_seq=4 ttl=255 time=1.15 ms

--- 192.168.89.129 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3004ms
rtt min/avg/max/mdev = 1.156/1.272/1.374/0.086 ms

LEAVE A REPLY

Please enter your comment!
Please enter your name here

4,956FansLike
256FollowersFollow
223SubscribersSubscribe
spot_img

Related Stories