Поделиться через


Руководство. Создание кластера компонентов сервера Eureka с высоким уровнем доступности в приложениях контейнеров Azure

В этом руководстве вы узнаете, как создать службу Eureka, предназначенную для сохранения работы в условиях сбоев и высокого спроса. Создание высокодоступной службы Eureka гарантирует, что реестр служб всегда доступен клиентам независимо от спроса.

Обеспечение высокого уровня доступности для Eureka включает связывание нескольких экземпляров сервера Eureka вместе с формированием кластера. Кластер предоставляет ресурсы, чтобы при сбое одного сервера Eureka другие службы оставались доступными для запросов.

Изучив это руководство, вы:

  • Создайте сервер Eureka для компонентов Spring.
  • Привязка двух серверов Eureka для компонентов Spring к кластеру.
  • Привязка приложений к обоим серверам Eureka для обнаружения высокодоступной службы.

Необходимые компоненты

Рекомендации

При запуске управляемых компонентов Java в приложениях контейнеров Azure следует учитывать следующие сведения:

Товар Описание
Область Компоненты выполняются в той же среде, что и подключенное приложение контейнера.
Масштабирование Компонент не может масштабироваться. Свойства minReplicas масштабирования и maxReplicas имеют значение . 1.
Ресурсы Исправлено выделение ресурсов контейнера для компонентов. Число ядер ЦП равно 0,5, а размер памяти — 1 Ги.
Цены Выставление счетов на основе компонентов зависит от цен на основе потребления. Счета за ресурсы, потребляемые управляемыми компонентами, выставляются по тарифам "активный или простой". Вы можете удалить компоненты, которые больше не используются для остановки выставления счетов.
Привязка Приложения-контейнеры подключаются к компоненту через привязку. Привязки внедряют конфигурации в переменные среды приложения-контейнера. После установки привязки приложение-контейнер может считывать значения конфигурации из переменных среды и подключаться к компоненту.

Настройка

Чтобы создать кластер служб Eureka, выполните следующие действия.

  1. Создайте переменные, которые содержат значения конфигурации приложения.

    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. Войдите в Azure с помощью Azure CLI.

    az login
    
  3. Создать группу ресурсов.

    az group create --name $RESOURCE_GROUP --location $LOCATION
    
  4. Создайте среду приложений контейнеров.

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

Создание кластера

Затем создайте два экземпляра сервера Eureka и свяжите их в качестве кластера.

  1. Создайте два компонента Eureka Server для 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
    

Связывание компонентов вместе

Чтобы серверы Eureka работали в конфигурации высокого уровня доступности, они должны быть связаны друг с другом.

  1. Привязать первый сервер Eureka ко второму.

    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. Привязать второй сервер Eureka к первому.

    az containerapp env java-component eureka-server-for-spring update \
        --environment $ENVIRONMENT \
        --resource-group $RESOURCE_GROUP \
        --name $EUREKA_COMPONENT_SECOND \
        --bind $EUREKA_COMPONENT_FIRST
    

Развертывание и привязка приложения

С помощью компонентов сервера, связанных вместе, можно создать приложение-контейнер и привязать его к двум компонентам Eureka.

  1. Создайте приложение-контейнер.

    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. Привязите приложение-контейнер к первому компоненту сервера Eureka.

    az containerapp update \
        --name $APP_NAME \
        --resource-group $RESOURCE_GROUP \
        --bind $EUREKA_COMPONENT_FIRST 
    
  3. Привязите приложение-контейнер ко второму компоненту сервера Eureka.

    az containerapp update \
        --name $APP_NAME \
        --resource-group $RESOURCE_GROUP \
        --bind $EUREKA_COMPONENT_SECOND
    

Просмотр панелей мониторинга

Внимание

Чтобы просмотреть панель мониторинга, необходимо иметь по крайней мере Microsoft.App/managedEnvironments/write роль, назначенную учетной записи в ресурсе управляемой среды. Вы можете явно назначить Owner или роль в ресурсе или Contributor выполнить действия, чтобы создать пользовательское определение роли и назначить его учетной записи.

  1. Создайте определение настраиваемой роли.

    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>"]
    }'
    

    Обязательно замените заполнитель между <> квадратными скобками в AssignableScopes значении идентификатором подписки.

  2. Назначьте настраиваемую роль учетной записи в ресурсе управляемой среды.

    Получите идентификатор ресурса управляемой среды.

    export ENVIRONMENT_ID=$(az containerapp env show \
        --name $ENVIRONMENT --resource-group $RESOURCE_GROUP \
        --query id \
        --output tsv)
    
  3. Назначьте роль учетной записи.

    Перед выполнением этой команды замените заполнитель между <> скобками идентификатором пользователя или субъекта-службы.

    az role assignment create \
        --assignee <USER_OR_SERVICE_PRINCIPAL_ID> \
        --role "Java Component Dashboard Access" \
        --scope $ENVIRONMENT_ID
    
  4. Получите URL-адрес панели мониторинга Eureka Server для 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
    

    Эта команда возвращает URL-адрес, который можно использовать для доступа к панели мониторинга Eureka Server для Spring. На панели мониторинга можно убедиться, что настройка сервера Eureka состоит из двух реплик.

    Снимок экрана: высокодоступная панель мониторинга Eureka Server для Spring.

Очистка ресурсов

Ресурсы, созданные в этом руководстве, влияют на счет Azure. Если вы не собираетесь использовать эти службы в долгосрочной перспективе, выполните следующую команду, чтобы удалить все, созданное в этом руководстве.

az group delete --resource-group $RESOURCE_GROUP