Руководство. Создание кластера компонентов сервера Eureka с высоким уровнем доступности в приложениях контейнеров Azure
В этом руководстве вы узнаете, как создать службу Eureka, предназначенную для сохранения работы в условиях сбоев и высокого спроса. Создание высокодоступной службы Eureka гарантирует, что реестр служб всегда доступен клиентам независимо от спроса.
Обеспечение высокого уровня доступности для Eureka включает связывание нескольких экземпляров сервера Eureka вместе с формированием кластера. Кластер предоставляет ресурсы, чтобы при сбое одного сервера Eureka другие службы оставались доступными для запросов.
Изучив это руководство, вы:
- Создайте сервер Eureka для компонентов Spring.
- Привязка двух серверов Eureka для компонентов Spring к кластеру.
- Привязка приложений к обоим серверам Eureka для обнаружения высокодоступной службы.
Необходимые компоненты
- Учетная запись Azure с активной подпиской. Если у вас еще нет, его можно создать бесплатно.
- Azure CLI.
Рекомендации
При запуске управляемых компонентов Java в приложениях контейнеров Azure следует учитывать следующие сведения:
Товар | Описание |
---|---|
Область | Компоненты выполняются в той же среде, что и подключенное приложение контейнера. |
Масштабирование | Компонент не может масштабироваться. Свойства minReplicas масштабирования и maxReplicas имеют значение . 1 . |
Ресурсы | Исправлено выделение ресурсов контейнера для компонентов. Число ядер ЦП равно 0,5, а размер памяти — 1 Ги. |
Цены | Выставление счетов на основе компонентов зависит от цен на основе потребления. Счета за ресурсы, потребляемые управляемыми компонентами, выставляются по тарифам "активный или простой". Вы можете удалить компоненты, которые больше не используются для остановки выставления счетов. |
Привязка | Приложения-контейнеры подключаются к компоненту через привязку. Привязки внедряют конфигурации в переменные среды приложения-контейнера. После установки привязки приложение-контейнер может считывать значения конфигурации из переменных среды и подключаться к компоненту. |
Настройка
Чтобы создать кластер служб Eureka, выполните следующие действия.
Создайте переменные, которые содержат значения конфигурации приложения.
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"
Войдите в Azure с помощью Azure CLI.
az login
Создать группу ресурсов.
az group create --name $RESOURCE_GROUP --location $LOCATION
Создайте среду приложений контейнеров.
az containerapp env create \ --name $ENVIRONMENT \ --resource-group $RESOURCE_GROUP \ --location $LOCATION
Создание кластера
Затем создайте два экземпляра сервера Eureka и свяжите их в качестве кластера.
Создайте два компонента 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 работали в конфигурации высокого уровня доступности, они должны быть связаны друг с другом.
Привязать первый сервер 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
Привязать второй сервер 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.
Создайте приложение-контейнер.
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
Привязите приложение-контейнер к первому компоненту сервера Eureka.
az containerapp update \ --name $APP_NAME \ --resource-group $RESOURCE_GROUP \ --bind $EUREKA_COMPONENT_FIRST
Привязите приложение-контейнер ко второму компоненту сервера Eureka.
az containerapp update \ --name $APP_NAME \ --resource-group $RESOURCE_GROUP \ --bind $EUREKA_COMPONENT_SECOND
Просмотр панелей мониторинга
Внимание
Чтобы просмотреть панель мониторинга, необходимо иметь по крайней мере Microsoft.App/managedEnvironments/write
роль, назначенную учетной записи в ресурсе управляемой среды. Вы можете явно назначить Owner
или роль в ресурсе или Contributor
выполнить действия, чтобы создать пользовательское определение роли и назначить его учетной записи.
Создайте определение настраиваемой роли.
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
значении идентификатором подписки.Назначьте настраиваемую роль учетной записи в ресурсе управляемой среды.
Получите идентификатор ресурса управляемой среды.
export ENVIRONMENT_ID=$(az containerapp env show \ --name $ENVIRONMENT --resource-group $RESOURCE_GROUP \ --query id \ --output tsv)
Назначьте роль учетной записи.
Перед выполнением этой команды замените заполнитель между
<>
скобками идентификатором пользователя или субъекта-службы.az role assignment create \ --assignee <USER_OR_SERVICE_PRINCIPAL_ID> \ --role "Java Component Dashboard Access" \ --scope $ENVIRONMENT_ID
Получите 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 состоит из двух реплик.
Очистка ресурсов
Ресурсы, созданные в этом руководстве, влияют на счет Azure. Если вы не собираетесь использовать эти службы в долгосрочной перспективе, выполните следующую команду, чтобы удалить все, созданное в этом руководстве.
az group delete --resource-group $RESOURCE_GROUP