| Оглавление |
|---|
| Информация | ||
|---|---|---|
| ||
|
Описание стенда
| Имя узла | Комментарий |
|---|---|
| node-XX | Узлы, предоставляющие ресурс хранения данных. Далее в примере используется минимально возможное количество таких узлов — два, с именами node-00 и node-01. Каждый Каждый из этих узлов оснащен двумя дополнительными накопителями (/dev/vdb и /dev/vdc), которые используются для предоставления разделяемого ресурса хранения данных. Далее термин узел используется в смысле узел, предоставляющий ресурс хранения данных. |
| witness | "Наблюдатель". Необходим для создания кворума в кластере, так как на стенде в примере использует минимальное количество узлов (два). При большем количестве узлов наблюдатель не требуется. Дополнительные накопители на этом узле в наблюдателе не требуются. |
Далее предполагается, что:
- все узлы находятся в одной сети передачи данных;
- все узлы имеют постоянные (статические) IP-адреса;
- в сети настроено разрешение имен, поэтому далее в примерах используются имена узлов, а не их IP-адреса.
IP-адреса узлов далее обозначаются как <адрес_имя_узла>, например: <адрес_node-00> или <адрес_witness>.
Краткую справку по настройке статических адресов и разрешения имен см. в статье Настройка разрешения имен и статических IP-адресов.
Установка пакетов
Необходимые для создания связки NFS+DRBD под управлением Pacemaker пакеты можно командой:
| Command |
|---|
| sudo apt install drbd-`uname -r` drbd-utils nfs-kernel-server pcs |
При этом будет установлен установлена версия пакета drbd, соответствующая версии загруженного ядра.
Настройка NFS+DRBD
Следующие шаги настройки выполняются на всех узлах и на узле-свидетеле, если он используется.
- Добавить в службу nfsdcld.service зависимость от службы nfs-server.service:
Command echo -e "[Unit]\nPartOf=nfs-server.service" | sudo SYSTEMD_EDITOR=tee systemctl edit nfsdcld.service - Загрузить в ядро модуль drbd:
Command sudo modprobe drbd - Создать каталоги для монтирования ресурсов:
Command sudo mkdir -p /opt/drbd-nfs/{exports,internal} - Создать конфигурационный файл /etc/drbd.d/global_common.conf со следующим содержимым:
Блок кода resource ha_nfs { on node-00 { volume 0 { device /dev/drbd1; disk /dev/vdb; meta-disk internal; } volume 1 { device /dev/drbd2; disk /dev/vdc; meta-disk internal; } node-id 0; address <адрес_node-00>:7789; } on node-01 { volume 0 { device /dev/drbd1; disk /dev/vdb; meta-disk internal; } volume 1 { device /dev/drbd2; disk /dev/vdc; meta-disk internal; } node-id 1; address <адрес_node-00>:7789; } on witness { volume 0 { device /dev/drbd1; disk none; meta-disk internal; } volume 1 { device /dev/drbd2; disk none; meta-disk internal; } node-id 2; address <адрес_witness>:7789; } connection-mesh { hosts node-00 node-01 witness; } options { on-no-quorum suspend-io; quorum majority; } - Отключить передачу статистики использования DRBD на внешние серверы. Для этого в файле /etc/drbd.d/global_common.conf изменить значение параметра usage-count на no:
Command sudo sed -i "s/^\(\s*usage-count\s\+\)yes;/\1no;/" /etc/drbd.d/global_common.conf
Следующие шаги настройки выполняются на всех узлах данных, на свидетеле их выполнять не требуется:
- Создать ресурс ha_nfs:
Command sudo drbdadm create-md ha_nfs - Опционально — проверить параметры созданного ресурса:
Command sudo drbdadm dump all - Включить созданный ресурс в работу:
Command sudo drbdadm up ha_nfs
Следующие шаги настройки выполняются на одном из узлов данных. После выполнения этих действий этот узел будет назначен первичным (primary):
- Создать новые идентификаторы (UUID) ресурсов. Синхронизация ресурсов занимает много времени, и при создании нового ресурса не требуется. Для исключения синхронизации используется опция --clear-bitmap.
Command sudo drbdadm new-current-uuid --clear-bitmap ha_nfs/0
sudo drbdadm new-current-uuid --clear-bitmap ha_nfs/1 - Назначить узел первичным:
Command sudo drbdadm primary --force ha_nfs - Создать на дисковых ресурсах файловые системы:
Command sudo mkfs.ext4 /dev/drbd1
sudo mkfs.ext4 /dev/drbd2 - Примонтировать дисковые ресурсы:
Command sudo mount /dev/drbd1 /opt/drbd-nfs/internal/
sudo mount /dev/drbd2 /opt/drbd-nfs/exports/ - Создать на примонтированных ресурсах структуру каталогов:
Command sudo mkdir /opt/drbd-nfs/internal/{portblock_tickle_dir,nfs_info_dir}
sudo mkdir /opt/drbd-nfs/exports/iva-data - Отмонтировать ресурсы:
Command sudo umount /dev/drbd1
sudo umount /dev/drbd2