Tutorial: Creación de un clúster de componentes de servidor Eureka de alta disponibilidad en Azure Container Apps
En este tutorial, aprenderá a crear un servicio Eureka diseñado para permanecer operativo en caso de errores y alta demanda. La creación de un servicio Eureka de alta disponibilidad garantiza que el registro de servicios esté siempre disponible para los clientes, independientemente de la demanda.
Lograr un estado de alta disponibilidad para Eureka incluye la vinculación de varias instancias de servidor Eureka formando un clúster. El clúster proporciona recursos para que, si se produce un error en un servidor Eureka, los demás servicios sigan estando disponibles para las solicitudes.
En este tutorial ha:
- Cree un servidor Eureka para componentes de Spring.
- Enlace dos servidores Eureka para componentes de Spring en un clúster.
- Enlace aplicaciones a ambos servidores Eureka para la detección de servicios de alta disponibilidad.
Requisitos previos
- Una cuenta de Azure con una suscripción activa. Si aún no tiene ninguno, puede crear uno gratis.
- Azure CLI.
Consideraciones
Al ejecutar componentes de Java administrados en Azure Container Apps, tenga en cuenta los detalles siguientes:
Elemento | Explicación |
---|---|
Ámbito | Los componentes se ejecutan en el mismo entorno que la aplicación contenedora conectada. |
Ampliación | El componente no se puede escalar. Las propiedades de escalado minReplicas y maxReplicas se establecen en 1 . |
Recursos | Se ha corregido la asignación de recursos de contenedor para los componentes. El número de núcleos de CPU es 0,5 y el tamaño de memoria es 1 Gi. |
Precios | La facturación de componentes se encuentra bajo los precios basados en el consumo. Los recursos consumidos por los componentes administrados se facturan a las tarifas activas o inactivas. Puede eliminar componentes que ya no estén en uso para detener la facturación. |
Enlace | Las aplicaciones de contenedor se conectan a un componente a través de un enlace. Los enlaces insertan configuraciones en variables de entorno de la aplicación contenedora. Una vez establecido un enlace, la aplicación contenedora puede leer los valores de configuración de las variables de entorno y conectarse al componente. |
Configurar
Siga estos pasos para crear el clúster del servicio Eureka.
Cree variables que contengan valores de configuración de la aplicación.
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"
Inicio de sesión en Azure con la CLI de Azure.
az login
Cree un grupo de recursos.
az group create --name $RESOURCE_GROUP --location $LOCATION
Cree el entorno de Container Apps.
az containerapp env create \ --name $ENVIRONMENT \ --resource-group $RESOURCE_GROUP \ --location $LOCATION
Crear un clúster
A continuación, cree dos instancias de servidor Eureka y vincúlelas juntas como un clúster.
Cree dos componentes de 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
Enlace de componentes
Para que los servidores Eureka funcionen en una configuración de alta disponibilidad, deben vincularse juntos.
Enlace el primer servidor Eureka al 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
Enlace el segundo servidor Eureka al primero.
az containerapp env java-component eureka-server-for-spring update \ --environment $ENVIRONMENT \ --resource-group $RESOURCE_GROUP \ --name $EUREKA_COMPONENT_SECOND \ --bind $EUREKA_COMPONENT_FIRST
Implementación y enlace de la aplicación
Con los componentes del servidor vinculados, puede crear la aplicación contenedora y enlazarla a los dos componentes de Eureka.
Cree la aplicación de contenedor.
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
Enlace la aplicación contenedora al primer componente de servidor Eureka.
az containerapp update \ --name $APP_NAME \ --resource-group $RESOURCE_GROUP \ --bind $EUREKA_COMPONENT_FIRST
Enlace la aplicación contenedora al segundo componente de servidor Eureka.
az containerapp update \ --name $APP_NAME \ --resource-group $RESOURCE_GROUP \ --bind $EUREKA_COMPONENT_SECOND
Visualización de los paneles
Importante
Para ver el panel, debe tener al menos el rol de Microsoft.App/managedEnvironments/write
asignado a su cuenta en el recurso de entorno administrado. Puede asignar explícitamente el rol Owner
o Contributor
en el recurso o seguir los pasos para crear una definición de rol personalizada y asignarla a su cuenta.
Cree la definición de rol 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>"] }'
Asegúrese de reemplazar el marcador de posición entre los corchetes de
<>
en el valor deAssignableScopes
por el identificador de suscripción.Asigne el rol personalizado a su cuenta en el recurso de entorno administrado.
Obtenga el identificador de recurso del entorno administrado.
export ENVIRONMENT_ID=$(az containerapp env show \ --name $ENVIRONMENT --resource-group $RESOURCE_GROUP \ --query id \ --output tsv)
Asigne el rol a su cuenta.
Antes de ejecutar este comando, reemplace el marcador de posición entre los corchetes
<>
por el identificador de usuario o entidad de servicio.az role assignment create \ --assignee <USER_OR_SERVICE_PRINCIPAL_ID> \ --role "Java Component Dashboard Access" \ --scope $ENVIRONMENT_ID
Obtenga la dirección URL del panel de 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 devuelve la dirección URL que puede usar para acceder al panel de Eureka Server para Spring. A través del panel, puede comprobar que la configuración del servidor Eureka consta de dos réplicas.
Limpieza de recursos
Los recursos creados en este tutorial tienen un efecto en la factura de Azure. Si no va a usar estos servicios a largo plazo, ejecute el siguiente comando para quitar todo lo creado en este tutorial.
az group delete --resource-group $RESOURCE_GROUP