Перейти к содержимому
Последнее обновление

Управление жизненным циклом Doris Operator

Doris Operator управляет кластерами Doris через цикл Reconcile. При изменении пользовательского ресурса Doris Operator обновляет соответствующие ресурсы Kubernetes в соответствии с новым желаемым состоянием и при необходимости выполняет операции с метаданными на уровне Doris.

В этом документе описано, как эти изменения выполняются на практике.

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

При создании DorisCluster или DorisDisaggregatedCluster Operator создаёт соответствующие ресурсы Kubernetes согласно конфигурации компонентов, заданной в ресурсе.

В кластерах с совмещёнными вычислениями и хранением обычно сначала создаётся FE:

Процесс создания кластера DorisCluster

В кластерах с разделением вычислений и хранения сначала создаётся MetaService:

Процесс создания кластера DorisDisaggregatedCluster

Если зависимости ещё не готовы, Operator продолжает ожидание и повторяет попытки в последующих циклах Reconcile.

Увеличение числа узлов​

Для увеличения числа узлов обычно повышают значение поля replicas компонента. Например:

spec:
beSpec:
replicas: 5

Обнаружив изменение, Operator обновляет соответствующий StatefulSet. Kubernetes создаёт новые объекты Pod, а Operator продолжает проверять готовность и обновлять поле status ресурса CR.

В кластерах с разделением вычислений и хранения число узлов ComputeGroup увеличивается аналогичным образом:

spec:
computeGroups:
- uniqueId: adhoc-query
replicas: 5

Обратите внимание на следующее:

  • Достаточно ли кластеру ресурсов CPU, памяти и хранилища.
  • Можно ли разместить новые объекты Pod на узлах.
  • Могут ли PVC быть привязаны к томам.
  • Могут ли новые узлы зарегистрироваться в кластере Doris.

Уменьшение числа узлов​

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

Внимание

Перед уменьшением числа узлов в производственном кластере проверьте состояние реплик Doris, прикладную нагрузку и возможности отката.

Кластеры с совмещёнными вычислениями и хранением​

Риски при уменьшении числа узлов зависят от компонента:

КомпонентОсновной риск
FEРоли Follower и Observer могут влиять на кворум метаданных
BEНеобходимо учитывать перенос реплик и доступность данных
CNРеплик данных нет, но уменьшение числа узлов влияет на вычислительные ресурсы и кэш
BrokerПроверьте, зависят ли от него ещё задачи доступа к внешним ресурсам

Для FE число реплик не может быть меньше числа узлов, участвующих в выборах. При уменьшении числа узлов в этом режиме отдельно оцените топологию кластера и риски на уровне Doris.

Кластеры с разделением вычислений и хранения​

При уменьшении числа узлов ComputeGroup могут потребоваться операции с метаданными на уровне Doris. Поведение зависит от enableDecommission:

КонфигурацияПоведение
enableDecommission: trueВыполнить decommission перед уменьшением числа узлов и дождаться возможности безопасного удаления
enableDecommission: falseСразу удалить соответствующий узел

Процесс уменьшения числа узлов ComputeGroup

Перед уменьшением числа узлов проверьте текущее распределение данных и прикладную нагрузку.

Изменение конфигурации​

Конфигурация запуска Doris обычно монтируется с помощью ConfigMap. Необходимость перезапуска после изменения зависит от типа конфигурации и настроек Operator.

Для кластеров с совмещёнными вычислениями и хранением:

spec:
enableRestartWhenConfigChange: true

Если этот параметр включён, изменения основных ConfigMap могут вызывать поэтапный перезапуск.

При изменении конфигурации проверьте следующее:

  • Соответствуют ли ключи ConfigMap требованиям компонентов, например fe.conf.
  • Совпадают ли заданные каталоги с путями монтирования PVC.
  • Соответствуют ли порты, FQDN и настройки аутентификации сетевой модели Kubernetes.
  • Вступает ли изменение в силу только после перезапуска компонента.

Поэтапное обновление​

Изменение образов компонентов, некоторых полей шаблона Pod или хешей конфигурации может вызвать поэтапное обновление StatefulSet.

Рекомендуемые действия:

  • Выполняйте обновление в часы низкой нагрузки.
  • Сначала убедитесь, что в кластере нет неустранённых сбоев.
  • Проверьте, как клиенты выполняют повторные попытки.
  • Соблюдайте порядок обновления, указанный в документации по обновлению версий Doris.

Удаление кластера​

После удаления пользовательского ресурса Doris Operator запускает процедуру очистки и удаляет ресурсы Kubernetes, которыми управляет.

Перед удалением проверьте:

  • Нужно ли сохранять PVC.
  • Являются ли объектное хранилище, FoundationDB или другие внешние зависимости общими ресурсами.
  • Нужны ли резервные копии данных и метаданных.
  • Есть ли ещё подключённые клиенты.
Внимание

Удаление CR может привести к удалению соответствующих ресурсов Kubernetes. Перед продолжением уточните, какие ресурсы будут удалены, и определите стратегию резервного копирования.

Наблюдение за операциями жизненного цикла​

О завершении операции жизненного цикла следует судить по совокупности данных: полю status ресурса CR, состоянию ресурсов Kubernetes и состоянию компонентов Doris.

kubectl get dcr -n ${namespace}
kubectl describe dcr ${cluster_name} -n ${namespace}
kubectl get ddc -n ${namespace}
kubectl describe ddc ${cluster_name} -n ${namespace}
kubectl get pod,sts,svc,pvc -n ${namespace}

Если желаемое состояние долго не достигается, изучите логи Operator и Kubernetes Events, чтобы определить, связана ли проблема с размещением на узлах, привязкой хранилища, монтированием конфигурации, регистрацией узлов или операциями с метаданными Doris.