Загрузка данных
Настройка вычислительных ресурсов
В данном разделе представлена информация по настройке вычислительных ресурсов для катастрофоуйстойчивых систем. Здесь представлены определения и примеры конфигурации развертывания.
Содержание:
Инструкция
Пулы ресурсов
Ресурная квота системы
Настройки ресурсов на сервисе
Инструкция
Шаг 1. Привнесите вычислительные ресурсы в каждую из зон. Для этого:
1.1 Ознакомьтесь с определением: Пулы ресурсов.
1.2 Если у вас новая система, то воспользуйтесь разделом Онбординг на App.Farm: Предоставление вычислительных ресурсов.
1.3 Если у вас существующая система, то обратитесь к администраторам платформы для распределения ресурсов по зонам или привнесения дополнительных ресурсов в новую зону.
Шаг 2. Настройте ресурную квоту системы для каждой из зон. Для этого:
2.1 Ознакомьтесь с определением: Ресурная квота системы.
2.2 Настройте ресурсную квоту в конфигурации развертывания системы (values.yaml), заполнив поле zones (см. пример).
2.3 Выполните развертывание системы с новой конфигурацией зон и убедитесь на портале разработчика, что система имеет активный статус.
Шаг 3. Включите катастрофоустойчивость на сервисе. Для этого:
3.1 Ознакомьтесь с определением: Настройки ресурсов на сервисе.
3.2 Настройте ресурсы, необходимые для сервиса, и включите катастрофоустойчивость в конфигурации развертывания сервиса (values.yaml), заполнив поле disasterRecovery (см. пример).
3.3 Выполните развертывание сервиса в новой конфигурации и убедитесь на портале разработчика, что сервис имеет активный статус.
Пулы ресурсов
Пул ресурсов (Resource Pool) - набор вычислительных ресурсов, а именно CPU, RAM, STORAGE (HDD/SSD), зарезервированных для пользовательских приложений в App.Farm. Пул ресурсов формируется администраторами платформы при онбординге системы, на основании ресурсов, которые привнесли владельцы систем. Далее приложения, разворачиваемые в App.Farm, утилизируют вычислительные ресурсы в рамках пула системы.
Для обеспечения катастрофоустойчивости платформа App.Farm работает одновременно в нескольких зонах. Список зон, в которых работает платформа представлен в разделе Доступные зоны.
Пулы ресурсов привязываются к конкретным зонам, это отражает реальные вычислительные ресурсы, физически находящиеся на серверах в той или иной зоне. При онбординге вашей системы вы должны сообщить администраторам платформы должна ли она быть катастрофоустойчивой или нет. В зависимости от этого применяются следующие стратегии привнесения ресурсов:
Некатастрофоустойчивые системы:
Обычные некатастрофоустойчивые системы разворачиваются платформой в одну умолчательную зону. При онбординге таких систем вычислительные ресурсы, привнесенные владельцем системы, включаются в ресурсный пул умолчательной зоны. Это означает, что при возникновении катастрофы и отказе этой зоны, приложения размещенные в ней будут остановлены. Платформа не сможет восстановить систему в другой зоне, потому что там будут отсутствовать вычислительные ресурсы для этой системы.
Катастрофоустойчивые системы:
Если вам необходимо катастрофоустойчивое развертывание системы, то есть одновременное размещение экземпляров приложения в нескольких зонах, то вам необходимо привнести ресурсы в каждую из зон, в которой планируется размещать сервисы системы. При онбординге таких систем вычислительные ресурсы, привнесенные владельцем системы, включаются в ресурсный пул нескольких зон. Владелец системы сам определяет какое количество ресурсов необходимо отнести в ту или иную зону.
Формированием пулов ресурсов занимаются администраторы платформы. Если вы внедряете новую систему, то для привнесения вычислительных ресурсов в App.Farm воспользуйтесь инструкциями в разделе Онбординг на App.Farm: Предоставление вычислительных ресурсов. Если ваша система уже развернута на App.Farm в одной зоне, а вы хотите сделать ее катастрофоустойчивой, то вам необходимо обратиться к администраторам платформы. Совместно с администраторами платформы необходимо либо выполнить перераспределение существующих ресурсов на несколько зон, либо привнести и включить дополнительные ресурсы в новые зоны.
Note
Подробная информация о пуле ресурсов представлена в разделе Онбординг на App.Farm: Предоставление вычислительных ресурсов.
Ресурная квота системы
Информационная система (isys, internal system) — группа приложений, объединенных общим бизнес-смыслом. В платформе App.Farm каждое прикладное приложение может существовать только в составе информационной системы, поэтому перед развертыванием приложения, необходимо создать систему. С точки зрения кластера платформы - информационная система представляет собой Kubernetes Namespace, внутри которого будет выполняться развертывание приложений этой системы. Информация о развертывании информационных систем представлена в разделе Размещение системы.
Ресурсная квота системы - в контексте платформы App.Farm количество вычислительных ресурсов зарезервированных владельцем системы для ее сервисов. Платформа App.Farm для реализации ресурсной квоты системы использует механизм Kubernetes Resource Quotas. Ресурсная квота, указанная на системе, будет резервироваться из ресурсного пула, который был сформирован при онбординге системы. В случае, если в ресурсном пуле окажется недостаточно ресурсов для обеспечения ресурсной квоты системы, то при развертывании системы возникнет соответствующая ошибка.
Ресурсная квота определяет количество вычислительных ресурсов для приложений системы в кластере платформы. В зависимости от того является ли ваша система катастрофоустойчивой или нет применяются следующие подходы по настройке ресурсной квоты:
Некатастрофоустойчивые системы:
Для обычных некатастрофоусточивых систем достаточно определить размер ресурсов и задекларировать его на системе. Платформа выполнит привязку ресурсной квоты к умолчательной зоне, а реальные вычислительные ресурсы будут утилизированы из ресурного пула умолчательной зоны. Для определения ресурсной квоты необходимо задать поля cpuLimits, cpuRequests, ramLimits, ramRequests в конфигурации развертывания системы. Пример настройки ресурсной квоты:
isys:
name: Демонстрационная система
cpuLimits: "10"
cpuRequests: "10"
ramLimits: "10Gi"
ramRequests: "10Gi"
...
Copy to clipboardErrorCopied
Катастрофоустойчивые системы:
Для катастрофоустойчивых систем вам необходимо определить ресурсную квоту для каждой из зон. Для определения ресурсных квот необходимо задать поле zones в конфигурации развертывания системы. Это поле представляет собой массив, где элемент массива - структура. В структуре необходимо задать поля: zone - идентификатор зоны и resources - количество вычислительных ресурсов для этой зоны. Формат описания ресурсов соответствует Kubernetes Compute Resource Quota. Идентификаторы зон представлены в разделе Доступные зоны. Пример настройки ресурсных квот для нескольких зон:
isys:
name: Демонстрационная система
zones: # перечень зон, для размещения сервисов системы
- zone: "rumsk1" # идентификатор зоны
resources:
limits:
cpu: 10
memory: 10Gi
requests:
cpu: 10
memory: 10Gi
- zone: "rumsk2"
resources:
limits:
cpu: 10
memory: 10Gi
requests:
cpu: 10
memory: 10Gi
...
Copy to clipboardErrorCopied
Note
Подробная спецификация конфигурации развертывания системы (values.yaml) представлена в разделе Размещение системы: Описание информационной системы.
Настройки ресурсов на сервисе
Сервис (psvc, platform service) — пользовательское приложение, выполняющее бизнес-логику. С точки зрения App.Farm сервисы могут существовать только в рамках информационных систем. Поэтому вначале создается система, объявляется ресурсная квота для сервисов системы, а затем выполняется развертывание сервисов этой системы.
Сервисы являются основными потребителями ресурсной квоты на системе, потому что утилизируют вычислительные ресурсы платформы для выполнения своих бизнес-задач. Поэтому пользователям необходимо в конфигурации развертывания сервиса определить вычислительные ресурсы, которые будет потреблять этот сервис. Указанные ресурсы будут вычтены из ресурсной квоты, которая была указана на системе. Формат описания ресурсов соответствует Kubernetes Compute Resource Quota. В случае, если в ресурсной квоте окажется недостаточно ресурсов для обеспечения ресурсной квоты системы, то при развертывании системы возникнет соответствующая ошибка.
В зависимости от того подключена катастрофоустойчивость на сервисе или нет платформа применяет следующие подходы для развертывания сервиса:
Некатастрофоустойчивые сервисы:
Платформа выполняет развертывание сервиса в умолчательной зоне, ресурсы сервиса будут утилизироваться из умолчательной ресурсной квоты системы. Пример того как декларируется ресурсы на сервисе:
psvc:
name: Пример сервиса на языке Kotlin
istioSidecarSettings:
limits:
memory: 200Mi
cpu: 200m
requests:
memory: 50Mi
cpu: 10m
...
resources:
limits:
memory: 1Gi
cpu: 1
requests:
memory: 512Mi
cpu: 100m
Copy to clipboardErrorCopied
Катастрофоустойчивые сервисы:
Платформа выполняет развертывание сервиса во всех зонах, которые указаны в списке зон конфгурации развертывания сервиса. Всем репликам сервиса, независимо от зоны, будут установлены ресурсы, указанные в поле resources. Задать различный набор ресурсов в зависимости от зоны - нельзя. Вычислительные ресурсы сервиса будут утилизироваться из ресурсной квоты системы в соответствии с зоной. Пример подключения катастрофоустойчивости и декларации ресурсов на сервисе:
psvc:
name: Пример сервиса на языке Kotlin
disasterRecovery: # указание что сервис должен быть развернут в катастрофоустойчивом режиме
zones: ["rumsk1", "rumsk2"] # перечень зон, в которых необходимо развернуть сервис
istioSidecarSettings:
limits:
memory: 200Mi
cpu: 200m
requests:
memory: 50Mi
cpu: 10m
...
resources:
limits:
memory: 1Gi
cpu: 1
requests:
memory: 512Mi
cpu: 100m
Copy to clipboardErrorCopied
Note
Подробную информацию о декларации ресурсов на сервисе вы найдете в разделе Размещение сервиса: Создание файла values.yaml для сервиса.
Предыдущая