This shows you the differences between two versions of the page.
| Both sides previous revision Previous revision Next revision | Previous revision | ||
|
решение_drbd [2019/01/31 09:46] val [DRBD и Pacemaker] |
решение_drbd [2024/11/28 04:39] (current) val [Запуск сервиса] |
||
|---|---|---|---|
| Line 1: | Line 1: | ||
| ====== Решение DRBD ====== | ====== Решение DRBD ====== | ||
| - | * [[http://www.drbd.org/]] | + | * [[https://ru.wikipedia.org/wiki/DRBD|wikipedia DRBD]] |
| - | * [[http://help.ubuntu.ru/wiki/руководство_по_ubuntu_server/кластеризация/drbd|DRBD (Руководство по Ubuntu Server)]] | + | * [[https://help.ubuntu.ru/wiki/руководство_по_ubuntu_server/кластеризация/drbd|DRBD (Руководство по Ubuntu Server)]] |
| + | * [[https://github.com/sbuelow/zabbix-template-drbd|sbuelow/zabbix-template-drbd]] | ||
| + | |||
| + | * [[https://sidmid.ru/1-%D0%BD%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B9%D0%BA%D0%B0-drbd9/|НАСТРОЙКА DRBD9]] | ||
| + | * [[https://www.theurbanpenguin.com/create-3-node-drbd-9-cluster-using-drbd-manage/|Create a 3 Node DRBD 9 Cluster Using DRBD Manage]] | ||
| ===== Подготовка узлов ===== | ===== Подготовка узлов ===== | ||
| Line 8: | Line 12: | ||
| <code> | <code> | ||
| - | root@nodeN:~# lshw -C disk | + | root@nodeN:~# lsblk |
| root@nodeN:~# mkdir /disk2 | root@nodeN:~# mkdir /disk2 | ||
| Line 14: | Line 18: | ||
| ===== Установка и настройка ===== | ===== Установка и настройка ===== | ||
| + | |||
| + | * В Debian для использования postfix надо предварительно [[Сервис MTA#Установка и настройка MTA на обработку почты домена hostname]] | ||
| + | * В Ubuntu postfix по умолчание, запустится визард | ||
| + | |||
| <code> | <code> | ||
| - | root@nodeN:~# apt install drbd8-utils | + | Лучше на каждом узле отдельно |
| - | root@nodeN:~# systemctl enable drbd.service | + | root@nodeN:~# apt install drbd-utils |
| - | root@nodeN:~# cat /etc/drbd.d/global_common.conf | ||
| - | </code><code> | ||
| - | ... | ||
| - | startup { | ||
| - | ... | ||
| - | wfc-timeout 30; | ||
| - | } | ||
| - | ... | ||
| - | </code><code> | ||
| root@nodeN:~# cat /etc/drbd.d/r0.res | root@nodeN:~# cat /etc/drbd.d/r0.res | ||
| </code><code> | </code><code> | ||
| resource r0 { | resource r0 { | ||
| + | syncer { rate 1000M; } | ||
| + | handlers { | ||
| + | split-brain "/usr/lib/drbd/notify-split-brain.sh root"; | ||
| + | } | ||
| on node1.corpX.un { | on node1.corpX.un { | ||
| device /dev/drbd0; | device /dev/drbd0; | ||
| disk /dev/sdb; | disk /dev/sdb; | ||
| # disk /dev/sdb1; | # disk /dev/sdb1; | ||
| - | address 10.Z.M.100+X:7788; | + | # address 10.Z.M.100+X:7788; |
| + | address 192.168.X.1:7788; | ||
| meta-disk internal; | meta-disk internal; | ||
| } | } | ||
| Line 42: | Line 46: | ||
| disk /dev/sdb; | disk /dev/sdb; | ||
| # disk /dev/sdb1; | # disk /dev/sdb1; | ||
| - | address 10.Z.M.200+X:7788; | + | # address 10.Z.M.200+X:7788; |
| + | address 192.168.X.2:7788; | ||
| meta-disk internal; | meta-disk internal; | ||
| } | } | ||
| } | } | ||
| - | </code><code> | + | </code> |
| + | ===== Инициализация ===== | ||
| + | |||
| + | <code> | ||
| root@nodeN:~# drbdadm create-md r0 | root@nodeN:~# drbdadm create-md r0 | ||
| </code> | </code> | ||
| - | Одновременно на двух узлах (в ubuntu16 может потребоваться перезагрузка): | + | **одновременно на двух узлах** |
| <code> | <code> | ||
| root@nodeN:~# service drbd start | root@nodeN:~# service drbd start | ||
| Line 56: | Line 64: | ||
| </code><code> | </code><code> | ||
| root@node1:~# drbdadm -- --overwrite-data-of-peer primary r0 | root@node1:~# drbdadm -- --overwrite-data-of-peer primary r0 | ||
| + | </code> | ||
| + | ===== Мониторинг ===== | ||
| + | <code> | ||
| root@nodeN:~# cat /proc/drbd | root@nodeN:~# cat /proc/drbd | ||
| root@nodeN:~# watch cat /proc/drbd | root@nodeN:~# watch cat /proc/drbd | ||
| + | |||
| + | root@nodeN:~# drbdadm sh-resources | ||
| + | |||
| + | root@nodeN:~# drbdadm cstate r0 | ||
| + | |||
| + | root@nodeN:~# drbdadm dstate r0 | ||
| + | |||
| + | root@nodeN:~# drbdadm role r0 | ||
| </code> | </code> | ||
| - | Можно не ожидая синхронизации: | + | |
| + | ===== Форматирование раздела ===== | ||
| + | |||
| + | **можно не ожидая окончания синхронизации** | ||
| <code> | <code> | ||
| root@node1:~# mkfs.ext4 /dev/drbd0 | root@node1:~# mkfs.ext4 /dev/drbd0 | ||
| root@node1:~# mount /dev/drbd0 /disk2 | root@node1:~# mount /dev/drbd0 /disk2 | ||
| + | |||
| + | root@node1:~# mount | grep ext | ||
| </code> | </code> | ||
| ===== Смена ролей узлов ===== | ===== Смена ролей узлов ===== | ||
| - | **после окончания синхронизации** | + | * Может потребоваться включить в blacklist для [[Сервис multipath]] |
| + | * !!! можно не дожидаясь окончания синхронизации | ||
| <code> | <code> | ||
| Line 84: | Line 109: | ||
| root@node2:~# umount /disk2 | root@node2:~# umount /disk2 | ||
| root@node2:~# drbdadm secondary r0 | root@node2:~# drbdadm secondary r0 | ||
| + | </code> | ||
| + | |||
| + | |||
| + | ===== Автозапуск ===== | ||
| + | <code> | ||
| + | root@nodeN:~# systemctl enable drbd.service | ||
| </code> | </code> | ||
| Line 98: | Line 129: | ||
| <code> | <code> | ||
| + | nodeN# mail | ||
| + | |||
| nodeN# service drbd stop | nodeN# service drbd stop | ||
| </code> | </code> | ||
| - | Выбираем узел, данные которого будут затерты. | + | Выбираем узел, данные которого будут затерты (Для поиска и "спасения" модифицированных файлов можно воспользоваться [[Команда find]]) |
| <code> | <code> | ||
| nodeZ# drbdadm invalidate r0 | nodeZ# drbdadm invalidate r0 | ||
| Line 108: | Line 141: | ||
| root@nodeN:~# service drbd start | root@nodeN:~# service drbd start | ||
| </code> | </code> | ||
| + | Дополнительные команды | ||
| + | <code> | ||
| + | nodeN# drbdadm detach r0 --force | ||
| + | nodeZ# drbdadm invalidate r0 | ||
| + | |||
| + | nodeN# drbdadm connect r0 | ||
| + | </code> | ||
| ===== DRBD и Heartbeat ===== | ===== DRBD и Heartbeat ===== | ||
| Line 125: | Line 165: | ||
| * [[https://www.theurbanpenguin.com/drbd-pacemaker-ha-cluster-ubuntu-16-04/|DRBD Pacemaker HA Cluster on Ubuntu 16.04]] | * [[https://www.theurbanpenguin.com/drbd-pacemaker-ha-cluster-ubuntu-16-04/|DRBD Pacemaker HA Cluster on Ubuntu 16.04]] | ||
| + | ==== Запуск сервиса ==== | ||
| <code> | <code> | ||
| root@nodeN:~# apt install psmisc #fuser | root@nodeN:~# apt install psmisc #fuser | ||
| + | |||
| + | root@nodeN:~# systemctl stop drbd.service | ||
| root@nodeN:~# systemctl disable drbd.service | root@nodeN:~# systemctl disable drbd.service | ||
| Line 132: | Line 175: | ||
| node1# crm configure | node1# crm configure | ||
| </code><code> | </code><code> | ||
| - | primitive pr_drbd_r0 ocf:linbit:drbd params drbd_resource="r0" op monitor interval="15s" | + | primitive pr_drbd_r0 ocf:linbit:drbd params drbd_resource="r0" |
| ms ms_drbd_r0 pr_drbd_r0 meta master-max="1" master-node-max="1" clone-max="2" clone-node-max="1" notify="true" | ms ms_drbd_r0 pr_drbd_r0 meta master-max="1" master-node-max="1" clone-max="2" clone-node-max="1" notify="true" | ||
| + | #clone ms_drbd_r0 pr_drbd_r0 meta clone-max=2 clone-node-max=1 notify=true promotable=true | ||
| + | commit | ||
| + | quit | ||
| + | </code><code> | ||
| + | node1# crm status | ||
| + | |||
| + | node1# cat /proc/drbd | ||
| + | </code> | ||
| + | |||
| + | * Можно использовать для [[Сервис iSCSI#iSCSI target]] | ||
| + | ==== Монтирование раздела ==== | ||
| + | <code> | ||
| + | node1# crm configure | ||
| + | </code><code> | ||
| primitive pr_fs_r0 ocf:heartbeat:Filesystem params device="/dev/drbd0" directory="/disk2" fstype="ext4" | primitive pr_fs_r0 ocf:heartbeat:Filesystem params device="/dev/drbd0" directory="/disk2" fstype="ext4" | ||
| colocation col_fs_on_drbd inf: pr_fs_r0 ms_drbd_r0:Master | colocation col_fs_on_drbd inf: pr_fs_r0 ms_drbd_r0:Master | ||
| - | order or_fs_after_drbd inf: ms_drbd_r0:promote pr_fs_r0:start | + | order or_fs_after_drbd Mandatory: ms_drbd_r0:promote pr_fs_r0:start |
| commit | commit | ||
| + | quit | ||
| </code><code> | </code><code> | ||
| - | # crm resource move pr_fs_r0 node1.corpX.un | + | node1# mount | grep ext |
| + | </code> | ||
| - | # crm configure show | + | ==== Перемещение раздела ==== |
| + | |||
| + | <code> | ||
| + | node1# crm resource move pr_fs_r0 node1 | ||
| + | |||
| + | node1# crm configure location cli-prefer-pr_fs_r0 pr_fs_r0 role=Started inf: node1 | ||
| + | |||
| + | node1# crm configure show | ||
| + | |||
| + | node1# crm configure delete cli-prefer-pr_fs_r0 | ||
| + | </code> | ||
| + | |||
| + | ===== Решение ситуации Split-Brain при использовании Pacemaker ===== | ||
| + | |||
| + | Выбираем узел, данные которого будут затерты. | ||
| + | |||
| + | <code> | ||
| + | nodeZ# service pacemaker stop | ||
| + | |||
| + | nodeZ# drbdadm invalidate r0 | ||
| + | |||
| + | nodeZ# service pacemaker start | ||
| + | |||
| + | nodeM# crm resource cleanup pr_fs_r0 # Может не понадобиться | ||
| + | </code> | ||
| + | ===== Конфигурация с двумя primaries ===== | ||
| + | |||
| + | * [[https://habr.com/ru/post/445612/|Кластерное хранилище для небольших web-кластеров на базе drbd+ocfs2]] | ||
| + | * [[Сервис OCFS2]] | ||
| + | * Пакет Pacemaker [[Пакет Pacemaker#Запуск после монтирования файловых систем]] | ||
| + | |||
| + | <code> | ||
| + | root@nodeN:~# cat /etc/drbd.d/r0.res | ||
| </code><code> | </code><code> | ||
| + | resource r0 { | ||
| ... | ... | ||
| - | location cli-prefer-pr_fs_r0 pr_fs_r0 role=Started inf: node1.corpX.un | + | startup { |
| + | become-primary-on both; | ||
| + | wfc-timeout 1; | ||
| + | } | ||
| + | net { | ||
| + | allow-two-primaries; | ||
| + | after-sb-0pri discard-zero-changes; | ||
| + | after-sb-1pri discard-secondary; | ||
| + | after-sb-2pri disconnect; | ||
| + | } | ||
| ... | ... | ||
| + | } | ||
| + | </code><code> | ||
| + | |||
| + | ... | ||
| + | |||
| + | node2# drbdadm primary r0 | ||
| + | |||
| + | nodeN# systemctl enable drbd | ||
| </code> | </code> | ||
| + | |||
| ===== Дополнительные материалы ===== | ===== Дополнительные материалы ===== | ||
| + | ==== Debian9 ==== | ||
| + | <code> | ||
| + | debian9# primitive pr_drbd_r0 ocf:linbit:drbd params drbd_resource="r0" op monitor interval="15s" | ||
| + | |||
| + | debian9#order or_fs_after_drbd inf: ms_drbd_r0:promote pr_fs_r0:start | ||
| + | </code> | ||
| + | ==== OCFS2 ==== | ||
| <code> | <code> | ||
| Доброго времени суток. | Доброго времени суток. | ||