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


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

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

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

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

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

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

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

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

Товар Описание
Область Компоненты выполняются в той же среде, что и подключенное приложение контейнера.
Масштабирование Компоненты не могут масштабироваться. Свойства 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 CLI для входа в Azure.

    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 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
    

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

Внимание

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

Создание и назначение настраиваемой роли

  1. Создайте определение настраиваемой роли. Перед выполнением этой команды замените заполнитель в значении AssignableScopes идентификатором подписки.

    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. Получите идентификатор ресурса среды "Приложения контейнеров".

    export ENVIRONMENT_ID=$(az containerapp env show \
        --name $ENVIRONMENT --resource-group $RESOURCE_GROUP \
        --query id \
        --output tsv)
    
  3. Назначьте настраиваемую роль вашему аккаунту для ресурса среды "Контейнерные приложения". Перед выполнением этой команды замените заполнитель в значении assignee идентификатором объекта пользователя или идентификатором субъекта-службы.

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

Получение URL-адреса панели мониторинга

Получите 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 для Spring. В разделе

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

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

az group delete --resource-group $RESOURCE_GROUP