Již mnoho let jsem chtěl vyzkoušet
DRBD pro synchronizaci raw device (/dev/sdb) na druhý server. Něco jako
RAID-1 po síti. V době mého zájmu zájmu o DRBD bylo vše mnohem složitější a bylo nutno kompilovat modul do kernelu. To je dnes mnohem snažší. Za
DRBD® stojí společnost
, LINBIT®, která zajišťuje vývoj, placenou podporua zároveň DRBD pouzívá ve svých storrage technologiích a
produktech.
Využití DRBD pro HA je hnedle
několik. Já jej použiji pro synchronizaci disku na kterém běží
MariaDB databáze, která je využívána pro monitorovací systém
Zabbix.
Pro otestování jsem si vybral Linux Distribuci
CentOS 7.7 do níž je přidán repository
ELRepo.
rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org --httpproxy=http://192.168.42.1:3128
yum install https://www.elrepo.org/elrepo-release-7.0-4.el7.elrepo.noarch.rpm
yum repolist | grep ELRepo
elrepo ELRepo.org Community Enterprise Linux Repository
yum update
yum install -y kmod-drbd90 drbd90-utils
lsmod | grep -i drbd
modprobe drbd
echo drbd > /etc/modules-load.d/drbd.conf
tail -f /var/log/messages
Jan 7 08:26:36 zbx-02 kernel: drbd: initialized. Version: 9.0.20-1 (api:2/proto:86-115)
Jan 7 08:26:36 zbx-02 kernel: drbd: GIT-hash: 7dce3c8be99f4912f1490f9bb37f5aff6c873335 build by mockbuild@, 2019-10-17 20:27:56
Jan 7 08:26:36 zbx-02 kernel: drbd: registered as block device major 147
cat /proc/drbd
version: 9.0.20-1 (api:2/proto:86-115)
GIT-hash: 7dce3c8be99f4912f1490f9bb37f5aff6c873335 build by mockbuild@, 2019-10-17 20:27:56
Hlavní konfigurace DRBD se provádí zde:
vim /etc/drbd.d/global_common.conf
global {
usage-count yes;
}
common {
net {
protocol C;
}
}
protocol A: Asynchronous replication protocol; it’s most often used in long distance replication scenarios.
protocol B: Semi-synchronous replication protocol aka Memory synchronous protocol.
protocol C: commonly used for nodes in short distanced networks; it’s by far, the most commonly used replication protocol in DRBD setups.
Zdroje DRBD se defunuji naříklad takto:
vim /etc/drbd.d/mariadb_data.res
resource zbxdb {
on zbx-01 {
device /dev/drbd0;
disk /dev/sdb;
meta-disk internal;
address 192.168.42.10:7789;
}
on zbx-02 {
device /dev/drbd0;
disk /dev/sdb;
meta-disk internal;
address 192.168.42.20:7789;
}
}
Vytvoření zdroje:
drbdadm create-md zbxdb
initializing activity log
initializing bitmap (160 KB) to all zero
Writing meta data...
New drbd meta data block successfully created.
Nahození synchronizace:
drbdadm up zbxdb
Nastavení primátního sync media:
[root@zbx-01 ~]# drbdadm primary --force zbxdb
Status synchronizace zjistíme takto:
[root@zbx-01 ~]# drbdadm status zbxdb
zbxdb role:Primary
disk:UpToDate
zbx-02 role:Secondary
peer-disk:UpToDate
[root@zbx-02 ~]# drbdadm status zbxdb
zbxdb role:Secondary
disk:UpToDate
zbx-01 role:Primary
peer-disk:UpToDate
Vytvoříme mount point a naformatujeme disk např. pomocí xfs.
mkdir -p /data/mariadb
mkfs.xfs /dev/drbd0
mount -t xfs -o noatime,nodiratime,attr2 /dev/drbd0 /data/mariadb
Veškeré HA služby svěřím aplikacím Corosync a Pacemaker z projektu
ClusterLabs. Společnost LINBIT přispívá do projektu
Pacemaker a tím zajišťuje podporu pro správné volání drbadm. Nadefinováním zdroju clusteru docilim toho, že Zabbix server beží jen na jednim nodu a zároveň i databáze jejíz data (disk) se synchroniyuje na druhý node.
Tato testovací instalace bude v budoucnosti reinstalována na CentOS 8 se Zabbix 4.4, protože novější Zabbix umí monitorovat
raw device a to v tomto případě je velmi zajímavé, protože na node2 pokud není /dev/drbd0 namontován o disku nic nevime.
Monitoring Clusteru se dá snadno realizovat z těchto zdrojů.
https://share.zabbix.com/cat-server-hardware/other/template-drbd
https://github.com/VadimIpatov/zbx_pacemaker
https://github.com/cnshawncao/zabbix-module-mysql
Dále je se třeba zaměřit na performace a patřičně upravit a vylepšit konfiguraci DRBD.
https://docs.linbit.com/docs/users-guide-9.0/#p-performance