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
- Uma conta do Azure com uma subscrição ativa. Se ainda não tiver um, pode criar um gratuitamente.
- CLI do Azure.
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.
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 grupo 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 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.
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
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.
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 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 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.
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 noAssignableScopes
valor pelo seu ID de 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 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
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.
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