【Azure】アプリケーションゲートウェイを使ってみる

・L7での負荷分散ができる
・ディレクトリパスでのルールを作れる
・SSLオフロードできる
・AWSのApplication Load Barancerてきな感じ
# リソースグループ作成 az group create --name myResourceGroupAG --location eastus # 仮想ネットワーク作成 az network vnet create \ --name myVNet \ --resource-group myResourceGroupAG \ --location eastus \ --address-prefix 10.0.0.0/16 \ --subnet-name myAGSubnet \ --subnet-prefix 10.0.1.0/24 az network vnet subnet create \ --name myBackendSubnet \ --resource-group myResourceGroupAG \ --vnet-name myVNet \ --address-prefix 10.0.2.0/24 az network public-ip create \ --resource-group myResourceGroupAG \ --name myAGPublicIPAddress \ --allocation-method Static \ --sku Standard
Cloud-initを作る
yuta@DESKTOP-V36210S:/tmp$ cat cloud-init.txt #cloud-config package_upgrade: true packages: - nginx - nodejs - npm write_files: - owner: www-data:www-data - path: /etc/nginx/sites-available/default content: | server { listen 80; location / { proxy_pass http://localhost:3000; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection keep-alive; proxy_set_header Host $host; proxy_cache_bypass $http_upgrade; } } - owner: azureuser:azureuser - path: /home/azureuser/myapp/index.js content: | var express = require('express') var app = express() var os = require('os'); app.get('/', function (req, res) { res.send('Hello World from host ' + os.hostname() + '!') }) app.listen(3000, function () { console.log('Hello world app listening on port 3000!') }) runcmd: - service nginx restart - cd "/home/azureuser/myapp" - npm init - npm install express -y - nodejs index.js yuta@DESKTOP-V36210S:/tmp$
ネットワークインターフェースとVMの作成
for i in `seq 1 2`; do az network nic create \ --resource-group myResourceGroupAG \ --name myNic$i \ --vnet-name myVNet \ --subnet myBackendSubnet az vm create \ --resource-group myResourceGroupAG \ --name myVM$i \ --nics myNic$i \ --image UbuntuLTS \ --admin-username azureuser \ --generate-ssh-keys \ --custom-data cloud-init.txt done
アプリケーションゲートウェイ作成
address1=$(az network nic show --name myNic1 --resource-group myResourceGroupAG | grep "\"privateIpAddress\":" | grep -oE '[^ ]+$' | tr -d '",') address2=$(az network nic show --name myNic2 --resource-group myResourceGroupAG | grep "\"privateIpAddress\":" | grep -oE '[^ ]+$' | tr -d '",') az network application-gateway create \ --name myAppGateway \ --location eastus \ --resource-group myResourceGroupAG \ --capacity 2 \ --sku Standard_v2 \ --http-settings-cookie-based-affinity Enabled \ --public-ip-address myAGPublicIPAddress \ --vnet-name myVNet \ --subnet myAGSubnet \ --servers "$address1" "$address2"
できた
フロントエンド
バックエンド
パブリックIPアドレスを確認
yuta@DESKTOP-V36210S:/tmp$ az network public-ip show \ > --resource-group myResourceGroupAG \ > --name myAGPublicIPAddress \ > --query [ipAddress] \> --output tsv 52.142.38.233 yuta@DESKTOP-V36210S:/tmp$
どうかく