Partilhar via


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

Neste tutorial, descobre como criar um serviço Eureka concebido para se manter operacional perante falhas e alta procura. Construir um serviço Eureka altamente disponível ajuda a garantir que o registo de serviços que utiliza para aplicações Azure Container está sempre disponível para os clientes, independentemente da procura.

Alcançar o estatuto de alta disponibilidade do Eureka inclui ligar múltiplas instâncias de servidores Eureka para que 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:

  • Crie servidores Eureka para componentes Spring.
  • Associe dois servidores Eureka para componentes do Spring em um cluster.
  • Vincule uma aplicação a ambos os servidores Eureka para assegurar uma alta disponibilidade na descoberta de serviços.

Pré-requisitos

Considerações

Quando executar componentes Java geridos em Aplicações Container, esteja ciente dos seguintes detalhes:

Item Explicação
Âmbito Os componentes são executados no mesmo ambiente que o aplicativo de contêiner conectado.
Dimensionamento Os componentes não podem escalar. As propriedades minReplicas de dimensionamento e maxReplicas estão ambas definidas como 1.
Recursos A alocação de recursos de contêiner para componentes é fixa. O número de núcleos de CPU é 0,5 e o tamanho da memória é 1 GB.
Preços A faturação dos componentes enquadra-se nos preços baseados no consumo. Os recursos consumidos pelos componentes geridos são faturados às taxas ativas ou ociosas, dependendo do uso de recursos. Você pode excluir componentes que não estão mais em uso para interromper a cobrança.
Enlace Os aplicativos de contêiner se conectam a um componente por meio de uma ligação. As associações injetam configurações em variáveis de ambiente do aplicativo de contêiner. Depois que uma associação é estabelecida, o aplicativo contêiner pode ler os valores de configuração das variáveis de ambiente e se conectar ao componente.

Estabelecer recursos iniciais

Use os passos seguintes para criar alguns recursos de que precisa para o seu cluster de serviços 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 o CLI do Azure para iniciar sessão no Azure.

    az login
    
  3. Crie um grupo 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 Eureka Server for 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

Liga componentes para formar um cluster

Para que os servidores Eureka funcionem numa configuração de alta disponibilidade, precisam de estar ligados como um cluster.

  1. Vincule 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. Ligue 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 vincular o aplicativo

Com os componentes do servidor ligados, podes criar a aplicação container e associá-la 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 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 contêiner ao segundo componente do servidor Eureka.

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

Visualizar o painel

Importante

Para visualizar o painel do Eureka Server for Spring, precisa de ter a função Microsoft.App/managedEnvironments/write, Owner ou Contributor atribuída à sua conta para o ambiente de Container Apps.

  • Se já tem uma destas funções, vá para a secção Obter o URL do painel para obter o URL e visualizar o painel.
  • Se quiser criar uma definição de função personalizada e atribuí-la à sua conta, siga os passos da secção seguinte: Criar e atribuir uma função personalizada.
  • Se quiseres atribuir à tua conta a função Owner ou Contributor para o recurso, faz essa atribuição e depois vá para a secção do Obter o URL do painel.

Criar e atribuir uma função personalizada

  1. Crie a definição de função personalizada. Antes de executar este comando, substitua o marcador no AssignableScopes valor pelo seu ID de subscrição.

    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 ID de recurso do ambiente Container Apps.

    export ENVIRONMENT_ID=$(az containerapp env show \
        --name $ENVIRONMENT --resource-group $RESOURCE_GROUP \
        --query id \
        --output tsv)
    
  3. Atribui o papel personalizado à tua conta para o recurso de ambiente Container Apps. Antes de executar este comando, substitua o marcador no valor assignee pelo ID do objeto de utilizador ou o ID do principal do serviço.

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

Obtenha o URL do dashboard

Obtenha o URL do painel do Eureka Server for 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

Este comando devolve o URL que pode utilizar para aceder ao painel do Eureka Server for Spring. Através do painel, você pode verificar se a configuração do servidor Eureka consiste em duas réplicas.

Captura de ecrã de um painel de controlo do Eureka for Spring. A secção de instâncias registadas lista uma aplicação em contentor e dois servidores Eureka, todos com o estado de ativo.

Clean up resources (Limpar recursos)

Os recursos criados neste tutorial afetam a sua conta Azure. Se não vais usar estes serviços a longo prazo, executa o comando seguinte para remover tudo o que foi criado neste tutorial.

az group delete --resource-group $RESOURCE_GROUP