Установка и настройка GlusterFS

Установка и настройка GlusterFS на двух нодах с репликацией тома

Ноды, на которых устаналивается GlusterFS-сервер используют Debian9

В качестве GlusterFS-сервера используем Ubuntu16.04 LTS

 

Установка GlusterFS-сервера на обоих нодах

Создание и выполнение скрипта для добавления репозитария GlusterFS на Debian

Проверяем добавленный репозитарий

 

Создание trusted storage pool(TSP) из двух нод
Проверяем состояние кластера

Добавялем в кластер вторую ноду(proxmox7)

Примечние: локальный хост,на котором выполняем команду, добавлять не нужно(т.е. не требуется выполнять gluster peer probe proxmox6)

Проверяем состояние кластера на первой ноде(proxmox6)

Проверяем состояние кластера на второй ноде(proxmox7)

 

Настройка GlusterFS Volume

Создание реплицируемого тома с именем gvolume1

На обоих нодах создаем каталог, в котором будет размещаться том

Желательно под GlusterFS том выделать отдельный диск или раздел диска
В данном случае GlusterFS-том размещается на корневой файловой системе
Если том создается на корневом разделе ноды( а не на отдельном диски/разделе, как рекомендуют разработчики GlusterFS, то используем опцию force)

Запуск тома

Просмотр информации о томе

Уменьшим время в течение котрого клиент ожидает ответ от сервера и в случае недоступности сервера автоматически переподключается к другому серверу в trusted storage pool(по умолчанию таймаут 42 секунды, что вынуждает клиента ожидать 42 секунды, чтобы переключитя на другую ноду,если текущая не отвечает)

Ограничение доступа к volume gvolume1(разрешаем монтировать только нашим клиентам)

Для того, чтобы убрать ограничение(тем самым разрешить доступ к тому со всех хостов/клиентов)

Просмотр компонентов gluster

Просмотр всех ключей

Фильтрация нужных ключей

Тюнинг

Список наиболее часто запрашиваемых файлов

Список файлов наиболее часто запрашиваемых для чтения

Список файлов наиболее часто запрашиваемых для записи

Список каталогов наиболее часто запрашиваемых для открытия

Измерение полосы пропускания чтения(скорости чтения)

Измерение полосы пропускания записи (скорости записи)

Просмотр ожидающих вызовов тома

Просмотр lдетальной информации о томе

Профилирование тома

 

Наcтройка клиента
Клиенты будут использовать Ubuntu16.04 LTS

Загрузка модуля fuse и добавление такой загрузки в автозагрузку

Версию Glusterfs-клиента устанавливаю таку же,как и установлена версия GlusterFS на сервере
В данном случае 4.1
https://launchpad.net/~gluster
https://launchpad.net/~gluster/+archive/ubuntu/glusterfs-4.1 

Только для контейнера

 

Монтируем реплицируемый том с GlusterFS-сервера

Если ошибок нет,то размонтируем и добавим в /etc/fstab для автомонтирования тома

Если в течение 5 секунд не будет связи с Proxmox6-сервером,то клиент автоматически переподключится к серверу proxmox7

Просмотр процессов|файлов/каталогов, использующих точку монтирования на клиенте

Остановка процессов использующих каталог /home

Если не помогает,то

Отмонтироание каталога /home

 

GlusterFS split-brain
Существует 3 типа split-brain

Entry/gfid — этот тип split-brain НЕ МОЖЕТ бать исправлен с помощью автоматического heal

Проcмотр всех файлов,которые требуют healing ( и будут обработаны демоном self-heal)

Проверка,включен ли демон self-heal

Ручной/принудительный запуск self-heal только для файлов,который требуют healing

Ручной/принудительный запуск self-heal для ВСЕХ файлов

Просмотр файлов,которые находятся в состоянии split-brain

Если существуют файлы в статусе split-brain, то родительский каталог, содержащий такие файлы также будет отображен в статусе split-brain

 

Разрешение/исправление split-brain-файлов
А) с помощью командной строки GlusterFS

Файлы с типом split-brain data и metadata могут быть разрешены одной из указанных ниже политик с командной строки GlusterFS
Файлы с типом split-brain gfid не могут быть разрешены этими политиками

 

1.Выбор бОльшего по размеру файла, как источника

Вместо <FILE> можно указывать как имя файла, которое вывела команда

добавляя перед ним название каталога, из которого создавался том glusterfs на нодах(/gluster-storage в данном случае) либо его GlusterFS-идентификатор(gfid), который также может выводить указанная выше команда

 

2.Выбор файла по самому времени модификации файла
Т.е. источником будет файл, который изменялся позже всех остальных файлов с таким же именем.

 

3.Выбор ОДНОГО файла на одном из существующих кирпичиков реплицируемого тома
Т.е. источником будет файл на конкретном кирпичике

 

4.Выбор одного из кирпичиков реплики в качестве источника ДЛЯ ВСЕХ файлов
Т.е. когда несколько/множество файлов находятся в состоянии split-brain, то можно в качестве источника  для всех этих файлов взять один из кирпичиков реплицируемого тома

 

Решение  для Entry/gfid-типов split-brain файлов
Использование указанных выше политик для entry и gfid-типов split-brain не поддерживается
Т.е. невозможно исправить каталог, например, с помощью команды

Решение такого типа split-brain состоит в удалении проблемных файлов на ВСЕХ кирпичиках реплицируемого тома, КРОМЕ ОДНОГО.
Кроме удаления таких файлов, также необходимо удалить gfid-ссылки на эти файлы, а также все остальные файлы, которые имеют такой же inod(т.е. все hard-линки)
GlusterFS для каждого файла,который находится под ее контролем создает копию этого файла в каталоге /gluster-storage/.glusterfs/ в подкаталоге xx/yy,
где xx/yy первые четыре символа в имени файла,
Где /gluster-storage – каталог, в котором создавался реплициремый том
Например, на ноде есть файл в GlusterFS-хранилище и в каталоге /gluster-storage был создан реплицируемый том(gvolume1)
В этом хранилище существует произвольный файл

Для того, чтобы узнать его копию в GlusterFS выполняем команду, которая находит все файлы, которая имеют тот же самый inode, как и split-brain-файл(т.е. находит все hard-ссылки)

Т.е. GlusterFS-ссылка находится по пути

gfid – GlusterFS-идентификатор файла — 430d0513-640a-454e-82fe-c791fa8e8a0e
43 и 0d вложенные каталоги по пути /gluster-storage/.glusterfs/

Т.е. для разрешения split-brain с файлом /gluster-storage/file.php
Необходимо удалить сам файл
/gluster-storage/file.php

И его gfid-идентификатор(GlusterFS hard-link)
/gluster-storage/.glusterfs/43/0d/890d0513-640a-454e-82fe-c791fa8e8a0e

На всех кирпичиках тома,за исключением одного, файл на котором будет исходным.
Если будут найдены другие файлы с таким же inodo-м, их тоже необходимо удалить

После чего запустить self-heal

Команда для просмотра gfid-идентификатора файла

Файл доступен во внутреннем хранилище GlusterFS по пути

 

Принцип работы команды heal info

 

Разрешение/исправление split-brain-файлов
Б) С помощью/с точки монтирования тома(также применимо только к data И/ИЛИ metadata типом split-brain)
Не будет работать на NFS-разделах т.к. они не поддерживают расширенные атрибуты xattrs
С любой точки монтирования (клиента, который монтирует у себя реплицируемый том) можно использовать команды getfattr and setfattr для обнаружения data и metadata типов split-brain и их устранения

Например, с помощью команды, выполненной на ноде, мы обнаружили файл, находящийся в split-brain

Теперь с клиента определяем, в какой именно типе split-brain находится файл

Проверка, находится ли файл именно в data или metadata типе split-brain

Например

При поытке получить доступ с клиента  к таким файлам,находящимся в split-brain, будет получена ошибка типа input/output error

Для предоставления доступа к файлу, находящемуся в split-brain, для конкретного клиента выполняем

Где
choiceX – имя клиента, которому нужно предоставить доступ к файлу, который присутствует в выводе команды

( в нашем случае один из указанных здесь Choices:test-client-0,test-client-1″)

Например, для test-client-0

После чего файл становится доступным с этого клиента(test-client-0)

Аналогично, для доступа с другого клиента(test-client-1) ему необходимо дать доступ

Для отмены доступа к файлу со всех клиентов используем команду

После определения кирпичика, на котором split-brain файл будет взять в качестве источника
Устанавливаем этот кирпичик как источник, для конфликтного файла

Например, определим,что файл должен быть взять с кирпичика test-client-0

 

Автоматическое разрешение split-brain файлов
GlusterFS поддерживает также автоматическое решение split-brain по одной из указанных ниже политик
Т.е. устанавливая соответствующее значение опции тома cluster.favorite-child-policy равной одной из политик, будет активироваться автоматическое разрешение split-brain-файлов без участия пользователя
По умолчанию эта опия отключена (установлено значение «none»)

 

Источник:
https://docs.gluster.org/en/latest
http://www.linux-admins.net/2012/07/deploying-glusterfs.html
http://www.jamescoyle.net/how-to/435-setup-glusterfs-with-a-replicated-volume-over-2-nodes
https://www.server-world.info/en/note?os=Ubuntu_16.04&p=glusterfs

Комментирование и размещение ссылок запрещено.

Комментарии закрыты.

Яндекс.Метрика