The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Индекс форумов
Составление сообщения

Исходное сообщение
"Раздел полезных советов: Отказоустойчивое хранилище с автома..."
Отправлено auto_tips, 15-Янв-10 17:52 
Инструкция по создании зеркалируемого (реплицированного) между двумя машинами хранилища файлов на базе GlusterFS (http://www.gluster.com/) и Ubuntu 9.10. Добавляемый в созданное хранилище файл на первом сервере буде сразу доступен на втором и наоборот, при этом данные на каждой машине будут использоваться из локального раздела, что обеспечивает значительно более высокую производительность, по сравнению с NFS. С особенности кластерной файловой системы GlusterFS можно познакомиться на [[http://www.opennet.ru/opennews/art.shtml?num=21760 данной странице]].

В рассматриваемой конфигурации задействованы три машины: два сервера (server1.example.com/192.168.0.100, server2.example.com/192.168.0.101) и один клиент (client1.example.com: IP адрес 192.168.0.102). Серверы выступают в роли машин для экспорта дисковых разделов, доступ к отказоустойчивому хранилищу осуществляется на стороне клиента.

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

++ Установка серверной части GlusterFS на server1.example.com и server2.example.com:

Так как GlusterFS доступен в стандартном репозитории Ubuntu 9.10, достаточно выполнить (сейчас и далее все действия выполняются под пользователем root):

   apt-get install glusterfs-server

Для организации хранилища на сервере будем использовать каталог /data/export.

Приводим файл конфигурации /etc/glusterfs/glusterfsd.vol на серверах в следующий вид:

   volume posix
    type storage/posix
    option directory /data/export
   end-volume

   volume locks
    type features/locks
    subvolumes posix
   end-volume

   volume brick
    type performance/io-threads
    option thread-count 8
    subvolumes locks
   end-volume

   volume server
    type protocol/server
    option transport-type tcp
    # далее через запятую нужно перечислить IP или имена хостов клиентов
    # можно использовать маски вида 192.168.*,
    option auth.addr.brick.allow 192.168.0.102
    subvolumes brick
   end-volume

Запускаем сервер GlusterFS:

   /etc/init.d/glusterfs-server start


++ Настройка клиента GlusterFS

Для установки клиентской части GlusterFS выполняем:

   aptitude install glusterfs-client glusterfs-server

Хранилище будем монтировать в каталог /mnt/glusterfs.

Приводим файл конфигурации клиента /etc/glusterfs/glusterfsd.vol в следующий вид:

   volume remote1
    type protocol/client
    option transport-type tcp
    option remote-host 192.168.0.100 # server1.example.com
    option remote-subvolume brick
   end-volume

   volume remote2
    type protocol/client
    option transport-type tcp
    option remote-host 192.168.0.101 # server2.example.com
    option remote-subvolume brick
   end-volume

   volume replicate
    type cluster/replicate
    subvolumes remote1 remote2
   end-volume

   volume writebehind
    type performance/write-behind
    option window-size 1MB
    subvolumes replicate
   end-volume

   volume cache
    type performance/io-cache
    option cache-size 512MB
    subvolumes writebehind
   end-volume


Монтируем файловую систему GlusterFS в каталог /mnt/glusterfs:

   glusterfs -f /etc/glusterfs/glusterfs.vol /mnt/glusterfs
или
   mount -t glusterfs /etc/glusterfs/glusterfs.vol /mnt/glusterfs

Для автоматизации монтирования во время загрузки в /etc/fstab сдедует добавить:

   /etc/glusterfs/glusterfs.vol  /mnt/glusterfs  glusterfs  defaults  0  0

++ Тестирование

Создаем в GlusterFS разделе на стороне клиента несколько файлов:

   touch /mnt/glusterfs/test1
   touch /mnt/glusterfs/test2

Эти файла сразу должны появиться на серверах в каталоге /data/export

Выключим первый сервер и добавить на стороне клиента еще несколько файлов:

   touch /mnt/glusterfs/test3
   touch /mnt/glusterfs/test4
   rm -f /mnt/glusterfs/test2

Изменения должны появиться на втором сервере.

Включим первый сервер и увидим, что данные на нем неактуальны. Изменения будут синхронизированы автоматически, для инициирования синхронизации на стороне клиента достаточно выполнить любую операцию с разделом, например, посмотреть содержимое через "ls -l /mnt/glusterfs/".


++ GlusterFS в роли замены NFS с поддержкой кэширования.

Чтобы примонтировать раздел в NFS-подобном виде, без репликации, [[http://www.howtoforge.net/creating-an-nfs-like-standalone-st... достаточно]] добавить в конфигурации сервера в блоке "volume locks" опцию "option mandatory-locks on". На стороне клиента нужно закомментировать в конфигурации блок "volume replicate" и  убрать блок, описывающий вторую реплицируемую директорию "volume remote2". В секции "volume writebehind" на стороне клиента при этом заменяем опцию "subvolumes replicate" на "subvolumes remote", а также можем уменьшить размер окна до 1 Мб ("option window-size 1MB").

++ Создание распределенного на 4 узла хранилища

При реализации хранилища, распределенного на 4 узла, настройка [[http://www.howtoforge.net/distributed-storage-across-four-st... производится]] аналогично, по аналогии с remote2 добавляются разделы remote3 и remote4. Вместо "volume replicate" добавляется раздел "volume distribute":

   ...
   volume remote3
     type protocol/client
     option transport-type tcp
     option remote-host server3.example.com
     option remote-subvolume brick
   end-volume

   volume remote4
     type protocol/client
     option transport-type tcp
     option remote-host server4.example.com
     option remote-subvolume brick
   end-volume

   volume distribute
     type cluster/distribute
     subvolumes remote1 remote2 remote3 remote4
   end-volume
   ...

В блоке "volume writebehind" приписывается "subvolumes distribute".

Конфигурацию можно сгенерировать автоматически, например, запустив на одном из серверов:

   glusterfs-volgen --name repstore1 --raid 1 hostname1:/export/sdb1 \
     hostname2:/export/sdb1 hostname3:/export/sdb1 hostname4:/export/sdb1

При надлежащей настройке параметров доступа к серверам все параметры конфигурации серверных и клиентских составляющих на всех машинах распределенного хранилища будут обновлены автоматически. Для систем не поддерживающих GlusterFS доступ к хранилищу можно организовать через NFS, SMB или WebDAV.


URL: http://www.howtoforge.net/high-availability-storage-with-glu...
Обсуждается: http://www.opennet.ru/tips/info/2264.shtml

 

Ваше сообщение
Имя*:
EMail:
Для отправки ответов на email укажите знак ! перед адресом, например, !user@host.ru (!! - не показывать email).
Более тонкая настройка отправки ответов производится в профиле зарегистрированного участника форума.
Заголовок*:
Сообщение*:
 
При общении не допускается: неуважительное отношение к собеседнику, хамство, унизительное обращение, ненормативная лексика, переход на личности, агрессивное поведение, обесценивание собеседника, провоцирование флейма голословными и заведомо ложными заявлениями. Не отвечайте на сообщения, явно нарушающие правила - удаляются не только сами нарушения, но и все ответы на них. Лог модерирования.



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру