Назад | Перейти на главную страницу

Избегайте SPOFS с GlusterFS и Windows

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

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

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

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

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

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

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

Поэтому ищу другой способ.

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

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

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

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

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

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


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

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

Ясно, что Unicode не сохраняется. Так что NFS мне не подходит.

Мне нравится 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, похоже, никогда не сможет преодолеть это).

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

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

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

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

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

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

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

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