User Tools

Site Tools


решение_drbd

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
решение_drbd [2020/04/14 16:37]
val
решение_drbd [2022/11/24 16:08] (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]]
 ===== Подготовка узлов ===== ===== Подготовка узлов =====
  
Line 8: Line 9:
  
 <​code>​ <​code>​
-root@nodeN:​~# ​lshw -C disk+root@nodeN:​~# ​lsblk
  
 root@nodeN:​~#​ mkdir /disk2 root@nodeN:​~#​ mkdir /disk2
Line 15: Line 16:
 ===== Установка и настройка ===== ===== Установка и настройка =====
  
-  * В Debian ​10 потянет ​exim+  * В Debian ​для использования postfix ​надо предварительно [[Сервис MTA#​Установка и настройка MTA на обработку почты домена hostname]] 
 +  * В Ubuntu postfix по умолчание,​ запустится визард
  
 <​code>​ <​code>​
 +Лучше на каждом узле отдельно
 +
 root@nodeN:​~#​ apt install drbd-utils 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 43: Line 43:
                 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>​
-**Одновременно на двух узлах**+**одновременно на двух узлах**
 <​code>​ <​code>​
 root@nodeN:​~#​ service drbd start root@nodeN:​~#​ service drbd start
Line 57: Line 61:
 </​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 105: Line 126:
  
 <​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 115: Line 138:
 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 132: Line 162:
   * [[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
Line 146: Line 177:
  
 commit commit
-exit+quit
 </​code><​code>​ </​code><​code>​
 node1# crm status node1# crm status
  
 node1# cat /proc/drbd node1# cat /proc/drbd
 +</​code>​
  
 +  * Можно использовать для [[Сервис iSCSI#iSCSI target]]
 +==== Монтирование раздела ====
 +<​code>​
 node1# crm configure node1# crm configure
 </​code><​code>​ </​code><​code>​
Line 161: Line 196:
  
 commit commit
-exit+quit
 </​code><​code>​ </​code><​code>​
-node1# crm resource move pr_fs_r0 node1.corpX.un+node1# mount | grep ext 
 +</​code>​ 
 + 
 +==== Перемещение раздела ==== 
 + 
 +<​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 show
  
 node1# crm configure delete cli-prefer-pr_fs_r0 node1# crm configure delete cli-prefer-pr_fs_r0
- 
-node1# mount | grep ext 
 </​code>​ </​code>​
  
Line 183: Line 224:
 nodeZ# service pacemaker start nodeZ# service pacemaker start
  
-node1# crm resource cleanup pr_fs_r0+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>​ 
 +resource r0 { 
 +... 
 +        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>​
  
решение_drbd.1586871447.txt.gz · Last modified: 2020/04/14 16:37 by val