Compartilhar via


Tutorial: Criar um cluster de componentes do servidor Eureka altamente disponível nos Aplicativos de Contêiner do Azure

Neste tutorial, você descobrirá como criar um serviço Eureka projetado para permanecer operacional diante de falhas e alta demanda. A criação de um serviço Eureka altamente disponível ajuda a garantir que o registro de serviço usado para Aplicativos de Contêiner do Azure esteja sempre disponível para os clientes, independentemente da demanda.

Alcançar o status de alta disponibilidade do Eureka inclui vincular várias instâncias de servidor Eureka para que elas formem um cluster. O cluster fornece recursos para que, se um servidor Eureka falhar, os outros serviços permaneçam disponíveis para solicitações.

Neste tutorial, você:

  • Crie servidores Eureka para componentes spring.
  • Associe dois servidores Eureka para componentes do Spring em um cluster.
  • Associe um aplicativo de contêiner a ambos os servidores Eureka para descoberta de serviços com alta disponibilidade.

Pré-requisitos

Considerações

Ao executar componentes Java gerenciados em Aplicativos de Contêiner, lembre-se dos seguintes detalhes:

Item Explicação
Scope Os componentes são executados no mesmo ambiente que o aplicativo de contêiner conectado.
Scaling Os componentes não podem ser dimensionados. As propriedades de dimensionamento minReplicas e maxReplicas estão definidas como 1.
Recursos A alocação de recursos do contêiner para componentes é fixa. O número de núcleos de CPU é 0,5 e o tamanho da memória é de 1 GB.
Preços A cobrança do complemento é incluída na categoria de preços baseados em consumo. Os recursos consumidos por componentes gerenciados são cobrados pelas taxas ativas ou ociosas, dependendo do uso do recurso. Você pode excluir componentes que não estão mais em uso para interromper a cobrança.
Associação Os aplicativos de contêiner se conectam a um componente por meio de uma vinculação. As associações injetam as configurações nas variáveis de ambiente do aplicativo de contêiner. Depois que uma associação for estabelecida, o aplicativo de contêiner poderá ler os valores de configuração das variáveis de ambiente e se conectar ao componente.

Configurar recursos iniciais

Use as etapas a seguir para criar alguns recursos necessários para o cluster de serviço do Eureka.

  1. Crie variáveis que contenham valores de configuração do aplicativo.

    export LOCATION=eastus
    export RESOURCE_GROUP=my-services-resource-group
    export ENVIRONMENT=my-environment
    export EUREKA_COMPONENT_FIRST=eureka01
    export EUREKA_COMPONENT_SECOND=eureka02
    export APP_NAME=sample-service-eureka-client
    export IMAGE="mcr.microsoft.com/javacomponents/samples/sample-service-eureka-client:latest"
    
  2. Use a CLI do Azure para entrar no Azure.

    az login
    
  3. Crie um grupos de recursos.

    az group create --name $RESOURCE_GROUP --location $LOCATION
    
  4. Crie seu ambiente de aplicativos de contêiner.

    az containerapp env create \
        --name $ENVIRONMENT \
        --resource-group $RESOURCE_GROUP \
        --location $LOCATION
    

Criar servidores para um cluster

Crie dois componentes do Servidor Eureka para Spring.

az containerapp env java-component eureka-server-for-spring create \
    --environment $ENVIRONMENT \
    --resource-group $RESOURCE_GROUP \
    --name $EUREKA_COMPONENT_FIRST
az containerapp env java-component eureka-server-for-spring create \
    --environment $ENVIRONMENT \
    --resource-group $RESOURCE_GROUP \
    --name $EUREKA_COMPONENT_SECOND

Associar componentes para formar um cluster

Para que os servidores Eureka funcionem em uma configuração de alta disponibilidade, eles precisam ser vinculados como um cluster.

  1. Associe o primeiro servidor Eureka ao segundo.

    az containerapp env java-component eureka-server-for-spring update \
        --environment $ENVIRONMENT \
        --resource-group $RESOURCE_GROUP \
        --name $EUREKA_COMPONENT_FIRST \
        --bind $EUREKA_COMPONENT_SECOND
    
  2. Associe o segundo servidor Eureka ao primeiro.

    az containerapp env java-component eureka-server-for-spring update \
        --environment $ENVIRONMENT \
        --resource-group $RESOURCE_GROUP \
        --name $EUREKA_COMPONENT_SECOND \
        --bind $EUREKA_COMPONENT_FIRST
    

Implantar e associar o aplicativo

Com os componentes do servidor vinculados, você pode criar o aplicativo de contêiner e associá-lo aos dois componentes Eureka.

  1. Crie o aplicativo de contêiner.

    az containerapp create \
        --name $APP_NAME \
        --resource-group $RESOURCE_GROUP \
        --environment $ENVIRONMENT \
        --image $IMAGE \
        --min-replicas 1 \
        --max-replicas 1 \
        --ingress external \
        --target-port 8080
    
  2. Associe o aplicativo de contêiner ao primeiro componente do servidor Eureka.

    az containerapp update \
        --name $APP_NAME \
        --resource-group $RESOURCE_GROUP \
        --bind $EUREKA_COMPONENT_FIRST 
    
  3. Associe o aplicativo de contêiner ao segundo componente do servidor Eureka.

    az containerapp update \
        --name $APP_NAME \
        --resource-group $RESOURCE_GROUP \
        --bind $EUREKA_COMPONENT_SECOND
    

Exibir o painel

Importante

Para exibir o painel do Servidor Eureka para Spring, você precisa ter as funções Microsoft.App/managedEnvironments/write, Owner ou Contributor atribuídas à sua conta para o recurso de ambiente de aplicativos de contêineres.

  • Se você já tiver uma dessas funções, vá para a seção Obter a URL do painel para obter a URL e exibir o painel.
  • Se você quiser criar uma definição de função personalizada e atribuí-la à sua conta, execute as etapas na seção a seguir, crie e atribua uma função personalizada.
  • Se você quiser atribuir à sua conta a função Owner ou Contributor para o recurso, faça essa atribuição e vá para a seção Obter a URL do painel.

Criar e atribuir uma função personalizada

  1. Criar a definição de função personalizada. Antes de executar esse comando, substitua o valor AssignableScopes pelo identificador de assinatura.

    az role definition create --role-definition '{
        "Name": "Java Component Dashboard Access",
        "IsCustom": true,
        "Description": "Can access managed Java Component dashboards in managed environments",
        "Actions": [
            "Microsoft.App/managedEnvironments/write"
        ],
        "AssignableScopes": ["/subscriptions/<SUBSCRIPTION_ID>"]
    }'
    
  2. Obtenha o identificador de recurso do ambiente de Aplicativos de Contêiner.

    export ENVIRONMENT_ID=$(az containerapp env show \
        --name $ENVIRONMENT --resource-group $RESOURCE_GROUP \
        --query id \
        --output tsv)
    
  3. Atribua a função personalizada à sua conta para o recurso de ambiente de Aplicativos de Contêiner. Antes de executar esse comando, substitua o espaço reservado no valor assignee pela ID do objeto de usuário ou pela ID da entidade de serviço.

    az role assignment create \
        --assignee <USER_OR_SERVICE_PRINCIPAL_ID> \
        --role "Java Component Dashboard Access" \
        --scope $ENVIRONMENT_ID
    

Obter a URL do painel

Obtenha a URL do painel de controle do Servidor Eureka para Spring.

az containerapp env java-component eureka-server-for-spring show \
    --environment $ENVIRONMENT \
    --resource-group $RESOURCE_GROUP \
    --name $EUREKA_COMPONENT_FIRST \
    --query properties.ingress.fqdn \
    --output tsv

Esse comando retorna a URL que você pode usar para acessar o painel de controle do Servidor Eureka para Spring. Por meio do painel, você pode verificar se a configuração do servidor Eureka consiste em duas réplicas.

Captura de tela de um painel do Eureka para Spring. A seção instâncias registradas lista um aplicativo de contêiner e dois servidores Eureka, todos com status ativo.

Limpar os recursos

Os recursos criados neste tutorial afetam sua fatura do Azure. Se você não usar esses serviços a longo prazo, execute o comando a seguir para remover tudo o que foi criado neste tutorial.

az group delete --resource-group $RESOURCE_GROUP