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


Горизонтальное масштабирование с помощью эластичных кластеров

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

База данных Azure для Эластичных кластеров PostgreSQL обеспечивает горизонтальное масштабирование путем добавления дополнительных рабочих узлов в кластер. При масштабировании эластичного кластера PostgreSQL можно обрабатывать рост, предоставляя базе данных больше ресурсов или более узлов для параллельной обработки запросов. Вы получаете все эти преимущества с минимальным временем простоя и встроенным управлением сегментами.

Методы горизонтального масштабирования

Используйте один из нескольких методов, чтобы добавить рабочие узлы в эластичном кластере, включая портал Azure, Azure CLI или автоматизацию с помощью шаблонов ARM и API в зависимости от потребностей рабочего процесса и автоматизации. В следующих разделах приведены пошаговые инструкции для портала и интерфейса командной строки, а также объясняется перебалансировка после изменения масштаба.

Использование портала Azure:

  1. Откройте ресурс: на портале Azure перейдите к базе данных Azure для PostgreSQL — эластичному кластеру гибкого сервера.

  2. Перейдите в раздел "Вычисления и хранилище": в разделе "Параметры" выберите "Вычисления и хранилище". На этой странице отображается текущая конфигурация узлов кластера.

    Снимок экрана: страница обзора эластичного кластера.

  3. Изменение количества узлов: найдите поле количества узлов. Увеличьте число до желаемого общего количества узлов (от 2 до 20 для большинства кластеров на стадии общей доступности). Например, чтобы увеличить число узлов до восьми узлов, увеличьте ползунок до 8. Azure подготавливает дополнительные рабочие узлы для достижения этого количества.

    Снимок экрана: выбор страницы вычислений и хранилища.

  4. Применить изменения: нажмите кнопку "Сохранить". Подтвердите операцию горизонтального масштабирования при появлении запроса. Azure начинает добавлять узлы в кластер. Эта операция выполняется в сети и обычно не прерывает существующие подключения или запросы. Развертывание может занять несколько минут. Вы можете отслеживать ход выполнения в уведомлениях портала. После завершения количество узлов кластера отражает новое значение.

Замечание

Необходимо в явном виде инициировать фоновый процесс ребалансировки шардов, чтобы существующие данные были перераспределены между всеми вашими узлами. Эта операция не требует простоя для операций чтения и записи.

Перебалансирование

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

При масштабировании вашего эластичного кластера перебалансировка кластера гарантирует, что существующие данные полностью распределены, а база данных использует все доступные узлы. Используйте функцию citus_rebalance_start для запуска процесса перебаланса. Эта операция равномерно распределяет существующие данные по всем узлам.

SELECT citus_rebalance_start();

Параллельное перебалансирование

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

Параметр citus.max_background_task_executors_per_node позволяет выполнять такие задачи, как перебалансирование сегментов параллельно. Вы можете увеличить значение по умолчанию (1), чтобы повысить параллелизм.

ALTER SYSTEM SET citus.max_background_task_executors_per_node = 2;
SELECT pg_reload_conf();

Кроме того, можно настроить функцию citus_rebalance_start для перебалансирования сегментов в соответствии с различными стратегиями, чтобы лучше всего соответствовать рабочей нагрузке базы данных. Теперь, когда вы добавили дополнительных исполнителей фоновых задач, вот пример перебалансирования сегментов с помощью параллельных рабочих ролей:

SELECT citus_rebalance_start(parallel_transfer_colocated_shards := true, parallel_transfer_reference_tables := true);

Соображения

Отслеживайте кластер после масштабирования: проверьте использование ЦП, использование памяти и потребление операций ввода-вывода на диаграммах мониторинга портала Azure для эластичного кластера. После операции горизонтального масштабирования убедитесь, что добавление узлов отражает улучшения метрик для пропускной способности и времени отклика в зависимости от рабочей нагрузки. При необходимости отрегулируйте дополнительно.

Масштабирование эластичного кластера влияет на затраты линейно с ресурсами. Добавление узлов умножает затраты на вычисления и хранение на количество узлов. Например, кластер с четырьмя узлами, у каждого из которых по два виртуальных ядра, стоит примерно в четыре раза дороже, чем один сервер с двумя виртуальными ядрами, так как вы запускаете четыре сервера. Всегда проверяйте влияние цен в портале. Предполагаемые затраты обновляются на портале Azure при изменении конфигурации перед сохранением, чтобы убедиться, что она соответствует бюджету.

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

Реплики чтения. Если кластер настроен на использование реплик чтения, при добавлении узлов в кластер необходимо следовать определенному порядку операций. Сначала добавьте количество узлов в основной кластер и сохраните изменения. После успешного завершения внесите соответствующее изменение в среду реплики чтения и сохраните изменения. Новые узлы в основном кластере не могут быть доступны для операций кластера, пока не будут обновлены и синхронизированы среды первичной и реплики чтения.

Замечание

Возможность удаления узлов из эластичного кластера (масштабирования) пока недоступна.

Используя описанные выше методы масштабирования, эластичные кластеры Базы данных Azure для PostgreSQL обеспечивают гибкость, чтобы начать работу с небольшими и легко увеличивать базу данных по мере увеличения спроса. Вы получаете простоту одной конечной точки с помощью распределенной инфраструктуры Postgres. Продолжайте отслеживать документацию Azure для последних обновлений функций эластичных кластеров и рекомендаций по масштабированию.