Tuesday, January 21, 2025

Sử dụng LACP, Vlan và Bridge với Openvswitch để chịu lỗi và cân bằng tải network

-

1. Tổng quan.

Open vSwitch (OpenvSwitch hay OVS) là một công cụ ảo hóa mạng mã nguồn mở được sử dụng để xây dựng và quản lý các mạng ảo trên các máy chủ vật lý hoặc ảo. OpenvSwitch cung cấp các tính năng chuyển mạch mạnh mẽ và linh hoạt, cung cấp khả năng ảo hóa lớp 2 và lớp 3, cũng như hỗ trợ các giao thức như VLAN, STP, GRE, VXLAN, và MPLS.

Network bond (hay còn được gọi là bonding) là quá trình kết hợp nhiều kênh vật lý thành một kênh mạng duy nhất, đảm bảo tính sẵn sàng cao và tăng cường băng thông của mạng. Trong OpenvSwitch, network bond được sử dụng để liên kết các cổng vật lý với nhau, tạo thành một liên kết hợp lý với khả năng cung cấp tính sẵn sàng cao và tăng cường khả năng truyền dẫn.

Network bridge là một thành phần trong OpenvSwitch cho phép kết nối các mạng ảo và mạng vật lý với nhau. Bridge hoạt động như một switch ảo, cho phép các thiết bị và máy chủ trong mạng ảo hoặc mạng vật lý có thể giao tiếp với nhau bằng cách chuyển tiếp gói tin dữ liệu. Bridge trong OpenvSwitch cung cấp các tính năng như cấu hình VLAN, điều khiển luồng giao thông, và các chức năng mở rộng khác nhằm tăng cường hiệu suất và quản lý mạng.

2. Thực hành.

Trước khi vào bài thực hành, bạn hãy tham khảo sơ đồ đấu nối của mình như dưới.

Sau khi xem xong sơ đồ, bạn hãy tiến hành config theo các bước như sau:

Bước 1 – Cập nhật danh sách gói và cài đặt openvswitch-switch.

apt update
apt install openvswitch-switch -y

Bước 2 – Thay đổi config trong file /etc/network/interfaces.

Trên Node pve-node1.

Đây là nội dung gốc của file /etc/network/interfaces.

auto lo
iface lo inet loopback

iface ens33 inet manual

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

iface ens34 inet manual

iface ens35 inet manual

Và đây là nội dung của file /etc/network/interfaces sau khi thay đổi, cấu hình dưới tạo ra một bridge (vmbr1) và liên kết nó với bond interface (bond0) và hai VLAN (vlan101, vlan102). Các VLAN này có các địa chỉ IP tương ứng và sử dụng OpenvSwitch để quản lý giao tiếp mạng và chuyển tiếp dữ liệu trên các cổng vật lý và ảo.

auto lo
iface lo inet loopback

iface ens33 inet manual

auto ens34
iface ens34 inet manual

auto ens35
iface ens35 inet manual

auto vlan101
iface vlan101 inet static
        address 10.0.0.1/24
        ovs_type OVSIntPort
        ovs_bridge vmbr1

auto vlan102
iface vlan102 inet static
        address 20.0.0.1/24
        ovs_type OVSIntPort
        ovs_bridge vmbr1

auto bond0
iface bond0 inet manual
        ovs_bonds ens34 ens35
        ovs_type OVSBond
        ovs_bridge vmbr1
        ovs_options bond_mode=balance-slb

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

auto vmbr1
iface vmbr1 inet manual
        ovs_type OVSBridge
        ovs_ports bond0 vlan101 vlan102

Dưới đây là giải thích cho các cấu hình được đưa ra:

  • VLAN 101:
    • auto vlan101: Khởi động giao diện mạng VLAN 101 tự động.
    • iface vlan101 inet static: Thiết lập giao diện mạng VLAN 101 với cấu hình địa chỉ IP tĩnh.
    • address 10.0.0.1/24: Thiết lập địa chỉ IP của VLAN 101 là 10.0.0.1 với subnet mask /24.
    • ovs_type OVSIntPort: Chỉ định loại giao diện mạng là OVSIntPort (OVS Internal Port).
    • ovs_bridge vmbr1: Liên kết giao diện mạng với cầu (bridge) có tên vmbr1.
  • VLAN 102:
    • Tương tự như VLAN 101, cấu hình này áp dụng cho VLAN 102.
    • address 20.0.0.1/24: Thiết lập địa chỉ IP của VLAN 102 là 20.0.0.1 với subnet mask /24.
  • Bond interface (bond0):
    • auto bond0: Khởi động bond interface tự động.
    • iface bond0 inet manual: Thiết lập bond interface với cấu hình địa chỉ IP được quản lý bằng tay (manual).
    • ovs_bonds ens34 ens35: Liên kết các cổng vật lý ens34 và ens35 vào bond interface.
    • ovs_type OVSBond: Chỉ định bond interface là loại OVSBond.
    • ovs_bridge vmbr1: Liên kết bond interface với cầu (bridge) có tên vmbr1.
    • ovs_options bond_mode=balance-slb: Thiết lập chế độ bond là balance-slb (balance load with session binding), tức là phân chia tải cân đối giữa các cổng vật lý kết nối vào bond interface.
  • Bridge interface (vmbr1):
    • auto vmbr1: Khởi động bridge interface tự động.
    • iface vmbr1 inet manual: Thiết lập bridge interface với cấu hình địa chỉ IP được quản lý bằng tay (manual).
    • ovs_type OVSBridge: Chỉ định bridge interface là loại OVSBridge.
    • ovs_ports bond0 vlan101 vlan102: Liên kết bond interface (bond0) và các VLAN (vlan101, vlan102) vào bridge interface (vmbr1).

Sau khi thay đổi xong bạn phải khởi động lại dịch vụ network để áp dụng thay đổi.

systemctl restart networking.service

Do mình đang áp dụng cho Proxmox nên trong cấu hình network của Proxmox bạn cũng có thế thấy cấu hình trên GUI Proxmox cũng thay đổi theo.

  • Cấu hình OVS bond.
  • Cấu hình OVS Bridge.
  • Cấu hình OVS IntPort của vlan101.
  • Cấu hình OVS IntPort của vlan102.

Và đây là hình chụp tổng quan các cấu hình sau khi thay đổi.

Bạn hãy áp dụng config tương tự cho Node pve-node1pve-node3, nhớ thay đổi thông số IP, tên interface,… đúng thông số của Node tương ứng.

Bước 3 – Kiểm tra kết quả.

Giờ mình sẽ kiểm tra ping theo quy trình sau:

  • pve-node1 check icmp sang pve-node2.
  • pve-node2 check icmp sang pve-node3.
  • pve-node3 check icmp sang pve-node1.

Và chúng ta có kết quả như dưới, kết quả sẽ giống nhau khi bạn check cả 2 vlan101 và vlan102 nhé.

LEAVE A REPLY

Please enter your comment!
Please enter your name here

4,956FansLike
256FollowersFollow
223SubscribersSubscribe
spot_img

Related Stories