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
- Uma conta do Azure com uma assinatura ativa. Caso ainda não tenha uma, você pode criar uma gratuitamente.
- CLI do Azure.
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.
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"
Entre no Azure com a CLI do Azure.
az login
Crie um grupos de recursos.
az group create --name $RESOURCE_GROUP --location $LOCATION
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.
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.
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
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.
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
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
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.
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 valorAssignableScopes
pela ID da sua assinatura.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)
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
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.
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