Рейтинг:1

Нужен простой файловый ресурс с высокой доступностью

флаг nc

Я ищу самый простой способ поделиться одним файлом с высокой доступностью между парой серверов Linux. (Версия и дистрибутив не важны, я ищу универсальное решение.)

У меня есть два сервера, каждый со своими локальными дисками и общими ресурсами NFS и другими службами между ними. У меня есть файл, доступ к которому нужен обоим серверам, но доступ к нему нужен только этим серверам.

Если какой-либо сервер выйдет из строя, я хочу, чтобы самое последнее возможное содержимое этого файла было доступно для оставшегося сервера. (Очевидно, что другой сервер должен принять изменения при восстановлении.)

Файл является файлом состояния, и, вероятно, только один сервер одновременно будет писать в него. Размер файла состояния неизвестен, но он небольшой. Вероятно, между 1 блоком и 2М. Возможно, размер файла состояния будет увеличиваться в зависимости от продолжительности простоя.

Без добавления внешнего оборудования, какие есть варианты для такой файловой папки с высокой доступностью?

djdomi avatar
флаг za
есть ли ограничение, какой протокол следует использовать?
user10489 avatar
флаг nc
Ограничение состоит в том, что я не хочу добавлять оборудование (например, iSCSI NAS) и что существующие службы не могут быть нарушены. Например, он может использовать NFS, но я не хочу искажать NFS до такой степени, что у других клиентов в кластере возникнут проблемы с использованием NFS. Я надеюсь получить ряд вариантов, которые я могу выбрать, поскольку я знаю, что есть файловые системы HA, но большинство из тех, которые я рассмотрел, имеют довольно сложную настройку, которая является полным излишеством для этого приложения.
djdomi avatar
флаг za
не могли бы вы добавить размер файла, если это единственное, что нужно синхронизировать?
djdomi avatar
флаг za
Меня также интересовал этот вопрос, есть ли у меня аналогичная задача в будущем, я нашел интересную статью на [StackExchange] (https://unix.stackexchange.com/questions/307046/real-time-file-synchronization)
user10489 avatar
флаг nc
@djdomi: это интересно. Это может сработать, но приложение достаточно расплывчато в отношении того, как оно использует файл состояния, поэтому я не знаю, сработает ли это. Если он выполняет блокировку или другой IPC в файле состояния, это может сломаться. Если не появится лучшего решения, мне придется поэкспериментировать с этим.
djdomi avatar
флаг za
обычно в Linux ни один файл не будет заблокирован, в отличие от окон, на мой взгляд, - что это за файл?
user10489 avatar
флаг nc
Linux полностью поддерживает рекомендательную блокировку файлов, как и Windows. Просто меньше приложений используют его.
djdomi avatar
флаг za
я не сказал, что он его не поддерживает, маловероятно, что он это делает;) однако нашел второй инструмент, например [bsync] (https://github.com/dooblem/bsync)
user10489 avatar
флаг nc
bsync выглядит грубым и излишним. И я согласен, что вряд ли будет использоваться блокировка файлов, но мне придется изучить это (или поэкспериментировать), чтобы выяснить это.
djdomi avatar
флаг za
пока вы не расскажете правду о своем файле, я могу только давать советы и пытаться найти что-то в моем стеклянном шаре ;)
user10489 avatar
флаг nc
Взглянув еще раз, lsyncd и bsync очень похожи, я пока не могу исключать их.
user10489 avatar
флаг nc
@djdomi: я просмотрел несколько решений на основе rsync, и они на самом деле решают аналогичную проблему, которая у меня есть, но не эту. Если вы вставите это как ответ со ссылками на различные варианты rsync, я бы, по крайней мере, проголосовал за него, но я думаю, что мне действительно нужна файловая система под этим, а не служба синхронизации файлов.
Рейтинг:1
флаг cn

Если пара серверов работает в режиме «горячий-холодный» (т. е. только один из них одновременно обращается к файлу), ДРБД это быстрый и стабильный способ достичь своей цели. DRBD разработан с защитой от разделения мозга, поэтому он должен быть «достаточно хорошим».

Краткая заметка с сайта DRBD:

Распределенное реплицированное блочное устройство (DRBD) — это реплицированное хранилище без общего доступа, отражающее содержимое блокировать устройства (жесткие диски, разделы, логические тома и т. д.) между хосты.

DRBD зеркалирует данные

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

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

Весь процесс хорошо задокументированы и есть также несколько простых руководств имеется в наличии.

Если вы больше любите автоматизацию, Кардиостимулятор + DRBD это очень распространенная комбинация, она даже задокументирована в Направляющие кардиостимулятора что также является хорошим введением в сам DRBD.

P.S. Забавно, как руководство по кардиостимулятору для DRBD Я связал выше почти идеально описывает ваш вопрос.

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

Введите DRBD, который можно рассматривать как сетевой RAID-1.

user10489 avatar
флаг nc
На самом деле DRDB был первым решением, которое я рассмотрел и отверг несколько месяцев назад. На первый взгляд, это выглядит очень хорошо, но когда я начал разбираться со сложностями его фактической настройки, с горячим аварийным переключением, заменяющим экспорт NFS, и грубым искажением NFS для поддержки горячего аварийного переключения, я обнаружил, что это слишком разрушительно для других NFS. клиенты, которых не заботил статус горячей отработки отказа, а также другие чрезмерные сложности.
user10489 avatar
флаг nc
PS: В любом случае, голосование за это выглядит хорошим решением.
флаг cn
Я согласен с тем, что использование NFS поверх DRBD может быть утомительным (трудно остановить доступ к точке монтирования, чтобы иметь возможность отключить устройство DRBD). Но для вашего варианта использования вы можете использовать локальные монтирования без NFS. Файловая система поверх DRBD, которую вы монтируете при необходимости.
user10489 avatar
флаг nc
Файловая система нужна всегда, потому что приложение всегда будет иметь открытый файл, даже если он не является первичным и не записывает.
флаг cn
Согласовано. DRBD подходит только для установки «горячий-холодный», где «холодный» подразумевает, что приложение не запущено. Pacemaker помогает автоматизировать некоторые из них (например, монтировать файловую систему перед запуском приложения). Кажется, это не решение для вашего варианта использования.
Рейтинг:1
флаг cn

Решений много - для одного файла я бы, наверное, использовал GlusterFS - но я думаю, что у вас должно быть 3 сервера для кворума или вам придется решать сплит-мозги при восстановлении. Вы сможете легко установить его на любой популярный дистрибутив и настроить не более часа.

user10489 avatar
флаг nc
Я собираюсь дать бонус к этому, не принимая его на данный момент. Я просмотрел два других предложенных решения и нашел их недостаточными, но я не могу принять это, пока не попробую. Если я попробую и найду, что его легко настроить и он работает, я соглашусь.
Kszysiu avatar
флаг cn
Если вы выберете решение drbd, вам потребуется настроить двойную первичную конфигурацию (третий узел, на мой взгляд, по-прежнему необходим, иначе у вас может быть разделенный мозг, если возникнут проблемы с сетью), а затем какую-то кластерную файловую систему (если вы хотите смонтировать в 2-х местах одновременно) - вы не можете использовать классическую ext/xfs или любую другую файловую систему. Если вы хотите использовать классическую файловую систему, вам нужно монтировать ее только в одном месте и использовать nfs или что-то еще для монтирования на втором сервере. Вам нужно свободное блочное устройство (или lvm), чтобы использовать drbd. Есть много слоев, где что-то может выйти из строя.
user10489 avatar
флаг nc
При тестировании выяснилось, что моему приложению вообще не нужна NFS по соображениям производительности (слишком большая задержка). GlusterFS обеспечивает хороший баланс между локальной производительностью и удаленной синхронизацией без каких-либо проблем с задержкой синхронизации, которые возникают при использовании решения типа rsync.

Ответить или комментировать

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