Compartilhar via


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

Nesse tutorial, você aprenderá a 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 garante que o registro de serviço esteja sempre disponível para os clientes, independentemente da demanda.

Obter o status de alta disponibilidade para o Eureka inclui vincular várias instâncias de servidor Eureka formando 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 um servidor Eureka para os componentes do Spring.
  • Associe dois servidores Eureka para componentes do Spring em um cluster.
  • Associe aplicativos a ambos os servidores Eureka para a descoberta de serviços altamente disponíveis.

Pré-requisitos

Considerações

Ao executar componentes Java gerenciados nos Aplicativos de Contêiner do Azure, esteja ciente dos seguintes detalhes:

Item Explicação
Escopo Os componentes são executados no mesmo ambiente que o aplicativo de contêiner conectado.
Dimensionamento O componente não pode ser escalado. 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 é de 0,5 e o tamanho da memória é 1 Gi.
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 de acordo com as tarifas de uso ativo/ocioso. 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.

Instalação

Use as etapas a seguir para criar seu cluster do serviço 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. Entre no Azure com a CLI do 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 um cluster

Em seguida, crie duas instâncias do servidor Eureka e vincule-as como um cluster.

  1. 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 que os servidores Eureka funcionem em uma configuração de alta disponibilidade, eles precisam estar vinculados.

  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 contêiner e vinculá-lo aos dois componentes do 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
    

Ver os painéis de controle

Importante

Para exibir o painel, você precisa ter pelo menos a função Microsoft.App/managedEnvironments/write atribuída à sua conta no recurso de ambiente gerenciado. Você pode atribuir explicitamente a função Owner ou Contributor no recurso ou seguir as etapas para criar uma definição de função personalizada e atribuí-la à sua conta.

  1. Criar a definição de função personalizada.

    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>"]
    }'
    

    Certifique-se de substituir o espaço reservado entre os colchetes <> no valor AssignableScopes pela ID da sua assinatura.

  2. Atribua a função personalizada à sua conta no recurso de ambiente gerenciado.

    Obtenha a ID do recurso do ambiente gerenciado.

    export ENVIRONMENT_ID=$(az containerapp env show \
        --name $ENVIRONMENT --resource-group $RESOURCE_GROUP \
        --query id \
        --output tsv)
    
  3. Atribua a função à sua conta.

    Antes de executar esse comando, substitua o espaço reservado entre os colchetes <> pela sua ID de usuário ou da entidade de serviço.

    az role assignment create \
        --assignee <USER_OR_SERVICE_PRINCIPAL_ID> \
        --role "Java Component Dashboard Access" \
        --scope $ENVIRONMENT_ID
    
  4. 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 servidor Eureka altamente disponível para o painel do Spring.

Limpar os recursos

Os recursos criados neste tutorial têm um efeito na 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