Bài viết thuộc series Azure
Giới thiệu
Trong bài này ta làm ví dụ tạo VM, cài Docker trên VM, chạy Web Server, đóng gói VM thành Azure VM Image. Sau đó dùng VM Image để tạo VM Scale Sets. Tất cả VM được tạo từ Scale Sets sẽ có cấu hình giống nhau.
Tạo VM
Chạy câu lệnh CLI để tạo VM:
az group create --name testresource -l westus2
# Create VM
az vm create \
--resource-group testresource \
--name vm-docker-base \
--image Canonical:0001-com-ubuntu-server-focal:20_04-lts:latest \
--size Standard_DS1_v2 \
--admin-username azureuser \
--generate-ssh-keys
# Open port 80 for web server
az vm open-port --port 80 --resource-group testresource --name vm-docker-base
Truy cập VM:
ipaddress=$(az vm show --resource-group testresource --name vm-docker-base --show-details --query publicIps --output tsv)
ssh azureuser@$ipaddress
Cài Docker lên VM và chạy WebServer Nginx:
curl -fsSL https://get.docker.com | sh -
sudo docker run --restart=always -p 80:80 -d nginx
Lấy địa chỉ của VM:
echo $ipaddress
23.182.175.28
Truy cập trang ta sẽ thấy dòng chữ Welcome to nginx!. Tiếp theo ta đóng gói nó thành VM Image và tạo VM Scale Sets. Để khi Scale Sets thực hiện AutoScaling, tất cả con VM được tạo từ Scale Sets đều có Docker và Nginx.
Đóng gói Image
Thực hiện đóng gói VM thành Image:
az vm deallocate -g testresource -n vm-docker-base
az vm generalize -g testresource -n vm-docker-base
az vm capture -g testresource -n vm-docker-base --vhd-name-prefix docker-nginx
Đợi câu lệnh chạy xong truy cập Azure portal, kiếm VM Image ta sẽ thấy Image vừa tạo với prefix là docker-nginx
.
Tạo VM Scale Set
Chạy câu lệnh sau để tạo Scale Sets:
az vmss create -g testresource \
-n DockerNginxScaleSet \
--image docker-nginx-20240119100104 \
--instance-count 3 \
--data-disk-sizes-gb 30 \
--os-disk-size-gb 30
Ta tạo Scale Sets với 3 con VM, ổ đĩa của mỗi con là 30 GB, 3 con VM này khi tạo sẽ có Docker và Nginx do ta chỉ định VM Image ta vừa tạo khi nãy là docker-nginx-20240119100104
.
Hiện tại ta có 3 con VM, vậy ta cần truy cập vào con VM nào để hiển thị trang Web? Với Scale Sets ta không truy cập từng con với IP, mà ta dùng Load Balancer. Ở trên Azure Portal truy cập trang Load Balancer ta sẽ thấy LB có tên là DockerNginxScaleSetLB. Bấm vào LB để lấy địa chỉ IP:
20.137.81.172
Tiếp theo ta cần cấu hình LB để nó điều hướng traffic tới những con VM đằng sau Scale Sets.
Tạo Load Balancer
Tạo LB rule để điều hướng traffic tới Scale Sets:
az network lb rule create \
--resource-group testresource \
--name DockerNginxLoadBalancerRule \
--lb-name DockerNginxScaleSetLB \
--probe-name DockerNginxHealth \
--backend-pool-name DockerNginxScaleSetLBBEPool \
--backend-port 80 \
--frontend-ip-name LoadBalancerFrontEnd \
--frontend-port 80 \
--protocol tcp
Tạo health check rule cho LB:
az network lb probe create \
--lb-name DockerNginxScaleSetLB \
--resource-group testresource \
--name DockerNginxHealth \
--port 80 \
--protocol Http \
--path /
Health check kiếm tra WebServer còn sống hay không bằng cách gọi vào port 80
ở đường dẫn /
. Nếu WebServer không trả về kết quả thì LB không gửi traffic tới WebServer đó.
Kết luận
Truy cập WebServer với IP của LB là 20.137.81.172
. Ta sẽ thấy trang web của mình. Bài tiếp theo ta sẽ cấu hình AutoScaling cho Scale Sets.
Nếu bài viết có gì sai hoặc cần cập nhật thì liên hệ Admin.
Tham gia nhóm chat của DevOps VN tại Telegram.
Kém tiếng Anh và cần nâng cao trình độ giao tiếp: Tại sao bạn học không hiệu quả?