---
title: Proxmox VE
description: Thêm cụm Proxmox VE làm nguồn VM: API token tối thiểu quyền, storage, cloud-image template, IP pool, TLS pinning và nguồn theo gói.
url: https://nexcmp.com/vi/docs/infrastructure/proxmox/
applies_to: NexCMP 1.6.1
updated: 2026-11-02
---

# Proxmox VE

> **Vị trí trong admin:** Infrastructure › Cloud provider › Providers (`/infra/providers`), sau đó vào trang nhà cung cấp (`/infra/providers/<id>`) với các tab Overview, Clusters, VMs, Servers và Credentials. Các gói dịch vụ được thiết lập tại Services › Virtual Machines › Plans & pricing (`/vm/catalog`).

## Chức năng {#what-it-does}

NexCMP có thể bán máy ảo chạy trên một hoặc nhiều cụm Proxmox VE, song song hoặc thay thế cho CloudStack. VM được tạo bằng cách nhân bản full clone từ OS template, sau đó cấu hình qua cloud-init: kích thước, địa chỉ IP từ pool bạn định nghĩa, mật khẩu root và SSH key. Khách hàng có toàn quyền bật/tắt, mở console, tạo snapshot, cài lại hệ điều hành, đổi mật khẩu và xem metrics trên portal. Họ không bao giờ nhìn thấy tên cụm, node hay tên nguồn hạ tầng.

Sử dụng tính năng này khi bạn đã có sẵn Proxmox VE, hoặc muốn cung cấp thêm một nhóm VM thứ hai với mức giá khác biệt.

## Yêu cầu {#requirements}

| Hạng mục | Yêu cầu |
|---|---|
| Proxmox VE | PVE 9.x. Bản tích hợp đã được xác thực trên 9.2. Yêu cầu storage content `import` và tùy chọn disk `import-from` (PVE 8.2 trở lên). |
| Network từ panel | HTTPS đến cluster API, `https://<host or IP>:8006`. Không kèm path, user name hay query. Cả panel và worker đều kết nối; browser console được proxy qua panel. |
| Tài khoản | Một PVE user chuyên dụng với **API token** và role tùy chỉnh có các quyền liệt kê bên dưới. Tuyệt đối không dùng `root@pam`. |
| Storage | Một storage cho VM disk hỗ trợ clone (ví dụ `local-lvm`). Với template builder tích hợp sẵn, cần storage có tên `local` với content type `import` và `snippets`. |
| Mạng | Một Linux bridge (ví dụ `vmbr0`) kết nối tới network chứa IP của khách hàng. Dùng VLAN-aware bridge nếu bạn nhập VLAN tag. |
| IP | Một dải IPv4 (/16 đến /30) được định tuyến tới bridge đó, kèm gateway. NexCMP tự cấp phát IP; Proxmox không quản lý IP. |
| Templates | Một cloud-init template VM cho mỗi hệ điều hành, trên từng node bạn triển khai, kèm QEMU guest agent. |
| Zone | Một zone hiện có để gắn cluster vào. Xem [Zones](https://nexcmp.com/vi/docs/infrastructure/zones/). |
| Phụ thuộc vào | Không có. |

## Chuẩn bị hạ tầng {#prepare-the-infrastructure}

Chạy các lệnh này dưới quyền root trên bất kỳ node nào của cluster.

### Bước 1: Tạo role, user và API token với đặc quyền tối thiểu {#_1-create-a-least-privilege-role-user-and-api-token}

1. Tạo role. Danh sách quyền này chính xác là những gì NexCMP sử dụng; danh sách không chứa quyền chỉnh sửa người dùng, cấu hình storage hay datacenter.

   ```bash
   pveum role add NexCMP -privs "VM.Allocate VM.Clone VM.Config.CDROM VM.Config.CPU VM.Config.Cloudinit VM.Config.Disk VM.Config.HWType VM.Config.Memory VM.Config.Network VM.Config.Options VM.PowerMgmt VM.Audit VM.Console VM.Snapshot VM.Snapshot.Rollback VM.Backup VM.GuestAgent.Audit VM.GuestAgent.Unrestricted Datastore.Audit Datastore.AllocateSpace Datastore.AllocateTemplate Sys.Audit Sys.AccessNetwork SDN.Use SDN.Audit Pool.Audit Mapping.Audit Mapping.Use"
   ```

   `Sys.AccessNetwork` là bắt buộc để tải cloud image. PVE 9 không có quyền `VM.Monitor`; đừng thêm quyền này.

2. Tạo user và token. `--privsep 1` có nghĩa là quyền của token là **phần giao** giữa quyền của user và quyền riêng của token.

   ```bash
   pveum user add nexcmp@pve --comment "NexCMP"
   pveum user token add nexcmp@pve api --privsep 1
   ```

   Lệnh sẽ in ra **secret một lần duy nhất** của token (một UUID). Hãy sao chép lại ngay. Token id là `nexcmp@pve!api`.

3. Gán role cho **cả** user và token. Đây là bước mọi người hay bỏ sót: khi phân tách đặc quyền, chỉ riêng token sẽ gặp lỗi 403 như `Datastore.Audit` nếu user không có quyền.

   ```bash
   pveum acl modify / --roles NexCMP --users nexcmp@pve
   pveum acl modify / --roles NexCMP --tokens 'nexcmp@pve!api'
   ```

4. Kiểm tra từ máy chủ panel:

   ```bash
   curl -sk -H 'Authorization: PVEAPIToken=nexcmp@pve!api=<secret>' https://192.0.2.10:8006/api2/json/version
   ```

   Một tài liệu JSON với `version` đồng nghĩa token hoạt động bình thường. (`-k` chỉ dành cho bước kiểm tra nhanh này; NexCMP sẽ tự ghim certificate, xem bên dưới.)

### Bước 2: Kiểm tra bridge và storage {#_2-check-the-bridge-and-the-storage}

```bash
pvesm status          # storages, type, content and free space
ip -br link show type bridge
```

- VM của khách hàng sẽ nhận network interface `virtio` trên bridge bạn đã nhập trong NexCMP. Nếu bạn thiết lập VLAN, bridge bắt buộc phải hỗ trợ VLAN-aware.
- Đặt các VM của khách hàng trên bridge hoặc VLAN **tách biệt khỏi địa chỉ quản trị của node**. Nếu dùng chung mạng, IP set quản trị tự động của tường lửa Proxmox sẽ mở các port 22, 8006, 3128, 5900-5999 và 60000-60050 của node cho mọi VM trong mạng đó. Nếu không thể tách riêng, hãy thêm một quy tắc DROP rõ ràng cho subnet của VM tới các port này, nằm phía trên quy tắc ACCEPT quản trị.

### Bước 3: Lưu ý về storage (LVM-thin) {#_3-storage-notes-lvm-thin}

- Hãy giữ **tính năng zeroing của thin-pool ở giá trị mặc định**. Việc tắt tính năng này (`lvchange -Zn`) có thể khiến dữ liệu cũ còn sót lại trong các chunk mới được phân bổ và làm hỏng bảng phân vùng hoặc hệ thống tệp của các VM được nhân bản.
- Các ổ đĩa báo "write cache: disabled" có thể chỉ nhân bản ở tốc độ vài MB/s. Hãy kiểm tra bằng `hdparm -W /dev/sdX` và bật write cache nếu ổ đĩa có tính năng bảo vệ mất điện.

### Bước 4: Bật nội dung `import` (chỉ dành cho template builder tích hợp sẵn) {#_4-enable-the-import-content-only-for-the-built-in-template-builder}

Builder tích hợp sẵn sẽ tải cloud image vào storage có tên `local` và tạo template từ đó. Hãy thêm `import` (và `snippets`) vào danh sách content của storage đó. Hãy giữ nguyên các loại bạn đang dùng; `--content` sẽ thay thế toàn bộ danh sách:

```bash
pvesm status --storage local     # note the current content
pvesm set local --content iso,vztmpl,backup,import,snippets
```

### Bước 5: Tạo OS template từ cloud image {#_5-build-an-os-template-from-a-cloud-image}

Template là một VM dùng cloud-init mà NexCMP sẽ nhân bản. Mỗi template được đăng ký dưới một **OS key** ngắn gọn như `ubuntu-24.04` cùng với VM id của nó. Hãy tạo một template cho mỗi hệ điều hành **trên mọi node sẽ tiếp nhận VM**, vì quá trình nhân bản sẽ chạy trên chính node được chọn.

**Tùy chọn A, khuyến nghị: tự tạo.** Các cloud image gốc của Ubuntu và Debian không chứa guest agent và không cho phép đăng nhập root, trong khi NexCMP thiết lập mật khẩu root thông qua cloud-init. Hãy chuẩn bị image trước:

```bash
apt install -y libguestfs-tools
wget -O noble.qcow2 https://cloud-images.ubuntu.com/noble/current/noble-server-cloudimg-amd64.img
virt-customize -a noble.qcow2 --install qemu-guest-agent \
  --write /etc/cloud/cloud.cfg.d/99-nexcmp.cfg:$'ssh_pwauth: true\ndisable_root: false\n' \
  --write /etc/ssh/sshd_config.d/00-nexcmp.conf:$'PermitRootLogin yes\nPasswordAuthentication yes\n'
```

Sau đó tạo VM template (id 9000 chỉ là ví dụ; hãy giữ các ID template bên dưới giá trị `vmid from`, mặc định là 1000):

```bash
qm create 9000 --name tpl-ubuntu-24-04 --memory 2048 --cores 2 --cpu host --ostype l26 \
  --scsihw virtio-scsi-single --net0 virtio,bridge=vmbr0 --agent 1 --serial0 socket --vga serial0
qm set 9000 --scsi0 local-lvm:0,import-from=$PWD/noble.qcow2,discard=on,iothread=1
qm set 9000 --ide2 local-lvm:cloudinit --boot order=scsi0
qm template 9000
```

**Tùy chọn B: builder tích hợp sẵn.** Thẻ **Create OS template from cloud image** trên tab Clusters (xem bên dưới) sẽ tải xuống image qcow2, dựng template và đăng ký template đó. Nó tạo VM kèm cloud-init và cờ guest agent, nhưng không can thiệp vào nội dung bên trong image. Chỉ sử dụng tùy chọn này với image đã cho phép đăng nhập root và đang chạy guest agent, hoặc khi bạn có cung cấp thêm đoạn cấu hình vendor-data của cloud-init.


Guest agent là cần thiết cho tính năng **Reset password** và để hiển thị địa chỉ IP của VM.

### 6. Xem fingerprint của chứng chỉ (tùy chọn) {#_6-know-the-certificate-fingerprint-optional}

NexCMP xác thực cluster bằng cách ghim fingerprint SHA-256 của chứng chỉ TLS, nên chứng chỉ tự ký (self-signed) vẫn hoạt động tốt. Để xem giá trị mà NexCMP sẽ ghim:

```bash
openssl x509 -in /etc/pve/local/pve-ssl.pem -noout -fingerprint -sha256
```

## Kết nối trong NexCMP {#connect-in-nexcmp}

1. Mở **Infrastructure › Cloud provider › Providers** và nhấp vào **Add cloud provider**. Chọn **Proxmox VE** và điền thông tin:

   | Trường | Giá trị ví dụ |
   |---|---|
   | Name | `Proxmox cluster 1` |
   | Endpoint | `https://192.0.2.10:8006` |
   | Token id | `nexcmp@pve!api` |
   | Token secret | `XXXX` (UUID được in ra ở bước 1) |
   | Slug | `pve-1` (a-z, 0-9, dấu gạch nối, 2-32 ký tự) |
   | Default node | `pve1` (để trống: node online có nhiều RAM trống nhất) |
   | Storage | `local-lvm` |
   | Bridge | `vmbr0` |

      ![Hộp thoại Add cloud provider với Proxmox VE được chọn cùng các giá trị mẫu cho endpoint, token và storage](https://nexcmp.com/vi/docs/images/infrastructure/proxmox-01-add-provider.webp)

2. Nhấp vào **Save & open provider**, nhập lý do khi được yêu cầu. Token sẽ được mã hóa trước khi lưu trữ.
3. Trên tab **Overview**, nhấp vào **Test connection**. Lần kiểm tra thành công đầu tiên sẽ **ghim fingerprint TLS của cluster**; từ thời điểm đó, mọi chứng chỉ khác đều sẽ bị từ chối.


4. Mở tab **Clusters**. Thẻ **Node · storage · bridge** liệt kê các tài nguyên mà API tìm thấy; thẻ **Cluster configuration** chứa các cài đặt:

   | Trường | Ý nghĩa |
   |---|---|
   | Default node | Node được dùng cho các VM mới. Để trống nghĩa là chọn node online có nhiều RAM trống nhất. |
   | Storage, Bridge, VLAN | Disk storage, NIC bridge và VLAN tag tùy chọn (0 nghĩa là không dùng). |
   | CPU type | Mặc định là `host`. Dùng `x86-64-v2-AES` khi các node có thế hệ CPU khác nhau. |
   | vmid from | ID VM đầu tiên được cấp cho các VM của khách hàng (mặc định 1000). |
   | Storage ISO, Storage backup | Để trống trừ khi bạn sử dụng chúng; để trống đồng nghĩa tính năng ISO và backup sẽ không được cung cấp. |
   | Template OS | Mỗi dòng một mục, `os-key=vmid`, ví dụ `ubuntu-24.04=9000`. |
   | Pinned TLS fingerprint (SHA-256) | Được điền tự động sau lần kiểm tra đầu tiên. Hãy xóa trường này và kiểm tra lại sau khi bạn thay chứng chỉ cluster. |

      ![Tab Clusters, thẻ Cluster configuration với danh sách mẫu cho node, storage, bridge và OS template](https://nexcmp.com/vi/docs/images/infrastructure/proxmox-03-cluster-config.webp)

5. Tùy chọn: nếu bạn đã dùng Tùy chọn B ở trên, hãy điền **Create OS template from cloud image** (OS key `ubuntu-24.04`, vmid `9000`, node `pve1`, URL của image qcow2) và nhấp vào **Create template**. Tác vụ sẽ chạy ngầm trong vài phút; kết quả được ghi trong Audit log.

      ![Thẻ Create OS template from cloud image với URL image Ubuntu mẫu](https://nexcmp.com/vi/docs/images/infrastructure/proxmox-04-template-from-image.webp)

6. Nhấp vào **Add pool** trong **Cluster IP pool** và tạo pool để các VM lấy địa chỉ IP:

   | Trường | Giá trị ví dụ |
   |---|---|
   | Name | `customers-1` |
   | CIDR | `198.51.100.0/24` |
   | Gateway | `198.51.100.1` (không bao giờ cấp cho VM) |
   | DNS | `1.1.1.1,8.8.8.8` (1 đến 4 địa chỉ IPv4) |
   | Bridge, VLAN | `vmbr0`, `0` |
   | Already used IPs | mỗi dòng một mục, `ip note`, ví dụ `198.51.100.10 monitoring` |

   NexCMP không bao giờ gán địa chỉ mạng, địa chỉ broadcast, gateway hoặc địa chỉ đã được giữ trước (reserved). Các pool trong cùng một cluster không được chồng lấn nhau. Một pool chỉ có thể bị xóa khi không có địa chỉ nào của pool đó đang được sử dụng.

      ![Hộp thoại Add IP pool với dải /24 và gateway mẫu](https://nexcmp.com/vi/docs/images/infrastructure/proxmox-05-ip-pool.webp)

7. Trong **Attach cluster to zone**, hãy chọn zone và tùy chọn thêm tên node, sau đó nhấp vào **Attach to zone**. Cụm cluster sẽ tham gia vào zone vốn đang bán VM, nhờ đó một zone có thể chạy song song cả CloudStack lẫn Proxmox. Nguồn mới này **mặc định không được mở bán** và không làm thay đổi hành vi của các gói plan hiện có.

      ![Thẻ Attach cluster to zone khi đã chọn một zone hiện có](https://nexcmp.com/vi/docs/images/infrastructure/proxmox-06-attach-zone.webp)

8. Mở **Services › Virtual Machines › Plans & pricing** và nhấp vào **Add plan**. Tại **Infrastructure source**, hãy chọn cụm Proxmox cluster, sau đó thiết lập CPU, RAM, ổ đĩa và giá. Một plan Proxmox không cần CloudStack offering. Để bán cùng một cấu hình từ cả hai nguồn, hãy dùng tính năng **Clone** trên plan và chọn nguồn còn lại. Dung lượng đĩa của plan phải tối thiểu bằng dung lượng đĩa của template; Proxmox không thể thu nhỏ ổ đĩa.


### Import VM đã tồn tại sẵn {#import-a-vm-that-already-exists}

Mở tab **Servers** để liệt kê các VM trên cluster. **Import** sẽ gán một VM hiện có vào tài khoản khách hàng hoàn toàn miễn phí: không tính phí theo giờ, thời gian tắt máy hay lưu lượng truyền tải. Khách hàng có thể bật, tắt, khởi động lại và mở console nhưng không thể xóa VM; chỉ quản trị viên mới có quyền này. NexCMP chỉ đọc dữ liệu từ cluster trong suốt quá trình import.

- Cluster phải được gán vào một zone **kèm theo tên node** của VM đó (nếu để trống node, quá trình import sẽ báo lỗi rằng region chưa được thiết lập).
- Để đặt VM ở chế độ **protected** (từ chối các thao tác stop, reboot, reinstall, snapshot restore, destroy và đổi plan), hãy import VM từ dòng lệnh với `--protect`:

  ```bash
  sudo -u nexcmp /opt/nexcmp/bin/nexcmp px-import --provider pve-1 --server-ref pve1/101 --account-id 12 --hostname web-1 --protect
  ```



### Những tính năng được và không được hỗ trợ trên Proxmox {#what-is-and-is-not-supported-on-proxmox}

| Tính năng | Proxmox VE |
|---|---|
| Khởi tạo, bật/tắt nguồn/khởi động lại, xóa | Có |
| Thay đổi dung lượng CPU và RAM, mở rộng ổ đĩa | Có, nhưng VM sẽ bị tắt, thay đổi cấu hình rồi khởi động lại (không hỗ trợ live resize) |
| Snapshots | Có, tối đa 5 bản trên mỗi VM: tạo, liệt kê danh sách, khôi phục, xóa |
| Cài đặt lại | Có: VM được dựng lại từ template và giữ nguyên id, IP cùng các cài đặt, kèm theo mật khẩu mới |
| Đặt lại mật khẩu | Có, thông qua guest agent |
| Console | Có, console trên trình duyệt được proxy qua panel |
| Metrics | Có: CPU, bộ nhớ, mạng và ổ đĩa |
| Gắn ISO, Backups, tường lửa, IPv6, port forwarding, đổi IP, thêm volume, Auto Scaling, DDoS Shield, VPC, đo lường băng thông | Không khả dụng. Trang VM của khách hàng sẽ ẩn đi những tính năng mà nguồn hạ tầng không hỗ trợ. |

## Kiểm tra {#verify}

1. **Test connection** hiển thị OK và trạng thái provider là active.
2. **Clusters** liệt kê các node của bạn ở trạng thái online, cùng với storage và bridge.
3. **Cluster IP pool** hiển thị số lượng IP còn trống, đang dùng và đang giữ.
4. OS key sẽ xuất hiện bên dưới danh sách template của zone trong **Services › Virtual Machines › Template** sau khi gắn cluster.
5. Hãy đặt thử một VM từ gói plan sử dụng cluster này. VM sẽ nhận được một địa chỉ từ pool, mật khẩu root và console hoạt động bình thường; pool sẽ hiển thị một địa chỉ đã được sử dụng.

## Giới hạn và lưu ý {#limits-and-notes}

::: tip Zone đa nguồn
Kể từ NexCMP 1.4.0, bảng giá Cloud Server công khai cũng hoạt động khi CloudStack và Proxmox VE dùng chung một zone. Mỗi plan sử dụng **Infrastructure source** riêng của mình. Sau khi gắn cluster, hãy kiểm tra bảng giá công khai và đặt hàng thử nghiệm cho từng nguồn.
:::

- Bạn có thể thêm nhiều cụm Proxmox cluster. Mỗi cụm là một provider riêng biệt.
- Một zone cung cấp một nguồn mặc định; gói plan có thiết lập **Infrastructure source** riêng sẽ được triển khai chính xác vào cluster đó, miễn là cluster đang active và nằm trong zone của plan.
- Một cluster nằm sau cùng zone với CloudStack sẽ giữ nguyên các gói dịch vụ cũ trên CloudStack. Hãy kiểm thử toàn diện quy trình đặt hàng trước khi triển khai thực tế.
- API token chỉ có thể thay thế chứ không thể xem lại. Hãy thay thế token trong tab **Credentials**: trước tiên tạo token mới trong Proxmox, nhập token, chạy **Test connection**, sau đó thu hồi token cũ.
- Các thao tác Test, Sync và cluster-info bị giới hạn ở mức 6 lượt gọi mỗi phút cho mỗi quản trị viên.
- NexCMP tính cước khách hàng của bạn; chi phí phần cứng và bản quyền của cluster do bạn tự chi trả.


## Xử lý sự cố {#troubleshooting}

| Hiện tượng | Nguyên nhân | Cách khắc phục |
|---|---|---|
| Test: "Key rejected (wrong access key / secret, or revoked)" hoặc HTTP 401/403 | Sai token id hoặc secret, hoặc ACL chỉ mới được gán riêng cho token | Chạy lại hai lệnh `pveum acl modify` (cho user **và** token) rồi kiểm tra xem token id đã là `user@realm!tokenid` chưa. |
| Test: "Could not connect to the provider" hoặc "Timed out" | Do tường lửa, sai host hoặc sai cổng | Kiểm tra `https://host:8006` từ server chạy panel. |
| Kiểm tra: "Endpoint không hợp lệ hoặc không nằm trong allowlist" | Endpoint chứa path, user, query hoặc không phải HTTPS | Sử dụng chính xác `https://host:8006`. |
| "Chứng chỉ TLS của cluster KHÔNG khớp với pinned fingerprint" | Chứng chỉ của cluster đã bị thay thế | Xóa **Pinned TLS fingerprint** trên tab Clusters, lưu lại rồi chạy lại **Test connection**. |
| Slug bị từ chối | Không thuộc a-z, 0-9, dấu gạch nối hoặc độ dài không nằm trong khoảng 2-32 ký tự | Sử dụng định dạng tương tự như `pve-1`. |
| "Định dạng token id: user@realm!tokenid và bắt buộc có secret" | Thiếu token id hoặc secret | Nhập cả hai; secret là chuỗi UUID hiển thị khi tạo token. |
| "Dòng template không hợp lệ: …" | Một dòng trong **Template OS** không đúng định dạng `key=vmid` | Sử dụng chữ cái, chữ số, `.`, `_`, `-` trong key và vmid tối thiểu từ 100 trở lên. |
| "OS key: a-z 0-9 . _ - và vmid ≥ 100" | Key hoặc id không hợp lệ trong **Create template** | Sửa lại OS key và sử dụng một vmid còn trống. |
| "vmid … already exists" khi tạo template | vmid đã bị sử dụng | Chọn một id khác. |
| "url trỏ đến địa chỉ nội bộ" | URL của image trỏ về một IP nội bộ | Sử dụng URL công khai; tên miền sẽ được Proxmox phân giải. |
| Tác vụ tạo template thất bại khi tải xuống | Storage `local` không có loại nội dung `import` | `pvesm set local --content …,import,snippets`, sau đó thử lại. Tên tệp phải kết thúc bằng `.qcow2`, `.raw`, `.vmdk`, `.ova` hoặc `.ovf`. |
| "cluster has no online nodes" hoặc "node … is not online" | Node mặc định đang tắt hoặc bị viết sai tên | Sửa lại **Default node** hoặc để trống. |
| "image không thuộc về cluster" | Hệ điều hành của gói dịch vụ không có trong **Template OS** | Thêm key vào danh sách rồi lưu lại. |
| Deploy ở trạng thái chờ rồi thất bại khi clone | VM template không nằm trên node đã chọn | Tạo template trên node đó, hoặc đặt **Default node** thành node đang chứa template. |
| Khách hàng không thể đăng nhập bằng root | Image chặn đăng nhập root | Build lại template theo Tùy chọn A. |
| Đặt lại mật khẩu không có tác dụng | Không có guest agent bên trong máy ảo | Cài đặt và bật `qemu-guest-agent` trong template. |
| "Bắt buộc phải có Name, CIDR và gateway" | Thiếu trường pool | Điền đầy đủ cả ba trường. |
| Pool create: "overlaps with pool …", "gateway must be within range (not network/broadcast address)" hoặc "cidr: network address must be …" | Pool bị trùng lặp, gateway sai, hoặc CIDR không nằm trên ranh giới mạng | Dùng một dải IP còn trống, gateway nằm trong dải đó và CIDR được ghi dưới dạng địa chỉ mạng (ví dụ: `198.51.100.0/24`). |
| Import: "region chưa được thiết lập" | Cluster được gắn mà không có tên node của VM | Gắn cluster vào zone kèm tên node. |
