Mục Tiêu Lab
Deploy VM Linux Ubuntu 22.04 LTS với SSH key authentication
Deploy VM Windows Server 2022 và kết nối qua RDP
Chọn VM size phù hợp và resize VM khi cần
Thêm managed data disk và cấu hình NSG rules
Triển khai VM theo Availability Zones để high availability
Monitor VM metrics và thiết lập auto-shutdown tiết kiệm chi phí
Yêu Cầu Chuẩn Bị
- Hoàn thành Lab 01 + Lab 02
- SSH client: OpenSSH (Windows 10+) hoặc PuTTY
- RDP client: mstsc.exe (Windows) hoặc Microsoft Remote Desktop (macOS)
- $20–$30 credit (VM sẽ bị charge, nhớ xóa sau lab)
- B2s Linux VM: ~$0.048/giờ (~$1.15/ngày)
- B2s Windows VM: ~$0.096/giờ (~$2.30/ngày)
- Managed disk P10: ~$0.06/giờ
- Bật auto-shutdown 22:00 để tiết kiệm tối đa
Kịch Bản & Tài Nguyên
Bạn cần deploy hệ thống 2-tier: VM Linux làm web server và VM Windows làm application server tại Southeast Asia, triển khai trên Availability Zones khác nhau để HA.
Ubuntu 22.04 LTS
Size: Standard_B2s
Zone: 1
Windows Server 2022
Size: Standard_B2s
Zone: 2
10.0.0.0/16
subnet-default
10.0.1.0/24
Windows: RDP 3389
Both: HTTP 80
Inbound only
Các Bước Thực Hiện
Chuẩn Bị Resource Group & Virtual Network
Tạo RG và VNet trước để VM chia sẻ cùng network, tránh việc mỗi VM tự tạo VNet riêng.
- 1.Tạo RG:
rg-hoatranlab-lab03tại Southeast Asia - 2.Portal → Virtual networks → + Create
- 3.Name:
vnet-lab03→ Region: Southeast Asia - 4.IP Addresses: 10.0.0.0/16 → Subnet:
subnet-default10.0.1.0/24 - 5.Review + Create → Create
# Tạo Resource Group az group create \ --name rg-hoatranlab-lab03 \ --location southeastasia \ --tags env=lab module=az104 # Tạo Virtual Network + Subnet az network vnet create \ --name vnet-lab03 \ --resource-group rg-hoatranlab-lab03 \ --location southeastasia \ --address-prefix 10.0.0.0/16 \ --subnet-name subnet-default \ --subnet-prefix 10.0.1.0/24
Deploy VM Linux Ubuntu 22.04 LTS (Availability Zone 1)
Ubuntu 22.04 LTS là image Linux phổ biến nhất trên Azure. Dùng SSH key authentication thay vì password để bảo mật hơn.
- 1.Portal → Virtual machines → + Create → Azure virtual machine
- 2.RG: rg-hoatranlab-lab03 | VM name:
vm-linux-web - 3.Region: Southeast Asia | Availability Zone: Zone 1
- 4.Image: Ubuntu Server 22.04 LTS | Size: Standard_B2s
- 5.Authentication: SSH public key → Generate new key pair →
vm-linux-web-key - 6.Inbound ports: tick SSH (22)
- 7.Tab Networking: chọn vnet-lab03 / subnet-default | Public IP: Standard SKU
- 8.Tab Management: bật Auto-shutdown → 22:00 (tiết kiệm chi phí)
- 9.Review + Create → Download key pair → Create
# Tạo SSH key pair (nếu chưa có) ssh-keygen -t rsa -b 4096 \ -C "vm-linux-web-key" \ -f ~/.ssh/vm-linux-web-key \ -N "" # Tạo Public IP Standard SKU az network public-ip create \ --name pip-linux-web \ --resource-group rg-hoatranlab-lab03 \ --sku Standard \ --zone 1 # Deploy Linux VM tại Zone 1 az vm create \ --name vm-linux-web \ --resource-group rg-hoatranlab-lab03 \ --location southeastasia \ --zone 1 \ --image Ubuntu2204 \ --size Standard_B2s \ --vnet-name vnet-lab03 \ --subnet subnet-default \ --public-ip-address pip-linux-web \ --ssh-key-values ~/.ssh/vm-linux-web-key.pub \ --admin-username azureadmin \ --os-disk-size-gb 30 # Xem Public IP sau khi tạo xong az vm show \ --name vm-linux-web \ --resource-group rg-hoatranlab-lab03 \ --show-details \ --query publicIps -o tsv
Kết Nối SSH vào VM Linux
- 1.Vào VM vm-linux-web → Connect (left menu) → SSH
- 2.Portal hiển thị câu lệnh SSH sẵn → copy và paste vào terminal
- 3.Hoặc dùng Azure Bastion nếu không muốn mở port 22 public
# Lấy Public IP PUBLIC_IP=$(az vm show \ --name vm-linux-web \ --resource-group rg-hoatranlab-lab03 \ --show-details --query publicIps -o tsv) echo "Public IP: $PUBLIC_IP" # Kết nối SSH (dùng key file đã tạo) ssh -i ~/.ssh/vm-linux-web-key \ azureadmin@$PUBLIC_IP # Sau khi kết nối, thử các lệnh trên VM: uname -a # Xem OS info lsb_release -a # Ubuntu version df -h # Disk space free -m # RAM usage # Cài nginx để test web server sudo apt update && sudo apt install -y nginx sudo systemctl enable nginx sudo systemctl start nginx curl localhost
Welcome to Ubuntu 22.04.4 LTS (GNU/Linux 6.5.0-1021-azure x86_64) System information as of Thu May 21 10:00:00 UTC 2026 System load: 0.08 Processes: 108 Usage of /: 5.2% of 28.89GB Users logged in: 0 Memory usage: 9% IPv4 address for eth0: 10.0.1.4 azureadmin@vm-linux-web:~$
Deploy VM Windows Server 2022 (Availability Zone 2)
- 1.Portal → Virtual machines → + Create
- 2.VM name:
vm-win-app| Zone: Zone 2 - 3.Image: Windows Server 2022 Datacenter | Size: Standard_B2s
- 4.Username:
azureadmin| Password: đặt password mạnh (12+ ký tự) - 5.Inbound ports: tick RDP (3389)
- 6.Networking: chọn vnet-lab03 / subnet-default
- 7.Management: bật Auto-shutdown 22:00
- 8.Review + Create → Create (đợi ~3–5 phút)
# Tạo Public IP Standard SKU cho Windows VM az network public-ip create \ --name pip-win-app \ --resource-group rg-hoatranlab-lab03 \ --sku Standard \ --zone 2 # Deploy Windows VM tại Zone 2 az vm create \ --name vm-win-app \ --resource-group rg-hoatranlab-lab03 \ --location southeastasia \ --zone 2 \ --image Win2022Datacenter \ --size Standard_B2s \ --vnet-name vnet-lab03 \ --subnet subnet-default \ --public-ip-address pip-win-app \ --admin-username azureadmin \ --admin-password "P@ssw0rd2026Lab!" # Mở port RDP az vm open-port \ --name vm-win-app \ --resource-group rg-hoatranlab-lab03 \ --port 3389 \ --priority 1010 # Lấy Public IP az vm show \ --name vm-win-app \ --resource-group rg-hoatranlab-lab03 \ --show-details \ --query publicIps -o tsv
Cấu Hình NSG & Thêm Data Disk
NSG (Network Security Group) là firewall layer 4 kiểm soát traffic vào/ra VM. Managed Data Disk là block storage bổ sung, tách biệt với OS disk.
Thêm NSG rule cho HTTP:
- 1.VM vm-linux-web → Networking → tab Network settings
- 2.Click Add inbound port rule → Port: 80, Protocol: TCP, Priority: 1020, Name: Allow-HTTP
Thêm Data Disk:
- 3.VM → Disks → + Add data disk
- 4.Create disk: Name
disk-linux-data, Size: 32 GiB, Type: Premium SSD - 5.Click Apply → disk attach vào VM
# Mở port 80 HTTP trên VM Linux az vm open-port \ --name vm-linux-web \ --resource-group rg-hoatranlab-lab03 \ --port 80 \ --priority 1020 # Tạo managed data disk 32 GiB Premium SSD az disk create \ --name disk-linux-data \ --resource-group rg-hoatranlab-lab03 \ --size-gb 32 \ --sku Premium_LRS \ --zone 1 # Attach disk vào VM Linux az vm disk attach \ --name disk-linux-data \ --resource-group rg-hoatranlab-lab03 \ --vm-name vm-linux-web # Verify disk đã attach az vm show \ --name vm-linux-web \ --resource-group rg-hoatranlab-lab03 \ --query "storageProfile.dataDisks" \ --output table
# Sau khi SSH vào vm-linux-web, format và mount data disk # Xem disk mới (thường là /dev/sdc) lsblk # Format disk với ext4 sudo mkfs.ext4 /dev/sdc # Tạo mount point sudo mkdir /mnt/data # Mount disk sudo mount /dev/sdc /mnt/data # Thêm vào fstab để auto-mount sau reboot echo '/dev/sdc /mnt/data ext4 defaults 0 2' | sudo tee -a /etc/fstab # Verify df -h /mnt/data
Resize VM & Kết Nối RDP Windows
Resize VM:
- 1.VM vm-linux-web → Size (left menu) → chọn Standard_B2ms → Resize
- 2.VM sẽ restart tự động trong quá trình resize (~1–2 phút)
Kết nối RDP Windows:
- 3.VM vm-win-app → Connect → Download RDP file
- 4.Mở file .rdp → Connect → nhập user
azureadmin+ password - 5.Chấp nhận certificate warning → Desktop Windows Server xuất hiện
# Xem danh sách sizes có sẵn tại region az vm list-vm-resize-options \ --name vm-linux-web \ --resource-group rg-hoatranlab-lab03 \ --query "[?contains(name,'Standard_B')]" \ --output table # Resize VM (VM sẽ restart) az vm resize \ --name vm-linux-web \ --resource-group rg-hoatranlab-lab03 \ --size Standard_B2ms # Xác nhận size mới az vm show \ --name vm-linux-web \ --resource-group rg-hoatranlab-lab03 \ --query hardwareProfile.vmSize -o tsv # Lấy Public IP của Windows VM để kết nối RDP WIN_IP=$(az vm show \ --name vm-win-app \ --resource-group rg-hoatranlab-lab03 \ --show-details --query publicIps -o tsv) echo "RDP tới: $WIN_IP" # Windows: mstsc /v:$WIN_IP
Kết Quả Đầu Ra Lab 03
SSH thành công, nginx trả về HTML, curl http://PUBLIC_IP hiển thị nginx page
RDP thành công, Desktop Windows Server 2022 hiển thị, Server Manager mở
df -h hiển thị /mnt/data 32G, fstab entry đảm bảo auto-mount
Port 22 và 80 open; curl http://PUBLIC_IP trả về nginx default page
Portal → VM → Properties hiển thị Zone 1 vs Zone 2 — hai VM không cùng zone
VM → Operations → Auto-shutdown hiển thị 22:00 enabled — tránh billing qua đêm
Dọn Dẹp Tài Nguyên
VM và Public IP là tài nguyên tốn phí. Xóa ngay sau khi hoàn thành lab.
# Xóa toàn bộ RG và tất cả resources bên trong az group delete \ --name rg-hoatranlab-lab03 \ --yes \ --no-wait # Xác nhận sau ~5 phút az group exists --name rg-hoatranlab-lab03
Câu Hỏi Ôn Tập
1. Sự khác biệt giữa Availability Zone và Availability Set là gì? Khi nào nên dùng mỗi loại?
Gợi ý: AZ = tách biệt datacenter vật lý (khác building, power, cooling) → SLA 99.99%; AS = tách fault domain/update domain trong cùng datacenter → SLA 99.95%. Dùng AZ khi region hỗ trợ zones; AS cho regions không có zones.
2. Khi stop VM từ Portal (Deallocate), bạn có còn bị tính phí compute không? Điều gì vẫn bị tính phí?
Gợi ý: Compute (vCPU, RAM) không tính khi Deallocated; OS disk và data disk vẫn tính; Static Public IP vẫn tính (~$0.004/giờ). Stop từ OS bên trong (shutdown) không deallocate → vẫn tính phí.
3. NSG rule có Priority như thế nào? Rule nào được evaluate trước?
Gợi ý: Priority thấp hơn = được xử lý trước (100 trước 200). Range 100-4096. Khi một rule match, các rules còn lại không được evaluate. Default deny-all rule có priority 65500.
4. Tại sao nên dùng SSH key thay vì password cho Linux VM? Làm thế nào để rotate SSH key?
Gợi ý: SSH key không thể brute-force; private key không truyền qua network; 2048/4096-bit RSA vs 8-char password. Rotate: thêm public key mới vào ~/.ssh/authorized_keys, sau đó xóa key cũ.
5. Managed Disk khác gì Unmanaged Disk? Microsoft khuyến nghị dùng loại nào và tại sao?
Gợi ý: Managed = Azure tự quản lý Storage Account, tự scale, hỗ trợ Zone redundancy, snapshot tích hợp. Unmanaged = bạn tự quản lý Storage Account (legacy). Luôn dùng Managed Disk cho workloads mới.