Criar um gateway de aplicativo que hospeda vários sites usando a CLI do Azure
Pode utilizar a CLI do Azure para configurar o alojamento de vários sites quando cria um gateway de aplicação. Neste artigo, você define pools de endereços de back-end usando conjuntos de dimensionamento de máquinas virtuais. Em seguida, vai configurar os serviços de escuta e as regras com base nos domínios que possui para assegurar que o tráfego Web chega aos servidores adequados nos conjuntos. Este artigo pressupõe que você possui vários domínios e usa exemplos de www.contoso.com e www.fabrikam.com.
Neste artigo, vai aprender a:
- Configurar a rede
- Criar um gateway de aplicação
- Criar serviços de escuta de back-end
- Criar regras de encaminhamento
- Criar conjuntos de escala de máquina virtual com os pools de back-end
- Criar um registo CNAME no seu domínio
Se preferir, você pode concluir este procedimento usando o Azure PowerShell.
Se não tiver uma subscrição do Azure, crie uma conta gratuita do Azure antes de começar.
Pré-requisitos
Use o ambiente Bash no Azure Cloud Shell. Para obter mais informações, consulte Guia de início rápido para Bash no Azure Cloud Shell.
Se preferir executar comandos de referência da CLI localmente, instale a CLI do Azure. Se estiver a utilizar o Windows ou macOS, considere executar a CLI do Azure num contentor Docker. Para obter mais informações, consulte Como executar a CLI do Azure em um contêiner do Docker.
Se estiver a utilizar uma instalação local, inicie sessão no CLI do Azure ao utilizar o comando az login. Para concluir o processo de autenticação, siga os passos apresentados no seu terminal. Para outras opções de entrada, consulte Entrar com a CLI do Azure.
Quando solicitado, instale a extensão da CLI do Azure na primeira utilização. Para obter mais informações sobre as extensões, veja Utilizar extensões com o CLI do Azure.
Execute o comando az version para localizar a versão e as bibliotecas dependentes instaladas. Para atualizar para a versão mais recente, execute o comando az upgrade.
- Este tutorial requer a versão 2.0.4 ou posterior da CLI do Azure. Se estiver usando o Azure Cloud Shell, a versão mais recente já está instalada.
Criar um grupo de recursos
Um grupo de recursos é um contentor lógico no qual os recursos do Azure são implementados e geridos. Crie um grupo de recursos com az group create.
O exemplo seguinte cria um grupo de recursos com o nome myResourceGroupAG na localização eastus.
az group create --name myResourceGroupAG --location eastus
Criar recursos de rede
Crie a rede virtual denominada e a sub-rede denominada myAGSubnet com az network vnet create. Em seguida, pode adicionar a sub-rede que é necessária para os servidores de back-end, com az network vnet subnet create. Crie o endereço IP público denominado myAGPublicIPAddress com az network public-ip create.
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
Criar o gateway de aplicação
Pode utilizar az network application-gateway create para criar o gateway de aplicação. Quando cria um gateway de aplicação com a CLI do Azure, especifica informações de configuração, tais como a capacidade, sku e definições de HTTP. O gateway de aplicação é atribuído a myAGSubnet e myAGPublicIPAddress que criou anteriormente.
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
A criação do gateway de aplicação pode demorar vários minutos. Depois de criado o gateway de aplicação, pode ver estas novas funcionalidades do mesmo:
- appGatewayBackendPool - um gateway de aplicação tem de ter, pelo menos, um conjunto de endereços de back-end.
- appGatewayBackendHttpSettings - especifica que a porta 80 e um protocolo HTTP são utilizados para a comunicação.
- appGatewayHttpListener - o serviço de escuta predefinido associado a appGatewayBackendPool.
- appGatewayFrontendIP - atribui myAGPublicIPAddress a appGatewayHttpListener.
- rule1 - a regra de encaminhamento predefinida associada a appGatewayHttpListener.
Adicionar os conjuntos de back-end
Adicione os pools de back-end necessários para conter os servidores de back-end usando az network application-gateway address-pool create
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
Adicionar serviços de escuta
Adicione ouvintes que são necessários para rotear o tráfego usando az network application-gateway http-listener create.
Nota
Com o Application Gateway ou WAF v2 SKU, você também pode configurar até 5 nomes de host por ouvinte e pode usar caracteres curinga no nome do host. Consulte Nomes de host curinga no ouvinte para obter mais informações.
Para usar vários nomes de host e caracteres curinga em um ouvinte usando a CLI do Azure, você deve usar --host-names
em vez de --host-name
. Com nomes de host, você pode mencionar até cinco nomes de host como valores separados por espaço. Por exemplo, --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
Adicionar regras de encaminhamento
As regras são processadas na ordem em que são listadas se o campo de prioridade da regra não for usado. O tráfego é direcionado usando a primeira regra que corresponde independentemente da especificidade. Por exemplo, se tiver uma regra com um serviço de escuta básico e uma regra com uma escuta de vários sites, ambas na mesma porta, a regra com o serviço de escuta de vários sites tem de estar listada antes da regra com o serviço de escuta básico, para que a regra de vários sites funcione conforme esperado.
Neste exemplo, você cria duas novas regras e exclui a regra padrão criada quando implantou o gateway de aplicativo. Pode adicionar a regra com az network application-gateway rule create.
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
Adicionar prioridade às regras de roteamento
Para garantir que regras mais específicas sejam processadas primeiro, use o campo de prioridade da regra para garantir que elas tenham prioridade mais alta. O campo de prioridade da regra deve ser definido para todas as regras de roteamento de solicitação existentes e qualquer nova regra criada posteriormente também deve ter um valor de prioridade de regra.
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
Criar conjuntos de dimensionamento de máquina virtual
Neste exemplo, você cria três Conjuntos de Escala de Máquina Virtual que suportam os três pools de back-end no gateway de aplicativo. Os conjuntos de dimensionamento que criar são denominados myvmss1, myvmss2 e myvmss3. Cada conjunto de dimensionamento contém duas instâncias de máquina virtual onde vai instalar o IIS.
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
Instalar o NGINX
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
Criar um registo CNAME no seu domínio
Depois de criar o gateway de aplicação com o respetivo endereço IP público, pode obter o endereço DNS e utilizá-lo para criar um registo CNAME no seu domínio. Pode utilizar az network public-ip show para obter o endereço DNS do gateway de aplicação. Copie o valor fqdn de DNSSettings e utilize-o como o valor do registo CNAME que criar.
az network public-ip show \
--resource-group myResourceGroupAG \
--name myAGPublicIPAddress \
--query [dnsSettings.fqdn] \
--output tsv
O uso de registros A não é recomendado porque o VIP pode mudar quando o gateway de aplicativo for reiniciado.
Testar o gateway de aplicação
Introduza o nome de domínio na barra de endereço do seu browser. Tais como, http://www.contoso.com.
Altere o endereço para o outro domínio, e deverá ver algo semelhante ao seguinte exemplo:
Clean up resources (Limpar recursos)
Quando já não forem necessários, remova o grupo de recursos, o gateway de aplicação e todos os recursos relacionados.
az group delete --name myResourceGroupAG
Próximos passos
Criar um gateway de aplicação com regras de encaminhamento com base no caminho de URL