Compartir a través de


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 ayuda a garantizar que el registro de servicios que usa para Azure Container Apps siempre está 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 para formar 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, hizo lo siguiente:

  • Cree servidores Eureka para componentes de Spring.
  • Enlace dos servidores Eureka para componentes de Spring en un clúster.
  • Enlace una aplicación contenedora a ambos servidores Eureka para la detección de servicios de alta disponibilidad.

Requisitos previos

Consideraciones

Al ejecutar componentes de Java administrados en 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 Los componentes no se pueden 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 de 1 GB.
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, en función del uso de recursos. 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.

Configuración de recursos iniciales

Siga estos pasos para crear algunos recursos que necesita para el clúster de servicios eureka.

  1. 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"
    
  2. Use la CLI de Azure para iniciar sesión en Azure.

    az login
    
  3. Cree un grupo de recursos.

    az group create --name $RESOURCE_GROUP --location $LOCATION
    
  4. Cree el entorno de Container Apps.

    az containerapp env create \
        --name $ENVIRONMENT \
        --resource-group $RESOURCE_GROUP \
        --location $LOCATION
    

Creación de servidores para 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 formar un clúster

Para que los servidores eureka funcionen en una configuración de alta disponibilidad, deben vincularse conjuntamente como un clúster.

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

  1. 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
    
  2. 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 
    
  3. 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 del panel

Importante

Para ver el panel de Eureka Server para Spring, debe tener el rol Microsoft.App/managedEnvironments/write, Owner o Contributor asignado a su cuenta para el recurso de entorno de aplicaciones en contenedor.

Crear y asignar un rol personalizado

  1. Cree la definición de rol personalizada. Antes de ejecutar este comando, reemplace el marcador de posición en el valor AssignableScopescon su identificador de suscripción.

    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. Obtenga el identificador de recurso del entorno de Container Apps.

    export ENVIRONMENT_ID=$(az containerapp env show \
        --name $ENVIRONMENT --resource-group $RESOURCE_GROUP \
        --query id \
        --output tsv)
    
  3. Asigne el rol personalizado a su cuenta para el recurso de entorno de Container Apps. Antes de ejecutar este comando, reemplace el marcador de posición en el valor assignee con su identificador de objeto de usuario o identificador de entidad de servicio.

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

Obtención de la dirección URL del panel

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.

Captura de pantalla de un panel de Eureka para Spring. En la sección instancias registradas se muestra una aplicación contenedora y dos servidores Eureka, todo ello con un estado activo.

Limpieza de recursos

Los recursos creados en este tutorial afectan a 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