Saturday, September 28, 2024

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

-

Ubuntu là một hệ điều hành mã nguồn mở dựa trên hệ điều hành Linux. Nó được phát triển bởi Canonical Ltd và là một trong những phiên bản Linux phổ biến nhất, đặc biệt trong cộng đồng người dùng máy tính cá nhân.

Bonding trên Ubuntu (hoặc Linux Bonding) là một tính năng trong hạ tầng mạng cho phép bạn kết hợp nhiều giao diện mạng vật lý thành một liên kết mạng ảo. Điều này giúp tăng tốc độ truyền dữ liệu, cung cấp tính sẵn sàng cao hơn và cân bằng tải trên mạng.

Khi bạn sử dụng bonding trên Ubuntu, bạn có thể kết hợp nhiều card mạng vật lý thành một giao diện mạng ảo, được gọi là bond interface. Máy tính hoặc máy chủ Ubuntu sẽ xem bond interface như một giao diện mạng đơn lẻ. Tất cả các gói dữ liệu sẽ được chia tỷ lệ và chuyển đổi qua các card mạng vật lý thành viên của bond interface để tăng băng thông và đảm bảo tính sẵn sàng.

Bonding trên Ubuntu cung cấp nhiều chế độ khác nhau như mode 0 (balance-rr), mode 1 (active-backup), mode 2 (balance-xor), mode 3 (broadcast), mode 4 (802.3ad), mode 5 (balance-tlb), và mode 6 (balance-alb). Mỗi chế độ có cách hoạt động và ưu điểm riêng. Bạn có thể cấu hình bonding trên Ubuntu bằng cách sử dụng công cụ cấu hình mạng như ifconfig, ip, hoặc thông qua các công cụ quản lý mạng như NetworkManager.

Bonding trên Ubuntu là một giải pháp hữu ích cho các môi trường mạng đòi hỏi tính sẵn sàng cao, tăng tốc độ truyền dữ liệu và cân bằng tải trên mạng.

Giả sử mình có 2 server với thông tin như sau:

  • Server 1:
    • IP Wan: 192.168.13.209/23
    • IP Local: 10.0.0.1/24
    • Interface Wan: ens18
    • Interface Local: ens19, ens20
  • IP Wan: 192.168.13.210/23
    • IP Local: 10.0.0.2/24
    • Interface Wan: ens18
    • Interface Local: ens19, ens20

Trên cả 2 server phần Interface và IP Wan mình sẽ không động tới. Với IP Local mình sẽ Bond 2 interface ens19 và ens20 lại với nhau và đặt IP theo thông tin như trên.

Đầu tiên ở server 1 mình chỉnh sửa file cấu hình network /etc/netplan/50-cloud-init.yamltheo thông tin như dưới.

cat > /etc/netplan/50-cloud-init.yaml << 'OEF'
network:
  version: 2
  ethernets:
    ens18:
      addresses:
        - 192.168.13.209/23
      gateway4: 192.168.12.5
      nameservers:
        addresses: [8.8.8.8, 1.1.1.1]
        search: []
    ens19:
      dhcp4: no
    ens20:
      dhcp4: no
  bonds:
    bond0:
      interfaces: [ens19, ens20]
      addresses:
        - 10.0.0.1/24
      parameters:
        mode: balance-rr
        transmit-hash-policy: layer2+3
OEF

Đoạn cấu hình mạng trên đề cập đến việc sử dụng bonding trên Ubuntu. Dưới đây là giải thích từng phần của cấu hình:

  • version: 2: Đây là phiên bản của cấu hình mạng. Trong trường hợp này, sử dụng phiên bản 2.
  • ethernets: Đây là phần định nghĩa các giao diện mạng vật lý.
    • ens18: Giao diện mạng vật lý ens18 được cấu hình với địa chỉ IP là 192.168.13.209/23, gateway4 là 192.168.12.5 và nameservers được cấu hình với các địa chỉ DNS là 8.8.8.8 và 1.1.1.1.
    • ens19ens20: Đây là các giao diện mạng vật lý ens19 và ens20 được chỉ định để tham gia vào bond.
  • bonds: Đây là phần định nghĩa các bond interface.
    • bond0: Đây là bond interface được đặt tên là bond0. Nó được cấu hình để kết hợp ens19 và ens20 thành một bond. Bond interface này được cấu hình với địa chỉ IP là 10.0.0.1/24.
      • mode: balance-rr: Đây là chế độ hoạt động của bond interface, trong trường hợp này là balance-rr (balance round-robin). Chế độ này sẽ chia tỷ lệ truyền dữ liệu đều đặn qua các giao diện thành viên của bond.
      • transmit-hash-policy: layer2+3: Đây là chính sách băm (hashing policy) được sử dụng để quyết định cách phân phối gói tin trên các giao diện thành viên của bond. Trong trường hợp này, chính sách băm layer2+3 được sử dụng, tức là sử dụng thông tin từ lớp 2 (địa chỉ MAC) và lớp 3 (địa chỉ IP) để quyết định giao diện thành viên nào sẽ được sử dụng cho gói tin.

Sau khi cấu hình xong sử dụng lệnh dưới để áp dụng thay đổi.

netplan apply

Áp dụng tương tự cho server 2 với thông tin như dưới.

cat > /etc/netplan/50-cloud-init.yaml << 'OEF'
network:
  version: 2
  ethernets:
    ens18:
      addresses:
        - 192.168.13.210/23
      gateway4: 192.168.12.5
      nameservers:
        addresses: [8.8.8.8, 1.1.1.1]
        search: []
    ens19:
      dhcp4: no
    ens20:
      dhcp4: no
  bonds:
    bond0:
      interfaces: [ens19, ens20]
      addresses:
        - 10.0.0.2/24
      parameters:
        mode: balance-rr
        transmit-hash-policy: layer2+3
OEF

Sau khi cấu hình xong sử dụng lệnh dưới để áp dụng thay đổi.

netplan apply

Dưới đây là danh sách các tham số (parameters), mode và transmit-hash-policy trong cấu hình bonding trên Ubuntu:

Tham số (parameters):

  • mode: Chế độ hoạt động của bond interface.
  • transmit-hash-policy: Chính sách băm (hashing policy) được sử dụng để quyết định cách phân phối gói tin trên các giao diện thành viên của bond.

Các chế độ (mode) có thể được sử dụng:

  • balance-rr: Balance round-robin.
  • active-backup: Active backup.
  • balance-xor: Balance XOR.
  • broadcast: Broadcast.
  • 802.3ad: IEEE 802.3ad (LACP).
  • balance-tlb: Balance-tlb.
  • balance-alb: Adaptive load balancing.

Các chính sách băm (transmit-hash-policy) có thể được sử dụng:

  • layer2: Sử dụng thông tin từ lớp 2 (địa chỉ MAC) để quyết định giao diện thành viên cho gói tin.
  • layer3+4: Sử dụng thông tin từ lớp 3 và 4 (địa chỉ IP và cổng) để quyết định giao diện thành viên cho gói tin.
  • layer2+3: Sử dụng thông tin từ cả lớp 2 và lớp 3 (địa chỉ MAC và IP) để quyết định giao diện thành viên cho gói tin.

Những tham số và chế độ này cho phép bạn tùy chỉnh cách hoạt động của bond interface và cách phân phối gói tin trên các giao diện thành viên của bond để đạt được hiệu suất và tính sẵn sàng mong muốn.

LEAVE A REPLY

Please enter your comment!
Please enter your name here

4,956FansLike
256FollowersFollow
223SubscribersSubscribe
spot_img

Related Stories