SMB Transparent Failover в Windows Server 2012
В одном из предыдущих постов я описывал технологию SMB Multichannel, являющейся частью протокола SMB 3.0. Продолжая обсуждение возможностей SMB 3.0, сегодня сфокусируемся на SMB Transparent Failover (прозрачной отработке отказа). Суть этой технологии, как следует из названия, – обеспечить прозрачное переключение SMB-приложений на другой узел отказоустойчивого кластера (failover cluster) в случае аппаратного или программного сбоя текущего узла. Поскольку SMB 3.0 реализован в Windows Server 2012 и Windows 8, все нижесказанное относится только к этим ОС.
Использование файлового хранилища вместо блочного
Изменения в SMB и файловых службах Windows Server 2012 привели к тому, что теперь вы можете располагать в общих папках на файловом сервере (в файловых шарах) данные серверных приложений, например, базы данных SQL Server или виртуальные жесткие диски Hyper-V. Подобные серверные приложения предполагаю, что их данные хранятся на надежных высокодоступных хранилищах. Соответственно, построив отказоустойчивый файловый кластер, или иными словами, развернув на кластере, созданном с помощью службы failover clustering, роль File Server, мы получаем некий универсальный высокодоступный ресурс, который можем задействовать для различных серверных приложений, использующих файловый доступ.
Возможность использовать файловое хранилище вместо блочного дает ряд преимуществ:
- Более простое управление. Вместо создания LUN-ов и зон, необходимо управлять обычными общими папками на файловом сервере.
- Гибкость. В настройках приложений для доступа к данным указывается UNC-путь. Можно динамически перемещать приложения в рамках ЦОД без изменений в конфигурации доступа к сети и хранилищу.
- Использование существующих инвестиций в сетевую инфраструктуру. Не требуется развертывание новых сетей СХД, используются существующие конфигурации.
- Экономия. Файловый доступ позволяет применять более дешевые конфигурации, когда это оправдано с точки зрения соотношения цена/производительность. Например, с помощью технологии Storage Spaces можно построить кластерное хранилище на основе SAS-дисков.
Что дает применение SMB Transparent Failover?
На файловом кластере Windows Server 2012 можно создать общие папки с признаком непрерывной доступности (continuous availability). Замечу, по умолчанию шары на кластере создаются как раз такого типа. И при подключении именно к таким шарам и применяется SMB Transparent Failover, причем применяться технология может в двух сценариях:
- плановое переключение на другой узел кластера, например, для выполнения каких-либо работ по обслуживанию аппаратного или программного обеспечения;
- отработка незапланированного отказа в случае сбоя узла.
И в том, и в другом сценарии переключение на другой узел кластера происходит без потери приложением доступа к файлам, хранящимся в общей папке на кластере.
Более того, если в сочетании с SMB Transparent Failover использовать еще одну технологию SMB 3.0, а именно SMB Scale-Out (это возможно, но необязательно), файловый кластер будет работать в режиме active/active, и помимо отказоустойчивости обеспечит балансировку нагрузки между всеми узлами кластера.
Каковы требования для работы SMB Transparent Failover?
Для использования SMB Transparent Failover должны выполняться следующие требования:
- Отказоустойчивый файловый кластер под управлением Windows Server 2012 с минимум двумя узлами.
- Одна или несколько общих папок, созданных на кластере с признаком continuous availability.
- Клиент под управлением Windows Server 2012 или Windows 8.
Далее мы рассмотрим, как технически реализована прозрачная отработка отказа, и как эта технология настраивается.
Как работает SMB Transparent Failover?
Основная проблема в отработке отказа в файловом кластере, скажем в Windows Server 2008 R2, заключалась в том, что при переключении на другой узел приложение теряло доступ к используемым файлам и папкам. Если речь идет об открытом с кластерной шары документе или презентации, то проблема быстро решалась открытием файла заново. Но, очевидно, для серверных приложений типа SQL Server такой вариант решения проблемы едва ли приемлем. Либо приложение должно предусматривать в своем коде обработку подобных ситуаций, либо требуется вмешательство администратора для переподключения приложения. Факт же в том, что отработка отказа не оставалась для приложения незаметным.
В SMB 3.0 в реализации SMB-клиента и SMB-сервера появились новые компоненты: Witness Client, Witness Service и Resume Key Filter.
Когда SMB-клиент подключается к общей папке, он определяет, установлен ли для этой папки признак непрерывной доступности. Если да, то папка располагается на кластере и для нее можно применять прозрачную отработку отказа. SMB-клиент открывает файл от имени приложения, предоставляет уникальный ключ (resume key) и запрашивает информацию о дескрипторе файла (persistent file handle) с SMB-сервера. Используя Resume Key Filter, SMB-сервер получает и предоставляет клиенту необходимую информацию. С этого момента resume key фактически хранит информацию о состоянии файла, а операции к файлу применяются в режиме write-through, чтобы избежать влияния кэша на изменения в файле.
В случае планового и незапланированного переключения на другой узел кластера SMB-клиент предоставляет SMB-серверу нового узла свой resume key. Благодаря полученной информации, SMB-сервер через Resume Key Filter обеспечивает согласованное состояние файла на момент, предшествующий сбою. Приложение на SMB-клиенте никак не участвует в этом процессе, не получает никаких сообщений об ошибках и испытывает лишь небольшую задержку в операциях ввода-вывода. Таким образом обеспечивается прозрачность отработки отказа.
Witness-клиент и Witness-сервис помогают ускорить переключение на другой узел кластер в случае незапланированного сбоя. При первоначальном подключении к кластерному узлу Witness-клиент, запущенный на том же компьютере что и SMB-клиент, получает список узлов кластера с Witness-сервиса, запущенного на узле, к которому произошло подключение. Затем Witness-клиент выбирает другой альтернативный узел кластера и посылает запрос Witness-сервису на этом узле. Как только происходит сбой, служба failover clustering оповещает об этом Witness-сервис альтернативного узла, который, в свою очередь, передает сообщение Witness-клиенту, а тот SMB-клиенту. Сразу после получения оповещения SMB-клиент начинает переподключение к альтернативному узлу кластера. Подобный подход избавляет от необходимости дожидаться TCP-таймаута и существенно ускоряет восстановление подключений к файлам после сбоя.
Настройка SMB Transparent Failover
Прежде всего необходимо создать Failover Cluster и на каждом его узле развернуть роль File Server. На этих шагах подробно останавливаться не буду, они не претерпели каких-либо принципиальных изменений в Windows Server 2012.
Предполагая, что кластер создан, необходимо теперь уже на нем поднять роль отказоустойчивого файлового сервера. Запускаем мастер…
и выбираем соответствующую роль.
Вот отсюда начинаются изменения по сравнению с предыдущими версиями Windows Server. Как можно заметить, появилась возможность помимо, скажем так стандартного файлового сервера, развернуть Scale-Out File Server. В последнем случае мы получим упомянутый мною файловый кластер в режиме Active/Active. Более детально речь о нем пойдет в одном из будущих постов. В данном же варианте оставим опцию по умолчанию – File Server for general use.
Задаем имя точки доступа для последующего обращения к файловому серверу и указываем IP-адрес.
Выбираем диск для нашего сервера,
проверяем еще раз настройки,
и убеждаемся, что роль файлового кластера успешно создана.
Следующий шаг – создать на кластере одну или несколько общих папок с признаком continuous availability. Для этого нам нужен пункт Add File Share.
И вот в этом окне – средний пункт SMB Share – Applications.
Проверяем, что выбран нужный сервер и том,
задаем имя шары и путь к ней (локальный или сетевой),
и на очередном шаге лишний раз убеждаемся, что необходимый признак непрерывной доступности для шары установлен.
При необходимости настраиваем разрешения.
Если нас все устраивает, то смело жмем кнопку Create
С точки зрения настроек, это все. Если подключиться к созданной общей папке VMs и запустить команду:
Get-SmbOpenFile | Select *
то на узле кластера, который обрабатывает данное подключение, в качестве отклика вы увидите что-то вроде
Обратите внимание на то, что параметр ContinuouslyAvailable имеет значение True.
Для того, чтобы осуществить плановое переключение на другой узел кластера, необходимо воспользоваться следующей командой:
Move-ClusterGroup –Name ft-fs-01 –Node ws2012-srv04
где параметр Name указывает имя кластерного ресурса (то есть кластерного файлового сервера), Node – имя узла кластера, на который происходит переключение кластерного ресурса.
Каким способом лучше проверить отработку незапланированного сбоя – решать вам.
Итак, технология SMB Transparent Failover обеспечивает прозрачное для приложения переключение на другой узел отказоустойчивого кластера в случае запланированных работ или незапланированного сбоя. В сочетании с SMB Multichannel мы получаем отказоустойчивость на уровне хранилища, канала связи, сетевого адаптера. Применение SMB Scale-Out позволит балансировать нагрузку между узлами кластера и более эффективно использовать мощности серверов, входящих в кластер. Правильно комбинируя возможности SMB 3.0, можно, таким образом, достигнуть требуемого уровня надежности и производительности серверной инфраструктуры.