Azure CLI kullanarak web trafiğini URL'ye göre yönlendirme

Web trafiğini yöneten bir BT yöneticisi olarak, müşterilerinizin ve kullanıcılarınızın ihtiyaç duydukları bilgileri mümkün olan en kısa sürede almasına yardımcı olmak istiyorsunuz. Müşteri deneyimini iyileştirmenin bir yolu da farklı türlerdeki web trafiğini farklı sunucu kaynaklarına yönlendirmektir. Bu makalede, uygulamanızdan farklı trafik türleri için Application Gateway yönlendirmesini ayarlamak ve yapılandırmak için Azure CLI'yi nasıl kullanacağınız gösterilmektedir. Yönlendirme, trafiği URL'ye göre farklı sunucu havuzlarına yönlendirir.

URL routing example

Bu makalede şunları öğreneceksiniz:

  • İhtiyacınız olan ağ kaynakları için kaynak grubu oluşturma
  • Ağ kaynaklarını oluşturma
  • Uygulamanızdan gelen trafik için bir uygulama ağ geçidi oluşturma
  • Farklı trafik türleri için sunucu havuzlarını ve yönlendirme kurallarını belirtme
  • Otomatik ölçeklendirme gerçekleştirmek için her havuzda bir ölçek kümesi oluşturma
  • Farklı trafik türlerinin doğru havuza gittiğini doğrulamak için bir test gerçekleştirme

İsterseniz, Azure PowerShell veya Azure portalını kullanarak bu yordamı tamamlayabilirsiniz.

Azure aboneliğiniz yoksa başlamadan önce birücretsiz Azure hesabı oluşturun.

Ön koşullar

  • Azure Cloud Shell'de Bash ortamını kullanın. Daha fazla bilgi için bkz . Azure Cloud Shell'de Bash için hızlı başlangıç.

  • CLI başvuru komutlarını yerel olarak çalıştırmayı tercih ediyorsanız Azure CLI'yı yükleyin . Windows veya macOS üzerinde çalışıyorsanız Azure CLI’yi bir Docker kapsayıcısında çalıştırmayı değerlendirin. Daha fazla bilgi için bkz . Docker kapsayıcısında Azure CLI'yi çalıştırma.

    • Yerel yükleme kullanıyorsanız az login komutunu kullanarak Azure CLI ile oturum açın. Kimlik doğrulama işlemini tamamlamak için terminalinizde görüntülenen adımları izleyin. Diğer oturum açma seçenekleri için bkz . Azure CLI ile oturum açma.

    • İstendiğinde, ilk kullanımda Azure CLI uzantısını yükleyin. Uzantılar hakkında daha fazla bilgi için bkz. Azure CLI ile uzantıları kullanma.

    • Yüklü sürümü ve bağımlı kitaplıkları bulmak için az version komutunu çalıştırın. En son sürüme yükseltmek için az upgrade komutunu çalıştırın.

  • Bu öğretici, Azure CLI'nın 2.0.4 veya sonraki bir sürümünü gerektirir. Azure Cloud Shell kullanılıyorsa en son sürüm zaten yüklüdür.

Kaynak grubu oluşturma

Kaynak grubu, Azure kaynaklarının dağıtıldığı ve yönetildiği bir mantıksal kapsayıcıdır. az group create komutunu kullanarak bir kaynak grubu oluşturun.

Aşağıdaki örnek eastus konumunda myResourceGroupAG adlı bir kaynak grubu oluşturur.

az group create --name myResourceGroupAG --location eastus

Ağ kaynakları oluşturma

az network vnet create komutunu kullanarak myVNet adlı sanal ağı ve myAGSubnet adlı alt ağı oluşturun. Ardından kullanarak az network vnet subnet createarka uç sunucuları için gereken myBackendSubnet adlı bir alt ağ ekleyin. az network public-ip create komutunu kullanarak myAGPublicIPAddress adlı genel IP adresini oluşturun.

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

URL eşleme ile uygulama ağ geçidi oluşturma

az network application-gateway create komutunu kullanarak myAppGateway adlı bir uygulama ağ geçidi oluşturun. Azure CLI kullanarak bir uygulama ağ geçidi oluşturduğunuzda, kapasite, sku ve HTTP ayarları gibi yapılandırma bilgilerini belirtirsiniz. Uygulama ağ geçidi myAGSubnet ve myAGPublicIPAddress'e atanır.

az network application-gateway create \
  --name myAppGateway \
  --location eastus \
  --resource-group myResourceGroupAG \
  --vnet-name myVNet \
  --subnet myAGsubnet \
  --capacity 2 \
  --sku Standard_v2 \
  --http-settings-cookie-based-affinity Disabled \
  --frontend-port 80 \
  --http-settings-port 80 \
  --http-settings-protocol Http \
  --public-ip-address myAGPublicIPAddress \
  --priority 100

Uygulama ağ geçidinin oluşturulması birkaç dakika sürebilir. Uygulama ağ geçidi oluşturulduktan sonra şu yeni özellikleri görürsünüz:

Özellik Tanım
appGatewayBackendPool Bir uygulama ağ geçidi en az bir arka uç adres havuzuna sahip olmalıdır.
appGatewayBackendHttpSettings İletişim için 80 numaralı bağlantı noktasının ve HTTP protokollerinin kullanıldığını belirtir.
appGatewayHttpListener appGatewayBackendPool ile ilişkili varsayılan dinleyicidir
appGatewayFrontendIP appGatewayHttpListener’a myAGPublicIPAddress’i atar.
rule1 appGatewayHttpListener ile ilişkili varsayılan yönlendirme kuralıdır.

Görüntü ve video arka uç havuzlarını ve bağlantı noktasını ekleme

az network application-gateway address-pool create komutunu kullanarak imagesBackendPool ve videoBackendPool adlı arka uç havuzlarını uygulama ağ geçidinize ekleyin. az network application-gateway frontend-port create komutunu kullanarak havuzlar için ön uç bağlantı noktasını ekleyin.

az network application-gateway address-pool create \
  --gateway-name myAppGateway \
  --resource-group myResourceGroupAG \
  --name imagesBackendPool

az network application-gateway address-pool create \
  --gateway-name myAppGateway \
  --resource-group myResourceGroupAG \
  --name videoBackendPool

az network application-gateway frontend-port create \
  --port 8080 \
  --gateway-name myAppGateway \
  --resource-group myResourceGroupAG \
  --name port8080

Arka uç dinleyicisi ekleme

az network application-gateway http-listener create komutunu kullanarak, trafiği yönlendirmek için gereken backendListener adlı arka uç dinleyicisini ekleyin.

az network application-gateway http-listener create \
  --name backendListener \
  --frontend-ip appGatewayFrontendIP \
  --frontend-port port8080 \
  --resource-group myResourceGroupAG \
  --gateway-name myAppGateway

URL yol eşlemesini ekleme

URL yol eşlemeleri belirli URL'lerin belirli arka uç havuzlarına yönlendirilmesini sağlar. az network application-gateway url-path-map create ve az network application-gateway url-path-map rule create komutlarını kullanarak imagePathRule ve videoPathRule adlı URL yol eşlemelerini oluşturun.

az network application-gateway url-path-map create \
  --gateway-name myAppGateway \
  --name myPathMap \
  --paths /images/* \
  --resource-group myResourceGroupAG \
  --address-pool imagesBackendPool \
  --default-address-pool appGatewayBackendPool \
  --default-http-settings appGatewayBackendHttpSettings \
  --http-settings appGatewayBackendHttpSettings \
  --rule-name imagePathRule

az network application-gateway url-path-map rule create \
  --gateway-name myAppGateway \
  --name videoPathRule \
  --resource-group myResourceGroupAG \
  --path-map-name myPathMap \
  --paths /video/* \
  --address-pool videoBackendPool \
  --http-settings appGatewayBackendHttpSettings

Yönlendirme kuralı ekleme

Yönlendirme kuralı URL eşlemelerini oluşturduğunuz dinleyici ile ilişkilendirir. az network application-gateway rule create komutunu kullanarak rule2 adlı bir kural ekleyin.

az network application-gateway rule create \
  --gateway-name myAppGateway \
  --name rule2 \
  --resource-group myResourceGroupAG \
  --http-listener backendListener \
  --rule-type PathBasedRouting \
  --url-path-map myPathMap \
  --address-pool appGatewayBackendPool \
  --priority 200

Sanal Makine Ölçek Kümeleri oluşturma

Bu makalede, oluşturduğunuz üç arka uç havuzunu destekleyen üç Sanal Makine Ölçek Kümeleri oluşturacaksınız. Oluşturduğunuz ölçek kümeleri myvmss1, myvmss2 ve myvmss3 olarak adlandırılır. Her bir ölçek kümesi NGINX yükleyeceğiniz iki sanal makine örneği içerir.

for i in `seq 1 3`; do

  if [ $i -eq 1 ]
  then
    poolName="appGatewayBackendPool"
  fi

  if [ $i -eq 2 ]
  then
    poolName="imagesBackendPool"
  fi

  if [ $i -eq 3 ]
  then
    poolName="videoBackendPool"
  fi

  az vmss create \
    --name myvmss$i \
    --resource-group myResourceGroupAG \
    --image Ubuntu2204 \
    --admin-username azureuser \
    --admin-password Azure123456! \
    --instance-count 2 \
    --vnet-name myVNet \
    --subnet myBackendSubnet \
    --vm-sku Standard_DS2 \
    --upgrade-policy-mode Automatic \
    --app-gateway myAppGateway \
    --backend-pool-name $poolName
done

NGINX yükleme

for i in `seq 1 3`; do
  az vmss extension set \
    --publisher Microsoft.Azure.Extensions \
    --version 2.0 \
    --name CustomScript \
    --resource-group myResourceGroupAG \
    --vmss-name myvmss$i \
    --settings '{ "fileUris": ["https://raw.githubusercontent.com/Azure/azure-docs-powershell-samples/master/application-gateway/iis/install_nginx.sh"], "commandToExecute": "./install_nginx.sh" }'
done

Uygulama ağ geçidini test etme

Uygulama ağ geçidinin genel IP adresini almak için az network public-ip show komutunu kullanın. Genel IP adresini kopyalayıp tarayıcınızın adres çubuğuna yapıştırın. Örneğin http://40.121.222.19, http://40.121.222.19:8080/images/test.htm veya http://40.121.222.19:8080/video/test.htm.

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

Test base URL in application gateway

URL'yi http://< ip-address>:8080/images/test.html olarak değiştirin ve IP adresinizi ip-adresi> olarak <değiştirin ve aşağıdaki örneğe benzer bir şey görmeniz gerekir:

Test images URL in application gateway

URL'yi http://< ip-address>:8080/video/test.html olarak değiştirin, IP adresi yerine <IP adresinizi> yazın ve aşağıdaki örneğe benzer bir şey görmeniz gerekir.

Test video URL in application gateway

Kaynakları temizleme

Artık gerekli olmadığında kaynak grubunu, uygulama ağ geçidini ve tüm ilgili kaynakları silin.

az group delete --name myResourceGroupAG

Sonraki adımlar

URL yolu tabanlı yönlendirme ile bir uygulama ağ geçidi oluşturma