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

9.1. Расширение кластера

Масштабирование и отказоустойчивость Apache Ozone: Расширение кластера

Apache Ozone разработан для масштабирования в горизонтальном направлении, что позволяет добавлять новые узлы для увеличения ёмкости хранилища и производительности. По мере роста объёмов данных и нагрузки на кластер, можно добавлять дополнительные DataNodes, а также масштабировать Ozone Manager (OM) и Storage Container Manager (SCM) для обеспечения отказоустойчивости и равномерного распределения нагрузки.

1. Добавление новых DataNodes

DataNodes отвечают за физическое хранение данных в кластере, и их добавление увеличивает ёмкость хранилища и общую производительность. После добавления новых DataNodes Ozone автоматически распределяет новые контейнеры на дополнительные узлы, а существующие данные можно перераспределить с помощью балансировки.

Шаги по добавлению нового DataNode

  1. Установите Apache Ozone на новом узле: Установите Ozone и настройте файл конфигурации ozone-site.xml для подключения к существующему кластеру.

  2. Настройте параметры DataNode: Проверьте и настройте основные параметры для DataNode, такие как ozone.scm.names (указывающий адрес SCM) и ozone.om.address (адрес OM), чтобы узел мог связаться с управляющими компонентами.

    <property>
    <name>ozone.scm.names</name>
    <value>scm1.example.com</value>
    </property>
    <property>
    <name>ozone.om.address</name>
    <value>om1.example.com</value>
    </property>
  3. Запустите DataNode: Используйте следующую команду для запуска DataNode на новом узле:

    bin/ozone datanode --daemon start
  4. Проверьте, что новый узел добавлен в кластер: Выполните команду на SCM для получения списка всех активных узлов DataNode, включая недавно добавленный:

    bin/ozone admin datanode list

После добавления DataNode может потребоваться выполнить балансировку контейнеров, чтобы перераспределить данные между узлами.

Балансировка данных

Запустите балансировку контейнеров, чтобы распределить данные между новыми и существующими узлами:

bin/ozone admin datanode rebalance

2. Масштабирование Ozone Manager (OM)

Ozone Manager управляет метаданными и обработкой операций с томами, бакетами и ключами. В случае крупных кластеров рекомендуется настроить OM в режиме высокой доступности (HA), чтобы распределить нагрузку и обеспечить отказоустойчивость.

Настройка OM в режиме высокой доступности

  1. Создайте несколько экземпляров OM: Запустите несколько экземпляров OM на разных узлах для создания кластера OM.

  2. Настройте Raft-кластер для OM: Включите поддержку Raft-протокола для синхронизации данных между экземплярами OM. В конфигурации ozone-site.xml укажите все узлы OM:

    <property>
    <name>ozone.om.nodes</name>
    <value>om1,om2,om3</value>
    </property>

    <property>
    <name>ozone.om.address.om1</name>
    <value>om1.example.com:9878</value>
    </property>
    <property>
    <name>ozone.om.address.om2</name>
    <value>om2.example.com:9878</value>
    </property>
    <property>
    <name>ozone.om.address.om3</name>
    <value>om3.example.com:9878</value>
    </property>
  3. Запустите каждый экземпляр OM: Запустите каждый экземпляр OM на указанных узлах с помощью команды:

    bin/ozone om --daemon start
  4. Проверьте синхронизацию: В кластере OM один узел работает как лидер, а остальные — как фолловеры. Все изменения в метаданных записываются на лидере и передаются фолловерам через Raft.


3. Масштабирование Storage Container Manager (SCM)

Storage Container Manager (SCM) управляет контейнерами и репликацией данных. Для крупных кластеров рекомендуется настроить SCM в режиме высокой доступности с несколькими экземплярами SCM.

Настройка SCM в режиме высокой доступности

  1. Создайте несколько экземпляров SCM: Запустите несколько экземпляров SCM на разных узлах, чтобы обеспечить отказоустойчивость.

  2. Настройте Raft-кластер для SCM: Укажите все узлы SCM в конфигурации ozone-site.xml:

    <property>
    <name>ozone.scm.nodes</name>
    <value>scm1,scm2,scm3</value>
    </property>

    <property>
    <name>ozone.scm.address.scm1</name>
    <value>scm1.example.com:9861</value>
    </property>
    <property>
    <name>ozone.scm.address.scm2</name>
    <value>scm2.example.com:9861</value>
    </property>
    <property>
    <name>ozone.scm.address.scm3</name>
    <value>scm3.example.com:9861</value>
    </property>
  3. Запустите каждый экземпляр SCM: Запустите каждый экземпляр SCM на указанных узлах с помощью команды:

    bin/ozone scm --daemon start
  4. Проверьте состояние SCM-кластера: Как и в случае с OM, один из экземпляров SCM будет лидером, а остальные фолловерами, синхронизирующими данные через Raft.


4. Мониторинг и управление кластером после расширения

После добавления новых узлов в кластер Ozone важно отслеживать состояние кластера и контролировать балансировку нагрузки.

Проверка состояния кластера

  1. Мониторинг узлов DataNode: Используйте команду для просмотра всех активных узлов DataNode:

    bin/ozone admin datanode list
  2. Проверка состояния OM и SCM: Используйте команду для получения списка активных служб:

    bin/ozone admin service list
  3. Использование Recon для мониторинга: Recon предоставляет удобный интерфейс для отслеживания состояния кластера, распределения контейнеров и репликации данных. Recon позволяет получить полную картину состояния кластера, включая состояние узлов, репликацию и загрузку.

Балансировка нагрузки

Если после расширения кластера данные распределены неравномерно, запустите балансировку контейнеров:

bin/ozone admin datanode rebalance

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


5. Рекомендации по расширению кластера

  1. Планирование ресурсов: При увеличении объёмов данных и нагрузки добавляйте узлы DataNode, чтобы обеспечить достаточную ёмкость хранилища и производительность.

  2. Настройка высокой доступности: Для крупных кластеров и критически важных данных настройте OM и SCM в режиме высокой доступности, чтобы минимизировать риски отказов.

  3. Балансировка данных: После добавления новых узлов всегда запускайте балансировку контейнеров, чтобы распределить данные равномерно и избежать перегрузки отдельных узлов.

  4. Мониторинг после расширения: Используйте Recon и системы мониторинга для контроля за состоянием узлов и обнаружения потенциальных проблем, связанных с нагрузкой.

  5. Обновление конфигурации: Если узлы кластера распределены по нескольким регионам, настройте параметры сети (например, интервалы heartbeat и восстановления реплик) для повышения эффективности распределённого кластера.


Итог

Расширение кластера Apache Ozone позволяет увеличить ёмкость и производительность, а также повысить отказоустойчивость системы. Добавление новых узлов DataNode, настройка высокой доступности для OM и SCM, а также регулярная балансировка данных помогают поддерживать эффективную работу кластера и обеспечить надёжное хранение данных.