VanTai
Intern
1. Tổng quan
Mạng là thành phần quyết định một máy ảo (VM) hay container (CT) có thể kết nối đến Internet bên ngoài hay không. Khác với VMware vSphere dùng khái niệm vSwitch/Distributed Switch, Proxmox VE xây trực tiếp trên hạ tầng mạng của Linux với các thành phần chính gồm: Linux bridge, VLAN-aware bridge, Linux bond, Linux VLAN và tùy chọn Open vSwitch. Vì vậy hiểu mạng Proxmox thực chất là hiểu cách hệ điều hành Debian/Linux dựng bridge, gắn VLAN và gộp các NIC.Tài liệu này giải thích ba thành phần chính của hệ thống mạng Proxmox ở mức căn bản:
(1) Bridge - vmbr0, vmbr1... đóng vai trò là switch ảo.
(2) VLAN Tagging - tách nhiều broadcast domain trên cùng một đường vật lý
(3) Bonding - gộp nhiều NIC vật lý để tăng tính dự phòng và băng thông.
Toàn bộ cấu hình mạng được lưu trong tệp /etc/network/interfaces (theo chuẩn ifupdown2 của Proxmox). Việc hiểu tệp này có thể giúp chúng ta sửa và khắc phục sự cố mạng nhanh hơn nhiều so với chỉ thao tác trên giao diện web.
Mục tiêu của bài này:
· Hiểu vai trò của Linux bridge (vmbr) và cách guest gắn vào bridge.· Phân biệt bridge thường và VLAN-aware bridge; hiểu VLAN access vs trunk.
· Nắm các chế độ bonding phổ biến và điều kiện switch vật lý đi kèm.
· Biết đọc, hiểu tệp /etc/network/interfaces và vai trò của ifupdown2.
· Đối chiếu khái niệm mạng Proxmox với vSphere vSwitch/vDS/NIC Teaming.
2. Nội dung chính
2.1 Kiến trúc mạng Proxmox nhìn từ dưới lên
Có thể hình dung chồng mạng Proxmox theo bốn tầng, đi từ phần cứng lên tới guest:
Hình 1: Danh sách interface của node: các NIC vật lý, bond, các vmbr và cột "Active/Autostart".
Đối chiếu với vSpherevmbr ↔ vSwitch (Standard Switch): đều là switch ảo trên từng host. Proxmox không có sẵn khái niệm Distributed Switch quản lý tập trung như vDS. Muốn quản lý mạng tập trung nhiều node, Proxmox dùng lớp SDN (Zone/VNet) - sẽ đề cập ở phần nâng cao hơn. Cổng net0 của VM tương tự vNIC gắn Port Group và VLAN-aware bridge tương ứng với Port Group đặt VLAN ID.
2.2 Linux Bridge (vmbr0, vmbr1, ...)
Bridge là một switch Layer 2 chạy bằng phần mềm trong kernel Linux. Trình cài đặt Proxmox mặc định tạo vmbr0 và gắn NIC quản lý vào đó, đồng thời đặt IP quản lý (giao diện web 8006) lên chính vmbr0. Vì thế ngay từ đầu host đã có một switch ảo để VM/CT dùng chung.· Tên bridge theo quy ước vmbrN (vmbr0, vmbr1...). Mỗi bridge là một miền quảng bá (broadcast domain) riêng nếu không bật VLAN.
· Một bridge có thể có "bridge port" là NIC vật lý, bond, hoặc interface VLAN - đây là uplink ra ngoài.
· Bridge cũng có thể không có uplink (internal-only): các guest trên cùng bridge vẫn giao tiếp được với nhau nhưng cô lập với mạng bên ngoài – phù hợp cho mạng nội bộ, lab hoặc bên trong của một VM firewall.
· IP của host thường đặt trên vmbr0 (không đặt trên NIC vật lý), để việc quản lý và traffic guest dùng chung uplink một cách nhất quán.
Ví dụ cấu hình bridge cơ bản trong /etc/network/interfaces (host lấy IP tĩnh, NIC vật lý là nic0):
auto lo
iface lo inet loopback
iface nic0 inet manual
auto vmbr0
iface vmbr0 inet static
address 10.30.195.141/24
gateway 10.30.195.250
bridge-ports nic0
bridge-stp off
bridge-fd 0
source /etc/network/interfaces.d/*
vmbr0 gắn uplink nic0, giữ IP quản lý của host.
Lưu ý quan trọngbridge-stp off và bridge-fd 0 là mặc định của Proxmox: tắt Spanning Tree và đặt forwarding delay = 0 để bridge chuyển tiếp ngay. Không bật STP trên bridge trừ khi hiểu rõ các kiến thức về nó.
2.3 VLAN Tagging
VLAN (802.1Q) cho phép nhiều mạng logic chạy chung một đường vật lý bằng cách gắn một tag số hiệu VLAN vào khung Ethernet. Trong Proxmox có ba cách phổ biến để làm việc với VLAN, chọn cách nào sẽ tùy thuộc vào mô hình:
2.3.1 VLAN-aware bridge
Khi bật "VLAN aware", vmbr hoạt động như một switch có trunk: nó chấp nhận nhiều VLAN trên uplink và cho phép gắn tag riêng cho từng cổng guest. Bạn chỉ cần một bridge duy nhất cho nhiều VLAN.auto vmbr0
iface vmbr0 inet static
address 192.168.10.10/24
gateway 192.168.10.1
bridge-ports enp3s0
bridge-stp off
bridge-fd 0
bridge-vlan-aware yes
bridge-vids 2-4094
Bridge VLAN-aware: uplink là trunk cho dải VLAN 2-4094.
Sau đó, khi tạo/sửa card mạng của VM/CT, chỉ cần điền VLAN Tag (ví dụ 100). Guest sẽ nằm trong VLAN 100 mà không cần tạo thêm bridge. Cổng vật lý trên switch nối tới host phải cấu hình trunk (tagged) cho các VLAN tương ứng.Hình 2: Đặt VLAN Tag = 100 cho card mạng của một VM trên bridge VLAN-aware.
Access port và TrunkGuest thông thường nên nhận một VLAN duy nhất (giống access port) bằng cách đặt VLAN Tag. Nếu guest tự xử lý nhiều VLAN (ví dụ một VM router/firewall), để trống VLAN Tag và cho guest nhận trunk - khi đó guest tự gắn/tháo tag.
2.3.2 VLAN interface cho chính host
Để host có một địa chỉ IP trong một VLAN riêng (ví dụ: tách mạng migration hoặc storage), tạo interface VLAN dạng <bridge>.<vid> hoặc <nic>.<vid>:auto vmbr0.50
iface vmbr0.50 inet static
address 10.50.0.10/24
# 10.50.0.0/24 = mạng migration/backup tách riêng
Host có thêm IP trong VLAN 50 trên nền bridge VLAN-aware.
2.4 Bonding (gộp NIC)
Bonding (còn gọi là link aggregation, NIC teaming) gộp nhiều NIC vật lý thành một interface luận lý bondX nhằm hai mục tiêu: dự phòng và tăng băng thông (chia tải trên nhiều NIC). Bond thường được đặt làm bridge-port của vmbr, tức là bond nằm dưới bridge.Proxmox hỗ trợ đầy đủ các chế độ bonding của Linux. Bảng dưới tóm tắt các chế độ hay dùng và điều kiện switch:
Với LACP (mode 4) cần chọn thêm chính sách băm (hash policy) để quyết định gói đi qua NIC nào - phổ biến là layer2+3 hoặc layer3+4:
auto bond0
iface bond0 inet manual
bond-slaves enp3s0 enp4s0
bond-mode 802.3ad
bond-miimon 100
bond-lacp-rate fast
bond-xmit-hash-policy layer2+3
auto vmbr0
iface vmbr0 inet static
address 192.168.10.10/24
gateway 192.168.10.1
bridge-ports bond0
bridge-stp off
bridge-fd 0
bridge-vlan-aware yes
bridge-vids 2-4094
LACP bond0 (2 NIC) làm uplink cho vmbr0 VLAN-aware.
2.5 Thiết kế mạng: tách các loại traffic
Trong cụm Proxmox, không nên nhồi mọi loại traffic vào một đường. Tối thiểu nên phân tách (bằng VLAN hoặc NIC/bond riêng) các nhóm sau:
Đặc biệt lưu ý về Corosync
Cần chú ý độ trễ của đường Corosync. Nếu backup hoặc migration làm nghẽn đường chung, Corosync có thể bị ảnh hưởng khiến node bị đánh giá là "mất kết nối". Điều đó kéo theo HA fencing ngoài ý muốn. Luôn cho Corosync một đường mạng với độ trễ thấp (lý tưởng là link vật lý riêng, hoặc ít nhất là có một VLAN được ưu tiên).
2.6 ifupdown2 và cách áp dụng thay đổi an toàn
Proxmox dùng ifupdown2, cho phép áp dụng thay đổi mạng mà không cần khởi động lại. Khi sửa mạng trên Web GUI, thay đổi được ghi vào tệp tạm /etc/network/interfaces.new và chỉ có hiệu lực sau khi bấm "Apply Configuration" (hoặc reboot).· Xem cấu hình đang chờ áp dụng: nhấn vào "Apply Configuration” sẽ nhận cấu hình vừa chỉnh sửa
· Áp dụng từ CLI: ifreload -a (nạp lại theo tệp interfaces).
· Luôn giữ một đường truy cập dự phòng (console/iKVM/IPMI) khi đổi mạng - nếu cấu hình sai có thể mất kết nối SSH/Web.
# Kiểm tra trước khi áp dụng
cat /etc/network/interfaces.new
# Áp dụng cấu hình mạng không cần reboot
ifreload -a
# Kiểm tra trạng thái
ip -br a # tóm tắt IP các interface
ip -br link # trạng thái up/down
cat /proc/net/bonding/bond0 # trạng thái bond (nếu có)
Bộ lệnh kiểm tra và áp dụng cấu hình mạng.
3. Kết luận
Tóm lại, mạng Proxmox được xây dựng trên nền mạng Linux. Đầu tiên bridge (vmbr) như là một switch ảo, còn VLAN-aware bridge dùng để tách nhiều mạng trên một trunk và bonding để dự phòng, tăng băng thông. Để thiết kế hạ tầng mạng cơ bản cho cụm Proxmox, chúng ta cần hiểu cơ bản các khái niệm và cách cấu hình ở trên.Bài viết liên quan
Bài viết mới