Sunday, September 29, 2024

Network bond trên Proxmox

-

Bond (hoặc bonding) là một kỹ thuật trong mạng máy tính cho phép kết hợp nhiều card mạng vật lý thành một liên kết ảo duy nhất được gọi là bond interface hoặc bond. Bonding cho phép các card mạng hoạt động cùng nhau như một đơn vị duy nhất để tăng băng thông, cung cấp tính sẵn sàng và cải thiện hiệu suất mạng.

Khi tạo bond, các card mạng vật lý được kết nối với nhau thông qua các giao thức bonding như LACP (Link Aggregation Control Protocol) hoặc IEEE 802.3ad. Các giao thức này cho phép card mạng hoạt động song song và phân phối tải trên các card mạng, tăng cường băng thông và cung cấp tính dự phòng.

Trên Proxmox, việc tạo bond cho phép bạn kết hợp các card mạng vật lý trong các node để tăng cường băng thông và đảm bảo tính sẵn sàng của hệ thống khi sử dụng các dịch vụ như Ceph storage. Bằng cách sử dụng bond, bạn có thể tận dụng tối đa khả năng mạng của các card mạng và cung cấp hiệu suất mạng tốt hơn cho hệ thống Proxmox.

Có một số lợi ích khi sử dụng Bonding (tạo bond) trên Proxmox:

  • Tăng cường băng thông: Bằng cách tạo bond từ nhiều card mạng vật lý, bạn có thể tăng băng thông tổng thể của hệ thống. Bonding cho phép các card mạng hoạt động song song, tổng hợp băng thông và cung cấp khả năng truyền dữ liệu đồng thời, giúp tăng hiệu suất mạng và khả năng xử lý tải cao.
  • Tính dự phòng và sẵn sàng cao: Khi sử dụng bond, nếu một trong các card mạng trong bond gặp sự cố hoặc mất kết nối, các card mạng khác trong bond vẫn tiếp tục hoạt động. Điều này tạo ra tính dự phòng và khả năng sẵn sàng cao cho hệ thống mạng.
  • Tính linh hoạt và mở rộng: Bonding cho phép bạn thêm hoặc thay đổi card mạng trong bond mà không làm gián đoạn hoạt động của hệ thống. Điều này giúp tăng tính linh hoạt và dễ dàng mở rộng hệ thống mạng.
  • Cải thiện hiệu suất mạng: Bonding có thể được cấu hình để sử dụng các thuật toán phân phối tải khác nhau, bao gồm phân phối theo địa chỉ MAC, theo IP hoặc theo port. Điều này giúp cân bằng tải trên các card mạng và cải thiện hiệu suất mạng tổng thể.

Với những lợi ích trên, việc sử dụng Bonding trên Proxmox giúp tăng cường hiệu suất mạng, cung cấp tính sẵn sàng và linh hoạt cho hệ thống, đồng thời đảm bảo tính dự phòng khi có sự cố xảy ra.

Sử dụng lệnh ip link show | grep "^[0-9]" để show các interface đang có trong hệ thống.

$ ip link show | grep "^[0-9]"
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
2: enp3s0f0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq master vmbr0 state UP mode DEFAULT group default qlen 1000
3: enp3s0f1: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 1000
4: ens3f0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 1000
5: ens3f1: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 1000
6: vmbr0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP mode DEFAULT group default qlen 100

Hoặc bạn cũng có thể vào phần Network, mình sẽ thực hiện bond 2 card ens3f0 và ens3f1 thành bond0.

Bấm Create chọn Linux Bond hoặc OVS Bond, mình sẽ sử dụng Linux Bond.

Đặt tên là bond0, tại IPv4/CIDR hãy đặt IP cho card bond0 này, Slaves bạn hãy liệt kê các interface tham gia vào bond0 (ens3f0 và ens3f1), mode mình chọn LACP (802.3ad), Hash policy mình chọn layer3+4, và MTU mình set là 9000 (lý do card mạng của mình 10G nên mình để MTU 9000 để tăng hiệu năng cho network).
Dưới đây là giải thích về các chế độ (mode) khác nhau trong kỹ thuật bonding:

  • balance-rr (Round-Robin):
    • Chế độ này phân phối các gói tin trên các card mạng trong bond theo cách lần lượt. Nghĩa là mỗi gói tin sẽ được gửi lần lượt qua các card mạng.
    • Lợi điểm: Tăng băng thông tổng thể bằng cách sử dụng song song các card mạng.
    • Hạn chế: Không cân bằng tải đối xứng và không kiểm soát trạng thái của các card mạng.
  • active-backup:
    • Chế độ này chỉ một card mạng trong bond hoạt động, các card mạng khác sẽ ở trạng thái chờ sẵn (standby).
    • Khi card mạng hoạt động gặp sự cố, bond sẽ tự động chuyển sang sử dụng card mạng standby.
    • Lợi điểm: Đảm bảo tính sẵn sàng và dự phòng khi một card mạng gặp sự cố.
    • Hạn chế: Không tăng băng thông vì chỉ sử dụng một card mạng trong bond.
  • balance-xor:
    • Chế độ này sử dụng thuật toán XOR để phân phối gói tin dựa trên địa chỉ MAC nguồn và đích.
    • Mỗi gói tin được gửi đến một card mạng cụ thể trong bond dựa trên kết quả của phép XOR.
    • Lợi điểm: Tăng băng thông và cân bằng tải trên các card mạng trong bond.
    • Hạn chế: Không kiểm soát trạng thái và không cân bằng tải đối xứng.
  • broadcast:
    • Chế độ này gửi các gói tin đến tất cả các card mạng trong bond.
    • Lợi điểm: Đảm bảo rằng tất cả các card mạng nhận được cùng một gói tin.
    • Hạn chế: Không tăng băng thông và không cân bằng tải.
  • LACP (802.3ad):
    • Chế độ này sử dụng giao thức LACP (Link Aggregation Control Protocol) để tạo liên kết bond giữa các card mạng.
    • Giao thức LACP cho phép tạo liên kết động, phân phối tải và kiểm soát trạng thái của các card mạng.
    • Lợi điểm: Tăng băng thông, cân bằng tải và có khả năng kiểm soát trạng thái của các card mạng.
    • Hạn chế: Yêu cầu hỗ trợ LACP từ cả switch và card mạng.
  • balance-tlb:
    • Chế độ này sử dụng cân bằng tải theo thông lượng (Throughput Load Balancing).
    • Gói tin được phân phối dựa trên thông lượng hiện tại của các card mạng trong bond.
    • Lợi điểm: Tăng băng thông và cân bằng tải trên các card mạng.
    • Hạn chế: Không cân bằng tải đối xứng và không kiểm soát trạng thái.
  • balance-alb (Adaptive Load Balancing):
    • Chế độ này sử dụng cân bằng tải linh hoạt dựa trên địa chỉ MAC của nguồn và đích, thông lượng và trạng thái của các card mạng.
    • Gói tin được phân phối đến các card mạng trong bond một cách linh hoạt để tăng băng thông và cân bằng tải.
    • Lợi điểm: Tăng băng thông, cân bằng tải và kiểm soát trạng thái.
    • Hạn chế: Yêu cầu hỗ trợ từ switch và có thể tạo ra sự không ổn định trong môi trường mạng phức tạp.

Các hash policy trong bonding được sử dụng để xác định cách phân phối gói tin trên các card mạng trong bond. Dưới đây là giải thích về các hash policy phổ biến:

  • Layer2 (địa chỉ MAC):
    • Hash policy này sử dụng địa chỉ MAC nguồn và đích của gói tin để quyết định card mạng mà gói tin sẽ được gửi.
    • Đây là phương pháp phân phối gói tin dựa trên thông tin Layer 2 của gói tin.
    • Lợi điểm: Phân phối gói tin một cách cân bằng và tuân thủ theo địa chỉ MAC.
    • Hạn chế: Không cân bằng tải theo thông lượng hoặc trạng thái của gói tin.
  • Layer2+3 (địa chỉ MAC và IP):
    • Hash policy này kết hợp địa chỉ MAC nguồn và đích cùng với địa chỉ IP nguồn và đích để quyết định card mạng mà gói tin sẽ được gửi.
    • Phương pháp này phân phối gói tin dựa trên thông tin Layer 2 (địa chỉ MAC) và Layer 3 (địa chỉ IP) của gói tin.
    • Lợi điểm: Phân phối gói tin một cách cân bằng hơn bằng cách kết hợp thông tin từ cả Layer 2 và Layer 3.
    • Hạn chế: Không cân bằng tải theo thông lượng hoặc trạng thái của gói tin.
  • Layer3+4 (địa chỉ IP và cổng):
    • Hash policy này sử dụng địa chỉ IP nguồn và đích cùng với số hiệu cổng nguồn và đích để quyết định card mạng mà gói tin sẽ được gửi.
    • Phương pháp này phân phối gói tin dựa trên thông tin Layer 3 (địa chỉ IP) và Layer 4 (cổng) của gói tin.
    • Lợi điểm: Phân phối gói tin cân bằng hơn bằng cách kết hợp thông tin từ cả Layer 3 và Layer 4.
    • Hạn chế: Không cân bằng tải theo thông lượng hoặc trạng thái của gói tin.

Sau khi bấm Create, bạn nhận được 1 card bond0 (1) nhưng nó chưa được áp dụng trong hệ thống, hãy bấm Apply Configuration để áp dụng thay đổi.

Xác nhận Yes.

Lúc này nếu bạn xem file /etc/network/interfaces bạn cũng thấy thông tin cấu hình của bond được tự động sinh ra ở trong file này.

$ cat /etc/network/interfaces
# network interface settings; autogenerated
# Please do NOT modify this file directly, unless you know what
# you're doing.
#
# If you want to manage parts of the network configuration manually,
# please utilize the 'source' or 'source-directory' directives to do
# so.
# PVE will preserve these directives, but will NOT read its network
# configuration from sourced files, so do not attempt to move any of
# the PVE managed interfaces into external files!

auto lo
iface lo inet loopback

iface enp3s0f0 inet manual

iface enp3s0f1 inet manual

auto ens3f0
iface ens3f0 inet manual

auto ens3f1
iface ens3f1 inet manual

auto bond0
iface bond0 inet static
        address 10.0.0.1/24
        bond-slaves ens3f0 ens3f1
        bond-miimon 100
        bond-mode 802.3ad
        bond-xmit-hash-policy layer3+4
        mtu 9000

auto vmbr0
iface vmbr0 inet static
        address 192.168.13.225/23
        gateway 192.168.12.5
        bridge-ports enp3s0f0
        bridge-stp off
        bridge-fd 0

Nếu bạn không muốn tạo bằng GUI thì bạn có thể thay đổi file /etc/network/interfaces cũng được.

auto bond0
iface bond0 inet static
        address 10.0.0.1/24
        bond-slaves ens3f0 ens3f1
        bond-miimon 100
        bond-mode 802.3ad
        bond-xmit-hash-policy layer3+4
        mtu 9000

Sau đó restart lại network.

systemctl restart networking

Bạn sẽ nhìn thấy thông tin interface có card bond0, đồng thời trên GUI cũng hiện thông tin này cho bạn.

$ ip link show | grep "^[0-9]"
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
2: enp3s0f0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq master vmbr0 state UP mode DEFAULT group default qlen 1000
3: enp3s0f1: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 1000
4: ens3f0: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 9000 qdisc mq master bond0 state UP mode DEFAULT group default qlen 1000
5: ens3f1: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 9000 qdisc mq master bond0 state UP mode DEFAULT group default qlen 1000
15: bond0: <BROADCAST,MULTICAST,MASTER,UP,LOWER_UP> mtu 9000 qdisc noqueue state UP mode DEFAULT group default qlen 1000
16: vmbr0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP mode DEFAULT group default qlen 1000

LEAVE A REPLY

Please enter your comment!
Please enter your name here

4,956FansLike
256FollowersFollow
223SubscribersSubscribe
spot_img

Related Stories