{Azure Application Gateway}L7ロードバランサー+オートスケーリング

 

アプリケーション ゲートウェイ(v1 SKU) + 仮想マシン スケール セット

https://learn.microsoft.com/ja-jp/azure/virtual-machine-scale-sets/tutorial-use-custom-image-cli
https://learn.microsoft.com/ja-jp/azure/application-gateway/scripts/create-vmss-cli
https://learn.microsoft.com/ja-jp/cli/azure/vmss?view=azure-cli-latest#az-vmss-create


-- 1. 前作業

az login --use-device-code
az account show

az version

az configure --list-defaults
az configure --defaults location=japaneast
az configure --list-defaults

az group create \
--name rg01 \
--location japaneast

az group list

 

-- 2. カスタムイメージ用仮想マシン作成

az vm create \
--resource-group rg01 \
--name vm01 \
--image UbuntuLTS \
--size Standard_B1ls \
--storage-sku Standard_LRS \
--admin-username azureuser \
--generate-ssh-keys


ssh azureuser@192.0.2.1


sudo su -

apt update
apt install apache2 -y

apache2 -v

systemctl enable apache2
systemctl restart apache2
systemctl status apache2

apt install elinks -y
elinks http://localhost/

exit
exit

-- 3. イメージ ギャラリーを作成する

az sig create \
--resource-group rg01 \
--gallery-name gal01

az sig list \
--resource-group rg01

 


-- 4. イメージ定義を作成する

az sig image-definition create \
--resource-group rg01 \
--gallery-name gal01 \
--gallery-image-definition image01 \
--publisher publisher01 \
--offer offer01 \
--sku sku01 \
--os-type Linux \
--os-state specialized

az sig image-definition list \
--gallery-name gal01 \
--resource-group rg01

 

-- 5. イメージ バージョンの作成

az sig image-version create \
--resource-group rg01 \
--gallery-name gal01 \
--gallery-image-definition image01 \
--gallery-image-version 1.0.0 \
--target-regions "japaneast=1" \
--replica-count 1 \
--managed-image "/subscriptions/11111111-1111-1111-1111-111111111111/resourceGroups/rg01/providers/Microsoft.Compute/virtualMachines/vm01"


az sig image-version list \
--resource-group rg01 \
--gallery-name gal01 \
--gallery-image-definition image01

 

-- 6. ネットワーク リソースを作成する

az network vnet create \
--name vnet01 \
--resource-group rg01 \
--location japaneast \
--address-prefix 10.0.0.0/16 \
--subnet-name subnet01 \
--subnet-prefix 10.0.1.0/24

az network vnet list

az network vnet subnet create \
--name subnet02 \
--resource-group rg01 \
--vnet-name vnet01 \
--address-prefix 10.0.2.0/24


az network vnet subnet list \
--resource-group rg01 \
--vnet-name vnet01


az network public-ip create \
--resource-group rg01 \
--name pip01 \
--allocation-method Dynamic \
--sku Basic


az network public-ip list 

 

-- 7. アプリケーション ゲートウェイの作成

az network application-gateway create \
--name ag01 \
--location japaneast \
--resource-group rg01 \
--vnet-name vnet01 \
--subnet subnet01 \
--capacity 1 \
--sku Standard_Small \
--http-settings-cookie-based-affinity Disabled \
--frontend-port 80 \
--http-settings-port 80 \
--http-settings-protocol Http \
--public-ip-address pip01


az network application-gateway list \
--resource-group rg01

az network application-gateway http-listener list \
--gateway-name ag01 \
--resource-group rg01


az network application-gateway rule list \
--gateway-name ag01 \
--resource-group rg01


az network application-gateway http-settings list \
--gateway-name ag01 \
--resource-group rg01


az network application-gateway address-pool list \
--gateway-name ag01 \
--resource-group rg01

az network application-gateway frontend-ip list \
--gateway-name ag01 \
--resource-group rg01

az network application-gateway frontend-port list \
--gateway-name ag01 \
--resource-group rg01


-- 8. カスタムイメージからスケール セットを作成する

az vmss create \
--name ss01 \
--resource-group rg01 \
--vm-sku Standard_B1ls \
--image "/subscriptions/11111111-1111-1111-1111-111111111111/resourceGroups/rg01/providers/Microsoft.Compute/galleries/gal01/images/image01" \
--specialized \
--admin-username azureuser \
--admin-password 'passwordpassword' \
--instance-count 1 \
--storage-sku Standard_LRS \
--vnet-name vnet01 \
--subnet subnet02 \
--upgrade-policy-mode Automatic \
--app-gateway ag01 \
--backend-pool-name appGatewayBackendPool

 


※バックエンドプール名はappGatewayBackendPoolでないとエラー


az vmss list \
--resource-group rg01


az vmss show \
--resource-group rg01 \
--name ss01

az vmss list-instances \
--resource-group rg01 \
--name ss01 \
--output table

az vmss get-instance-view \
--resource-group rg01 \
--name ss01 \
--instance-id 0


-- 9. 自動スケール プロファイルの定義

az monitor autoscale create \
--resource-group rg01 \
--resource ss01 \
--resource-type Microsoft.Compute/virtualMachineScaleSets \
--name as01 \
--min-count 1 \
--max-count 2 \
--count 1

az monitor autoscale list \
--resource-group rg01

az monitor autoscale show \
--resource-group rg01 \
--name as01

 


-- 10. 自動スケールアウト ルールの作成

az monitor autoscale rule create \
--resource-group rg01 \
--autoscale-name as01 \
--condition "Percentage CPU > 50 avg 5m" \
--scale out 1

az monitor autoscale rule list \
--resource-group rg01 \
--autoscale-name as01


-- 11. 自動スケールイン ルールの作成

az monitor autoscale rule create \
--resource-group rg01 \
--autoscale-name as01 \
--condition "Percentage CPU < 25 avg 5m" \
--scale in 1

az monitor autoscale rule list \
--resource-group rg01 \
--autoscale-name as01

 

-- 12. IPアドレス確認

az network public-ip show \
--resource-group rg01 \
--name pip01 \
--query [ipAddress] \
--output tsv

 

 


-- 13. クリーンアップ


az group list

az group delete \
--name rg01 \
--yes