Partilhar via


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

Neste tutorial, você aprende 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 registo de serviços está sempre disponível para os clientes, independentemente da procura.

A obtenção do status de alta disponibilidade para o Eureka inclui a vinculação de várias instâncias do 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:

  • Crie um servidor Eureka para componentes Spring.
  • Associe dois servidores Eureka para componentes do Spring em um cluster.
  • Associe aplicativos a ambos os servidores Eureka para descoberta de serviços altamente disponíveis.

Pré-requisitos

Considerações

Ao executar componentes Java gerenciados em Aplicativos de Contêiner do Azure, 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 O componente não pode ser dimensionado. 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 da CPU é 0.5 e o tamanho da memória é 1 Gi.
Preços A faturação dos componentes enquadra-se nos preços baseados no consumo. Os recursos consumidos pelos componentes gerenciados são cobrados pelas taxas ativas/ociosas. 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.

Configurar

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

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

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

Unir componentes

Para que os servidores Eureka funcionem numa configuração de alta disponibilidade, têm de estar interligados.

  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 interligados, você pode criar o aplicativo contêiner e vinculá-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 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
    

Ver os painéis

Importante

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

  1. Crie 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 AssignableScopes valor pelo seu ID de 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 colchetes pelo ID do 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 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 altamente disponível do Eureka Server for Spring.

Clean up resources (Limpar recursos)

Os recursos criados neste tutorial têm um efeito na sua fatura do Azure. Se você não vai usar esses serviços a longo prazo, execute o seguinte comando para remover tudo o que foi criado neste tutorial.

az group delete --resource-group $RESOURCE_GROUP