Привет, Хабр!
Когда речь заходит об отказоустойчивости между ЦОДами, метрокластер — почти всегда первое, что приходит в голову. Раньше это был стандарт: один ЦОД падает — второй подхватывает. Все работает, данные не теряются. Вместе с уходом западных вендоров их решения ушли вместе с ними либо появились огромные трудности с их конфигурированием и поддержкой.
С 2024 года у нас на тестовом стенде стоят системы хранения AQ440 от «Аэродиск». Мы их активно «мучаем»: имитируем отказы, нагружаем, меряем задержки, устраиваем испытания на выживание. Наш выбор связан с тем, что это единственное решение (на данный момент), у которого есть поддержка метрокластера. И основной фокус сегодняшнего рассказа — описать сценарии работы этой технологии. Не имитацию, не полумеру, а рабочую схему с реальным переключением между площадками, отказами и всем, что из этого следует.

Недавно мы провели митап, на котором показали, как это все работает вживую. А до этого уже делились тестами — в статьях и докладах. Но в этот раз решили сделать все наглядно, в формате прямой трансляции с нашего тестового стенда. Если не смотрели — записи доступны на VK video и Rutube. Вопросы оставляйте в комментариях — читаем, отвечаем.
Если решите все же не смотреть митап (ну а вдруг), вот краткий пересказ и разбор ключевых моментов — собрали все важное в этой статье.
К тестированию мы подошли с полной ответственностью. Построили рабочий контур практически полностью на отечественном железе и софте, чтобы все было максимально приближено к реальным условиям (подробности ниже). А чтобы не было совсем «просто», мы решили добавить расстояние между дата-центрами — через эмулятор сетевой задержки. В роли «замедлителя» выступает устройство от IBM. Он создает задержку, имитируя, что между ЦОДами имеется путь в 60 км.
Все этапы проверяла и настраивала наша команда экспертов из «Инфосистемы Джет» — люди, которые знают толк в инфраструктуре.
Мы не просто так акцентируем внимание на развитии метрокластера на отечественном оборудовании. Сама технология — это фундамент отказоустойчивости на уровне целого массива в критически важной инфраструктуре. По факту на уровне LUN’ов. И теперь у нас есть возможность реализовать это на отечественном оборудовании. Работает? Да. Есть нюансы? Конечно. Мы все их разберем дальше.
Зачем это нужно? Давайте коротко
-
Самое частое применение — организация отказоустойчивого контура (ЗО) КИИ на отечественном оборудовании. Отказоустойчивость — гарантия для ИТ и бизнеса, которая убережет их данные и нервы.
-
Это доступность данных и сервисов на случай аварии в ЦОДе и переключения информационных систем в рЦОД.
-
Это возможность беспрерывного обслуживания и модернизаций систем. При регламентированных работах — это возможность переключить доступ до данных на другую систему в режиме non-stop.
Как мы построили тестовый стенд
Подход к реализации испытуемого стенда метрокластера строится на мировых практиках — две одинаковые СХД на разных площадках и узел-свидетель, расположенный на третьей площадке, который имеет связность до всех СХД. В настоящее время в России нет решений в области коммутаторов FC, поэтому основной протокол передачи данных — это iSCSI. Конечно, могут появиться сложности в организации сетевой L2 или в крупных масштабах L3-архитектур. Поэтому тут необходима помощь квалифицированных сетевых инженеров.
Со своей стороны, мы задумались, что делать кластер на расстоянии соседних стоек просто не интересно. Поэтому с помощью эмулятора задержки, реализованного на отдельном физическом сервере IBM «между ЦОДами» с ОС Linux и команды tc, мы выставили задержку в миллисекундах, эквивалентную расстоянию 60 км (порядка 2 миллисекунд).
Общая схема стенда представлена на рисунке 1. Эта архитектура принимается за «исходное состояние» в сценариях отказа.
Из чего состоит наш метрокластер
-
Две СХД «Аэродиск» AQ440 (Аэродиск 1 и Аэродиск 2)
-
Два сервера Aquarius T50 (node01 и node02)
-
Программное обеспечение (ПО) виртуализации — zVirt 4.2U3
-
База данных (БД) PostgreSQL на 25 млрд. строк (PgDB)
-
«Эмулятор» (сервер) сетевой задержки IBM
-
Узел-свидетель (арбитр), расположенный на сервере сетевой задержки
-
Коммутаторы iSCSI Qtech 10GE (rulab-qt-sw1, rulab-qt-sw2)
-
Коммутатор IPMI 1GE (rulab-qt-sw3)
-
Система мониторинга «Пульт» 2.0
-
Платформа анализа данных с рабочим местом администратора и руководителя ИТ-инфраструктуры и панелью по анализу данных (Visiology)
На массивах расположены три пары МетроЛунов
-
DDP_Metro/HE — Hosted Engine платформы виртуализации zVirtа
-
DDP_Metro/Visiology — ЛУНы для хранения данных виртуальной машины с платформой Visiology
-
DDP_Metro/PosgreSQL — ЛУНы для хранения данных виртуальной машины с PosgreSQL
Сценарии отказов. Что мы тестировали
-
Отказ продуктивного кластера виртуализации
-
Отказ продуктивной СХД
-
Отказ продуктивной площадки целиком
-
Отказ сети передачи данных продуктивной площадки
Представленные схемы демонстрируют наиболее распространенные случаи выхода из строя оборудования.
Сценарий №1: Уронили хост виртуализации
Схема теста представлена на рисунке 2.
Сценарий максимально прост: обрубаем один из серверов виртуализации. Мы смотрим на реакцию массивов, не будет ли там каких-то нештатных переключений и (или) блокировок записи на одном из них. На защиту приложений упавшего сервера встают инструменты виртуализации, а именно высокая доступность или HA (High Availability), благодаря чему не происходит отказа сервисов. По сценарию обработка нештатной ситуации выполняется исключительно на прикладном уровне. Системы хранения продолжают работать штатно, а между площадками никаких переключений не происходит.
Путь к «непадению» пролегает через автоматическое переключение сервисов (виртуальных машин) с узла 2 на узел 1, как показано на рисунке 3.
На мониторинге, как со стороны zVirt, так и внешней системы «Пульт», мы получаем информацию о недоступности одного сервера.
Но что же происходит у нас с прикладом? Побежали его проверять — запустился процесс синхронизации данных. Нагрузка на БД генерируется PGbench с помощью случайных операций Input/Output для каждой транзакции. Ошибки в записи отсутствуют. Платформа Visiology подвисла и не получает актуальных данных.
Время ожидания переключения сервисов составило две минуты. На мониторинге, по уже известному сценарию с двух сторон, подтверждается завершение переключения сервисов при выключенном узле 2. После этого мы решаем, что хватит мучать наш стенд, и включаем упавший узел. На этот раз необходимо «ручками» смигрировать из консоли управления zVirt ранее переместившиеся виртуальные хосты с PostgreSQL и Visiology обратно на узел 2. Через несколько минут данные доступны в исходном состоянии для чтения и записи.
Сценарий №2: Отключили СХД
Схема теста представлена на рисунке 4.
Данный сценарий чуть сложнее — одновременно обрубаем все питание массива 2. Отыгрывая свою роль, узел-свидетель оповестил, что один из массивов недоступен после нескольких секунд работы.
В этом сценарии вводим термин «(VIP) метрокластера». Это плавающий IP-адрес, привязанный к адресам контроллеров СХД и являющийся основным интерфейсом «доступа к блочным данным» Для виртуальных машин узла 2 происходит автоматическое переключение путей доступа до данных с массива 2 на массив 1, в соответствии с рисунком 5.
По логике массивов происходит автоматическая смена ролей Primary-Secondary в парах репликации и (VIP) на массиве 1. После переключения все операции выполняются в штатном режиме. Время транзакций в PostgreSQL по нашему стенду чуть увеличено, благодаря работе эмулятора сетевой задержки.
Немного отвлечемся и ответим на один из частых вопросов: Что происходит с данными, если внезапно отключить питание у СХД и нет ни метрокластера, ни второго массива? Потеряются ли последние изменения, если они были еще в кеше?
Ответ: Не потеряются. В сценариях без метрокластера (т.е. без дублирующего массива), при внезапном выключении питания запись всегда идет напрямую на энергонезависимое хранилище (SSD RW-кэш в RDG или на SSD в группе DDP). Это позволяет избежать потери последних данных.
Убедившись в доступности данных, включаем обратно массив 2. Статус ресинхронизации МетроЛунов отображается в массивах в процентном соотношении. С учетом того, что нагрузка на базу данных PostgreSQL продолжает поступать под PGbench, время синхронизации происходит дольше за счет поступления новых данных. Для ускорения процесса мы временно отключаем нагрузку PGbench и ждем завершения синхронизации, которое уже происходит в разы быстрее, и возвращаем стенд в исходное состояние.
Сценарий №3: Обрубили площадку целиком
Схема для наглядности представлена на рисунке 6.
Данный сценарий еще веселее)))
Внезапно выключается питание и у узла 2, и у массива 2. Арбитр штатно уведомляет о недоступности массива, а компонент мониторинга zVirt оповещает о недоступности сервера. И тут начинается магия — происходит перезапуск виртуальных машин с узла 2 на узел 1 и переезд (VIP) метрокластера на массив 1. База данных PosgtreSQL недоступна, Visiology также недоступна. По сути, такой сценарий отказа является совмещенным вариантом сценариев №1 и №2, поэтому происходит аналогичное развитие событий, как на рисунке 7.
Сервис перезапускается аналогично по времени с первым сценарием отказа. Поскольку сейчас остается один массив, то количество транзакций в секунду PostgreSQL увеличивается в результате локализации трафика данных и отсутствия необходимости подтверждения записи от другого массива на расстоянии 60 км. После демонстрации доступности данных и работоспособности сервисов возвращаем стенд в исходное состояние.
Сценарий №4: Сломали сеть между площадками
Схема отказа представлена на рисунке 8.
Данный сценарий — один из самых неприятных, здесь происходит эмуляция приезда экскаватора, который неожиданно (!) во время проведения землеройных работ обрывает сеть между площадками. При этом все устройства остаются включенными и сохраняют возможность управления через порты BMC.
Сеть — это «самое-самое» место, если вы понимаете, о чем это мы. А если без шуток, то это один из самых сложных и трудноконфигурируемых элементов в любой отказоустойчивой архитектуре. Поэтому, несмотря на трудности, мы были обязаны провести этот сценарий. Итак, обрываем сеть между ЦОДами.
Узел-свидетель просигналил о недоступности сети между массивом 1 и массивом 2.
И снова фокус-покус по сценарию 2: (VIP) метрокластера переезжает на массив 1 в течение шести секунд (подтверждается логами), а виртуализация автоматически начала переключение виртуальных машин на узел 1. Перезапуск виртуальных машин и полное переключение на резервные системы происходит в течение пяти минут. За это время мы внимательно осматриваем стенд на соответствие заявленному ожиданию о доступности данных и отсутствии логических ошибок приклада. По завершении испытания происходит восстановление стенда до исходного состояния.
Что в итоге?
Если коротко — мы еще раз показали, что метрокластер на отечественном оборудовании — это вполне рабочая практика. Вот ключевые моменты, которые удалось подтвердить в ходе демонстрации:
-
Мы еще раз показали, что метрокластер на отечественном оборудовании — это вполне рабочая практика. Вот ключевые моменты, которые удалось подтвердить в ходе демонстрации:
-
Четыре наиболее частых сценария отказа контуров данных на двух площадках были смоделированы и успешно отработаны на стенде. Все полностью на российском оборудовании и софте.
-
За контролем доступности стендового оборудования следила система мониторинга «Пульт». Дополнительная контрпроверка проводилась с помощью платформы управления zVirt и узла-свидетеля от «Аэродиска».
-
Системы «Аэродиск» совместимы с механизмом высокой доступности — HA (high availability) zVirt. В случае падения одного из хостов виртуализации — на втором сервере происходит автоматический перезапуск сервисов. Ручное вмешательство требуется только при возврате виртуальных машин на исходный узел. Переключение путей до массивов на этом этапе не требуется в теории и не происходит на практике. Массивы стабильно продолжают работать без всяких изменений.
-
При отказе одного из массивов арбитр определяет его недоступность, что занимает не более шести секунд после отказа. После этого он автоматически переводит пути до данных на доступное хранилище.
-
Сценарий с отказом второй площадки тоже отработан по всем стандартам мировых практик. Виртуальные машины автоматически поднимаются на доступном сервере. Организация доступа данных на рабочий массив происходит также без ручного вмешательства.
-
Сценарий с обрывом связи между площадками показал ожидаемый результат. Сервисы автоматически поднимаются на узле 1. Пути до данных сервисов переключились на массив 1.
-
Были замечены небольшие задержки при переключении сервисов с узла 2 на узел 1. Критичных последствий не возникло.
-
В ходе проверок сценариев отказа данные не потерялись.
-
Восстановление связности между массивами происходит в процессе ресинхронизации, данные актуализируются на недоступном массиве. При этом актуальные данные также поступают. Время зависит от объема поступающих изменений.
-
И наконец. Мы успешно отработали iSCSI метрокластера между двумя площадками с эмулированным расстоянием в 60 км.
Авторы:
Тигран Казарян, руководитель направления СХД в «Инфосистемы Джет»
Алексей Быков, ведущий инженер-проектировщик систем хранения данных в «Инфосистемы Джет»
Евгений Бергинов, системный архитектор в «Инфосистемы Джет»
ссылка на оригинал статьи https://habr.com/ru/articles/933768/
Добавить комментарий