Как избежать SPOFS с помощью GlusterFS и Windows

10

У нас есть кластер GlusterFS, который мы используем для нашей функции обработки. Мы хотим интегрировать в него Windows, но у нас возникли проблемы с поиском способов избежать единой точки отказа - сервера Samba, обслуживающего том GlusterFS.

Наш файловый поток работает так:

GlusterFS Document Flow

  1. Файлы читаются узлом обработки Linux.
  2. Файлы обрабатываются.
  3. Результаты (могут быть небольшими, могут быть довольно большими) записываются обратно в том GlusterFS по мере их выполнения.
    • Вместо этого результаты могут быть записаны в базу данных или могут содержать несколько файлов различных размеров.
  4. Узел обработки забирает другое задание из очереди и GOTO 1.

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

Однако, поскольку Windows не имеет собственного клиента GlusterFS, нам нужно, чтобы наши узлы обработки на базе Windows взаимодействовали с хранилищем файлов таким же устойчивым образом. В документации GlusterFS говорится, что способ обеспечить доступ к Windows - это настроить сервер Samba поверх подключенного тома GlusterFS. Это привело бы к потоку файлов, как это:

GlusterFS док-поток через Winders

Это похоже на единственную точку отказа для меня.

Одним из вариантов является кластеризация Samba , но, похоже, она основана на нестабильном коде прямо сейчас и, следовательно, не работает.

Поэтому я ищу другой метод.

Некоторые ключевые детали о видах данных, которые мы подбрасываем:

  • Исходные размеры файлов могут быть от нескольких КБ до десятков ГБ.
  • Размеры обрабатываемых файлов могут быть от нескольких КБ до ГБ или двух.
  • Определенные процессы, такие как копание в архивном файле, таком как .zip или .tar, могут вызвать МНОГО дальнейших записей, поскольку содержащиеся файлы импортируются в хранилище файлов.
  • Количество файлов может достигать десятков миллионов.

Эта рабочая нагрузка не работает с настройкой Hadoop "размер статического рабочего места". Точно так же мы оценили хранилища объектов в стиле S3, но обнаружили, что их не хватает.

Наше приложение специально написано на Ruby, и у нас есть среда Cygwin на узлах Windows. Это может помочь нам.

Один из вариантов, который я рассматриваю, - это простая служба HTTP на кластере серверов, на которых смонтирован том GlusterFS. Поскольку все, что мы делаем с Gluster, это, в сущности, операции GET / PUT, которые легко переносятся на HTTP-метод передачи файлов. Поместите их позади пары балансировщика нагрузки, и узлы Windows могут HTTP PUT к содержимому их маленького синего сердца.

Чего я не знаю, так это как поддерживать согласованность GlusterFS . Уровень HTTP-прокси обеспечивает достаточную задержку между моментом, когда узел обработки сообщает, что оно выполнено с записью, и тем, когда он фактически виден на томе GlusterFS, и я беспокоюсь о том, что на последующих этапах обработки попытка забрать файл не будет Найди это. Я уверен, что использование direct-io-mode=enableопции mount поможет, но я не уверен, что этого достаточно . Что еще я должен сделать, чтобы улучшить согласованность?

Или я должен искать другой метод полностью?


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

Каталог NFS с хорошими именами на сервере

Когда я монтирую его из системы Server 2008 R2 с установленным клиентом NFS, я получаю список каталогов, например:

Каталог NFS с плохими именами на клиенте

Ясно, что Unicode не сохраняется. Так что NFS не будет работать на меня.

sysadmin1138
источник
Я считаю, что команда Samba считает ctdbстабильной и готовой к использованию, и первое предложение в приведенной вами ссылке делает второе недействительным, потому что если оно никогда не обновлялось. Я планировал создать это, но прежде чем я смог обойти это, я переключился на работу практически без окон.
Свен
Какую версию окон вы используете?
Том О'Коннор
@ TomO'Connor Как говорится в теге, Windows 7. Тем не менее, Server 2008 R2 будет там в какой-то момент.
sysadmin1138
Я полагаю, Cygwin не может быть и речи?
Том О'Коннор

Ответы:

5

Мне нравится GlusterFS. На самом деле, я обожаю GlusterFS. Пока вы можете дать ему выделенную пропускную способность, все в порядке.

Одна из лучших особенностей GlusterFS - использовать его с NFS. Одной из удивительных вещей, с которыми я работал в последнее время, является NFS в Windows 7 и 2k8R2 .

Вот что я сделаю.

  1. Установите 2 сервера GlusterFS, которые могут экспортировать NFS.
  2. Установите связь пульса между ними.
  3. Развернуть что-то вроде Heartbeat / Pacemaker возможно?
  4. Установите виртуальный IP-адрес (VIP) между узлами Gluster.
  5. Подключите подключенные сетевые диски Windows boxen, используя IP-адрес VIP.
  6. Проверьте все, что вы можете себе представить.

Кластеризация Samba звучит страшно, и даже если вы это сделаете, Samba все еще не может надежно вести себя в некоторых сетях Windows (все, что совместимо с доменом NT4, кажется, никогда не сможет этого избежать).

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

Что касается вашего

  • Количество файлов может достигать десятков миллионов.

Я предлагаю вам исследовать использование XFS в качестве основной файловой системы, так как это довольно хорошо для больших файловых систем и поддерживается в GlusterFS

Том О'Коннор
источник
В настоящее время я использую XFS! Некоторое время назад мы рассмотрели NFS3 для обработки начальной функции загрузки, но она оказалась неработоспособной из-за отсутствия поддержки Unicode. Это было с сервером NFS в Windows. «会計 2012.xls» не будет отображаться правильно, и это очень важно. Но ... я не знал, что около 7 / R2, и стоит исследовать!
sysadmin1138
Итак, я провел тест. К сожалению, он не дал хороших результатов (см. Обновление по вопросу). Кажется, проблема Unicode двунаправленная.
sysadmin1138
Мудак. У меня нет идей. Интересно, вы могли бы поставить Самбу за VIP.
Том О'Коннор
Рабочая группа да, домен (который мы используем) нет. Итак, моя проблема.
sysadmin1138
С другой стороны, после общения с разработчиками сохранение имен файлов не так критично, как я ожидал. По-видимому, до тех пор, пока мы можем получить их на самом первом этапе (прием), база данных будет отслеживать имена. Таким образом, NFS является допустимым вариантом здесь (как только мы получим правильные версии Windows).
sysadmin1138
1

Возможно, вы можете подумать о решении HA ... использовать LDAP для аутентификации (его можно реплицировать на любое количество серверов LDAP) и разместить IP для прослушивания SMB-сервисов.

Этот IP будет плавающим на главном сервере. Когда это не работает, Heartbeat может запускать службы на втором сервере.

Эти серверы будут иметь точку монтирования к glusterfs, и тогда все данные будут там.

Это возможное решение, и им так легко управлять ...

Saxa
источник