Aracılığıyla paylaş


Azure CLI kullanarak birden çok web sitesini barındıran bir uygulama ağ geçidi oluşturma

Bir uygulama ağ geçidi oluştururken birden çok web sitesi barındırmayı yapılandırmak için Azure CLI'yi kullanabilirsiniz. Bu makalede, sanal makinelerin ölçek kümelerini kullanarak arka uç adres havuzlarını tanımlarsınız. Ardından, sahip olduğunuz etki alanlarına göre dinleyiciler ve kuralları, web trafiğinin havuzlardaki uygun sunuculara ulaşmasını sağlamak amacıyla yapılandırırsınız. Bu makalede, birden çok etki alanının sahibi olduğunuz varsayılır ve www.contoso.com ve www.fabrikam.comörnekleri kullanılır.

Bu makalede şunların nasıl yapılacağını öğreneceksiniz:

  • Ağı ayarlama
  • Uygulama ağ geçidi oluşturma
  • Arka uç dinleyicileri oluşturun
  • Yönlendirme kuralları oluşturma
  • Arka uç havuzlarıyla Sanal Makine Ölçek Kümeleri Oluştur
  • Etki alanınızda bir CNAME kaydı oluşturma

Çok siteli Uygulama Ağ Geçidi

İsterseniz Azure PowerShell kullanarak bu yordamı tamamlayabilirsiniz.

Azure hesabınız yoksa, başlamadan önce ücretsiz hesap oluşturun.

Önkoşullar

  • 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.

Bir kaynak grubu oluşturun

Kaynak grubu, Azure kaynaklarının dağıtıldığı ve yönetildiği bir mantıksal kapsayıcıdır. az group create ile 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 myAGSubnet adlı sanal ağı ve alt ağı oluşturun. Ardından az network vnet subnet create komutunu kullanarak arka uç sunucuları için gereken alt ağı ekleyebilirsiniz. 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

Uygulama ağ geçidi oluşturma

Uygulama ağ geçidini oluşturmak için az network application-gateway create komutunu kullanabilirsiniz. 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’e ve daha önce oluşturduğunuz 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 10

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:

  • 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 protokolünün kullanıldığını belirtir.
  • appGatewayHttpListener: appGatewayBackendPool ile ilişkili varsayılan dinleyicidir.
  • appGatewayFrontendIP - appGatewayHttpListener’a myAGPublicIPAddress’i atar.
  • kural 1 - appGatewayHttpListener ile ilişkili varsayılan yönlendirme kuralıdır.

Arka uç havuzlarını ekleyin

az network application-gateway address-pool create komutunu kullanarak arka uç sunucularını içermesi için gereken arka uç havuzlarını ekleyin

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

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

Dinleyiciler ekleme

az network application-gateway http-listener create komutunu kullanarak trafiği yönlendirmek için gereken dinleyicileri ekleyin.

Uyarı

Application Gateway veya WAF v2 SKU ile dinleyici başına en fazla 5 host adı yapılandırabilir ve konak adında joker karakterler kullanabilirsiniz. Daha fazla bilgi için dinleyicide joker konak adları hakkında daha fazla bilgi edinin. Azure CLI kullanarak bir dinleyicide birden çok ana bilgisayar adı ve joker karakter kullanmak için --host-names yerine --host-name kullanmanız gerekir. Ana bilgisayar adları ile, boşlukla ayrılmış değerler olarak en fazla beş ana bilgisayar adı belirtebilirsiniz. Örneğin, --host-names "*.contoso.com *.fabrikam.com"

az network application-gateway http-listener create \
  --name contosoListener \
  --frontend-ip appGatewayFrontendIP \
  --frontend-port appGatewayFrontendPort \
  --resource-group myResourceGroupAG \
  --gateway-name myAppGateway \
  --host-name www.contoso.com

az network application-gateway http-listener create \
  --name fabrikamListener \
  --frontend-ip appGatewayFrontendIP \
  --frontend-port appGatewayFrontendPort \
  --resource-group myResourceGroupAG \
  --gateway-name myAppGateway \
  --host-name www.fabrikam.com

Yönlendirme kuralları ekleme

Kural önceliği alanı kullanılmazsa kurallar listelendikleri sırayla işlenir. Trafik, özgüllük fark etmeksizin eşleşen ilk kural kullanılarak yönlendirilir. Örneğin, aynı bağlantı noktasında temel bir dinleyici kullanan bir kuralınız ve çok siteli dinleyici kullanan bir kuralınız varsa çok siteli kuralın beklendiği gibi çalışması için çok siteli dinleyicinin kuralı temel dinleyici kuralından önce listelenmelidir.

Bu örnekte iki yeni kural oluşturacak ve uygulama ağ geçidini dağıttığınızda oluşturulan varsayılan kuralı sileceksiniz. Kuralı az network application-gateway rule create komutunu kullanarak ekleyebilirsiniz.

az network application-gateway rule create \
  --gateway-name myAppGateway \
  --name contosoRule \
  --resource-group myResourceGroupAG \
  --http-listener contosoListener \
  --rule-type Basic \
  --address-pool contosoPool \
  --priority 200

az network application-gateway rule create \
  --gateway-name myAppGateway \
  --name fabrikamRule \
  --resource-group myResourceGroupAG \
  --http-listener fabrikamListener \
  --rule-type Basic \
  --address-pool fabrikamPool \
  --priority 100

az network application-gateway rule delete \
  --gateway-name myAppGateway \
  --name rule1 \
  --resource-group myResourceGroupAG

Yönlendirme kurallarına öncelik ekleme

Önce daha belirli kuralların işlenmesini sağlamak için, daha yüksek önceliğe sahip olduklarından emin olmak için kural önceliği alanını kullanın. Kural önceliği alanı tüm mevcut istek yönlendirme kuralları için ayarlanmalıdır ve daha sonra oluşturulan tüm yeni kuralların da bir kural öncelik değerine sahip olması gerekir.

az network application-gateway rule create \
  --gateway-name myAppGateway \
  --name contosoRule \
  --resource-group myResourceGroupAG \
  --http-listener contosoListener \
  --rule-type Basic \
  --priority 200 \
  --address-pool contosoPool

az network application-gateway rule create \
  --gateway-name myAppGateway \
  --name fabrikamRule \
  --resource-group myResourceGroupAG \
  --http-listener fabrikamListener \
  --rule-type Basic \
  --priority 100 \
  --address-pool fabrikamPool

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

Bu örnekte, uygulama ağ geçidindeki üç arka uç havuzunu destekleyen üç Sanal Makine Ölçek Kümesi 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 IIS yükleyeceğiniz iki sanal makine örneği içerir.

for i in `seq 1 2`; do

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

  if [ $i -eq 2 ]
  then
    poolName="fabrikamPool"
  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_D1_v2 \
    --upgrade-policy-mode Automatic \
    --app-gateway myAppGateway \
    --backend-pool-name $poolName
done

NGINX yükleme

for i in `seq 1 2`; 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

Etki alanınızda bir CNAME kaydı oluşturma

Uygulama ağ geçidi genel IP adresiyle oluşturulduktan sonra DNS adresini alabilir ve etki alanınızda bir CNAME kaydı oluşturmak için kullanabilirsiniz. Uygulama ağ geçidinin DNS adresini almak için az network public-ip show komutunu kullanabilirsiniz. DNSSetting için fqdn değerini kopyalayın ve bu değeri oluşturduğunuz CNAME kaydının değeri olarak kullanın.

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

Uygulama ağ geçidi yeniden başlatıldığında sanal IP (VIP) değişebileceğinden A kayıtlarının kullanılması önerilmez.

Uygulama ağ geçidini test edin

Tarayıcınızın adres çubuğuna, etki alanı adınızı girin. Örneğin http://www.contoso.com.

Contoso sitesini uygulama ağ geçidinde test et

Adresi diğer etki alanınızla değiştirin ve aşağıdaki örneğe benzer bir şey göreceksiniz.

Uygulama ağ geçidinde Fabrikam sitesini test et

Kaynakları temizle

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 yol tabanlı yönlendirme kurallarıyla uygulama ağ geçidi oluşturma