Настройка DRBD9 CentOS7

Оглавление

Задача:

Настроить кластер DRBD из двух нод

Дано:

NODE1 CentOS7

NODE2 CentOS7

DRBD 9

Диск для репликации sdb1

Решение:

Установка пакета DRBD9

Подключаем репозиторий

Устанавливаем пакет

Добавляем в автозагрузку модуль ядра

Проверяем, все ли подгрузилось

Настройка

Настройка файла hosts

Необходимо в файл /etc/hosts добавить имена нод, если они не могут выть определены с основного ДНС сервера

Создание файла ресурсов с именем /etc/drbd.d/data.res

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

Данную процедуру выполняем на обоих нодах

Если возникает ошибка

То необходимо удалить остаточные данные, например, ранее диск был отформатирован под ext4 или использовался в массиве RAID

После этого можно повторно инициализировать ресурс командой drbdadm create-md

Назначаем первичную ноду и поднимаем ее. Выполняется на первичной ноде

Примечание

Файл /proc/drbd

В 9 версии нет информации в традиционном файле /proc/drbd

Информацию можно получить по следующему пути

Устранение ошибки split-brain

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

На сервере 1 переводим ресурс data  в состояние secondary и подключаем к data с параметром –discard-my-data,

Если выходит следующее сообщение

Отключаем data и повторяем операцию.

На втором сервере запускаем

Проверяем состояние, в случае если данные не синхронизированы начнется синхронизация разделов.

 

Теория

Основной файл конфигурации

minor-count — По умолчанию модуль DRBD загружается с minorcount 32, если используется много устройств и номеров не хватает их можно явно указать здесь;
dialog-refresh — Обновление экрана каждые n секунд, может быть полезно при подключение к серверу по последовательному интерфейсу;
disable-ip-verifi cation — Позволяет отключить одну из проверок drbdadm;
usage-count — Участвовать в глобальном подсчете пользователей DRBD или нет;
common {…} — Секция, опции которой наследуют все ресурсы;
syncer — Позволяет задать пропускную способность при синхронизации устройств по сети, разработчики рекомендуют использовать 30% от возможностей сети. Например, если у вас 100 Мбит сеть, то 100 * 0.3 = 30 Мб;
resource data {…} — Секция описания ресурса;
protocol — Задает протокол для DRBD, подробнее о них написано далее;
handlers {…} — Задает обработчики, например что делать в случае потери соединения первичной ноды;
startup {…} — Секция для опций используемых в процессе загрузки DRBD;
wfc-timeout — Ожидание таймаута соединения;
degr-wfc-timeout — Ожидание таймаута подключения, в случае если в кластере одна рабочая нода;
wait-after-sb — Ожидание после split brain, ситуация когда все ноды могут попытаться запустить сервис одновременно, думая что другие ноды недоступны. В свою очередь это может повлечь за собой повреждение данных;
disk {…} — Секция с настройками оповещения верхних уровней, если замечено, что происходят I/O ошибки при обращение к диску;
on-io-error detach — Нода перестает работать с носителем данных если на нем происходят I/O ошибки;
fencing — Процесс блокировки ресурсов с нод статус которых сомнителен;
net {…} — Секция задает различные опции сети, такие как размеры буфера, максимальное число запросов обрабатываемых DRBD. В обычных ситуациях значений по умолчанию достаточно;
on host {…} — Секция описания нод;
device — Указывает на устройство DRBD, они расположены в /dev/ и начинаются с 0;
disk — Физический диск или раздел, который будет задействован в работе DRBD;
address — IP-адрес и порт этой ноды, нужно указывать именно ее IP-адрес а не shared IP;
meta-disk — Meta данные могут храниться на отдельном разделе диске а могут на диске описанном в опции disk;
max-buffers — Число буферов используемых для хранения данных, пока те записываются на диск;
max-epoch-size — Максимальное число запросов на запись. Должно соответствовать max-buff ers;
timeout, ping-int — Эти значения можно повысить если наблюдаются обрывы связи;

Возможный статус соединения

StandAlone — Недоступна сетевая конфигурация. Этот ресурс еще не был подключен или был административно отключен (drbdadm disconnect), или сбросил сетевое подключение из за не пройденной аутентификации или split brain;
Disconnecting — Временное состояние пока происходит отключение,
следующее состояние StandAlone;
Unconnected — Временное состояние до попытки подключения. Следующее возможное состояние WFConnection или WFReportParams;
Timeout — Временное состояние после перерыва связи с peer-ом. Следующее возможное состояние Unconnected;
BrokenPipe — Временное состояние после потери связи с peer-ом. Следующее возможное состояние Unconnected;
NetworkFailure — Временное состояние после потери связи с партнером. Следующее возможное состояние — Unconnected;
ProtocolError — Временное состояние после потери связи с партнером. Следующее возможное состояние Unconnected;
TearDown — Временное состояние, peer закрывает соединение. Следующее возможное состояние Unconnected;
WFConnection — Нода ожидает пока peer станет виден в сети;
WFReportParams — TCP соединение было установлено, нода ожидает первый сетевой пакет от peer-ра;
Connected — DRBD соединение установлено, зеркалирование данных активно. Это нормальное состояние;
StartingSyncS — Начата полная синхронизация, выполняется администратором. Следующее возможное состояние SyncSource или PausedSyncS;
StartingSyncT — Начата полная синхронизация, выполняется администратором. Следующее возможное состояние WFSyncUUID;
WFBitMapS — Частичная синхронизация начата. Следующее возможное состояние SyncSource или PausedSyncS;
WFBitMapT — Частичная синхронизация начата. Следующее возможное состояние WFSyncUUID;
WFSyncUUID — Синхронизация скоро начнется. Следующее возможное состояние SyncTarget или PausedSyncT;
SyncSource — Синхронизация запускается, локальная нода является источником синхронизации;
SyncTarget — Синхронизация запускается, локальная нода является целью синхронизации;
PausedSyncS — Локальная нода источник синхронизации, но синхронизация находится в режиме паузы;
PausedSyncT — Локальная нода является целью синхронизации, но синхронизация находится в режиме паузы;
VerifyS — Запускается онлайн верификация, локальная нода является источником верификации;
VerifyT — Запускается онлайн верификация, локальная нода является целью верификации.

Роли ресурсов:

Primary — первичная нода;
Secondary — вторичная нода;
Unknown — роль ресурса неизвестна. Локальный ресурс не бывает в этой роли. Она отображается только для ресурса peer-ра в отключенном режиме.

Возможные состояния диска

Diskless — Драйверу DRBD не назначено блочное устройство;
Attaching — Переходное состояние пока считываются meta данные;
Failed — Переходное состояние последовавшее за I/O ошибкой локального блочного устройства, следующее возможное состояние Diskless;
Negotiating — Переходное состояние пока налаживается соединение;
Inconsistent — Данные непоследовательны. Это статус нового ресурса;
Outdated — Данные ресурса последовательны но устарели;
DUnknown — Статус используется для peer-ра если не доступно сетевое подключение;
Consistent — Последовательные данные ноды без сетевого подключения. После подключения будет решено, данные являются актуальными или устаревшими;
UpToDate — Все данные в актуальном состояние. Это нормально состояние.

Файл конфигурации ресурса

DRBD поддерживает как синхронную, так и асинхронную синхронизацию

Асинхронной репликация, протокол «A» — запись считается завершенной, как только запись завершилась на локальное устройство и данные были отправлены на удаленный узел
Промежуточный протокол репликации «B» — запись считается успешной, если она завершилась на локальный диск и удаленный узел подтвердил получение (но не локальную запись) данных
Синхронная репликация, протокол «С» — операция записи считается завершенной, когда и локальный, и сетевой диски сообщают об успешном завершении записи

on node1: состояния on on, к которым относятся вложенные операторы конфигурации
data: это имя нового ресурса
device /dev/drbd0: указывает новое виртуальное блочное устройство, управляемое DRBD
disk /dev/sdb1: это раздел блочного устройства, который является резервным устройством для устройства DRBD
meta-disk: определяет, где DRBD хранит свои метаданные. Использование Internal означает, что DRBD хранит свои метаданные на том же физическом устройстве нижнего уровня, что и фактические производственные данные
address: указывает IP-адрес и номер порта соответствующего узла

Инициализация и включение ресурса

Для взаимодействия с DRBD мы будем использовать следующие инструменты администрирования, которые взаимодействуют с модулем ядра для настройки и администрирования ресурсов DRBD:

drbdadm: инструмент администрирования высокого уровня DRBD
drbdsetup: инструмент администрирования более низкого уровня для подключения устройств DRBD к их устройствам резервного блока, для настройки пар устройств DRBD для зеркалирования их устройств резервного блока и для проверки конфигурации работающих устройств DRBD
drbdmeta: инструмент управления метаданными

Увеличение скорости синхронизации DRDB

При синхронизации идет нагрузка как на диски, так и на сеть, поэтому параметры необходимо подбирать исходя из ваших скоростей. Так у меня на 10Гб сети, стоит ограничение по нагрузке на диски в 350Мб\с, что составляет примерно 3Гб\с по трафику

В файле/etc/drbd.d/global_common.conf заданы следующие параметры

 

Небольшой видос

 

5 2 голоса
Рейтинг статьи
Опубликовано в рубрике DRBDTagged
Звёзд: 1Звёзд: 2Звёзд: 3Звёзд: 4Звёзд: 5 (1 оценок, среднее: 5,00 из 5)
Загрузка...
Подписаться
Уведомить о
guest
1 Комментарий
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
trackback
2 лет назад

[…] the end of synchronization, both resources should have UpToDate. You can read more about statuses here in the “Theory” section. Official site with documentation. Further, it is necessary to […]