èšäºã®ç¿»èš³ã¯ã³ãŒã¹éå§åå€ã«æºåãããŸãã
DRBD (Distributed Replicated Block Device) ã¯ãLinux çšã®åæ£åã§æè»ãªãæ®éçã«è€è£œå¯èœãªã¹ãã¬ãŒãž ãœãªã¥ãŒã·ã§ã³ã§ãã ããŒããã©ã€ããããŒãã£ã·ã§ã³ãè«çããªã¥ãŒã ãªã©ã®ãããã¯ããã€ã¹ã®å 容ãåæ ããŸãã ãµãŒããŒéã XNUMX ã€ã®ã¹ãã¬ãŒãž ããã€ã¹ã«ããŒã¿ã®ã³ããŒãäœæããäžæ¹ã®ã¹ãã¬ãŒãž ããã€ã¹ã«é害ãçºçããå Žåã§ããããäžæ¹ã®ã¹ãã¬ãŒãž ããã€ã¹ã®ããŒã¿ã䜿çšã§ããããã«ããŸãã
ããã¯æ¬¡ã®ãããªãã®ã ãšèšããŸã
åœåãDRBD ã¯äž»ã«é«å¯çšæ§ (HA) ã³ã³ãã¥ãŒã¿ãŒ ã¯ã©ã¹ã¿ãŒã§äœ¿çšãããŠããŸããããããŒãžã§ã³ XNUMX 以éã¯ã¯ã©ãŠã ã¹ãã¬ãŒãž ãœãªã¥ãŒã·ã§ã³ã®å±éã«äœ¿çšã§ããããã«ãªããŸããã
ãã®èšäºã§ã¯ãCentOS ã« DRBD ãã€ã³ã¹ããŒã«ããæ¹æ³ã説æããããã䜿çšã㊠XNUMX ã€ã®ãµãŒããŒéã§ã¹ãã¬ãŒãž (ããŒãã£ã·ã§ã³) ãã¬ããªã±ãŒãããæ¹æ³ãç°¡åã«èª¬æããŸãã ããã¯ãLinux 㧠DRBD ãå§ããã®ã«æé©ãªèšäºã§ãã
ãã¹ãç°å¢
ãã®ã»ããã¢ããã§ã¯ XNUMX ããŒãã®ã¯ã©ã¹ã¿ãŒã䜿çšããŸãã
- ããŒã 1: 192.168.56.101 â tecmint.tecmint.lan
- ããŒã 2: 192.168.56.102 â server1.tecmint.lan
ã¹ããã 1: DRBD ããã±ãŒãžãã€ã³ã¹ããŒã«ãã
DRBD 㯠Linux ã«ãŒãã« ã¢ãžã¥ãŒã«ãšããŠå®è£ ãããŸãã ããã¯ä»®æ³ããã㯠ããã€ã¹çšã®ãã©ã€ããŒã§ãããããã·ã¹ãã ã® I/O ã¹ã¿ãã¯ã®æäžéšã«é 眮ãããŸãã
DRBD 㯠ELRepo ãŸã㯠EPEL ããã€ã³ã¹ããŒã«ã§ããŸãã 以äžã«ç€ºãããã«ãELRepo ããã±ãŒãžçœ²åããŒãã€ã³ããŒãããäž¡æ¹ã®ããŒãã®ãªããžããªãæ¥ç¶ããããšããå§ããŸãããã
# rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
# rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-3.el7.elrepo.noarch.rpm
次ã«ã以äžã䜿çšããŠäž¡æ¹ã®ããŒãã« DRBD ã«ãŒãã« ã¢ãžã¥ãŒã«ãšãŠãŒãã£ãªãã£ãã€ã³ã¹ããŒã«ããå¿ èŠããããŸãã
# yum install -y kmod-drbd84 drbd84-utils
SELinux ãæå¹ã«ãªã£ãŠããå Žåã¯ãDRBD ããã»ã¹ã SELinux å¶åŸ¡ããé€å€ããããã«ããªã·ãŒãæ§æããå¿ èŠããããŸãã
# semanage permissive -a drbd_t
ããã«ãã·ã¹ãã ã§ãã¡ã€ã¢ãŠã©ãŒã« (firewalld) ãå®è¡ãããŠããå Žåã¯ã7789 ã€ã®ããŒãéã§ããŒã¿ãåæã§ããããã« DRBD ããŒã XNUMX ãè¿œå ããå¿ èŠããããŸãã
æåã®ããŒãã«å¯ŸããŠæ¬¡ã®ã³ãã³ããå®è¡ããŸãã
# firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.56.102" port port="7789" protocol="tcp" accept'
# firewall-cmd --reload
次ã«ãXNUMX çªç®ã®ããŒãã«å¯ŸããŠæ¬¡ã®ã³ãã³ããå®è¡ããŸãã
# firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.56.101" port port="7789" protocol="tcp" accept'
# firewall-cmd --reload
ã¹ããã 2: äœã¬ãã«ã¹ãã¬ãŒãžã®æºå
äž¡æ¹ã®ã¯ã©ã¹ã¿ãŒ ããŒãã« DRBD ãã€ã³ã¹ããŒã«ãããã®ã§ããããã«ã»ãŒåããµã€ãºã®ã¹ãã¬ãŒãžé åãããããžã§ãã³ã°ããå¿
èŠããããŸãã ããã¯ãããŒã ãã©ã€ã ããŒãã£ã·ã§ã³ (ãŸãã¯ç©çããŒã ãã©ã€ãå
šäœ)ããœãããŠã§ã¢ RAID ããã€ã¹ã
ãã®èšäºã§ã¯ãdd ã³ãã³ãã䜿çšã㊠2GB ã®ãã¹ã ããã㯠ããã€ã¹ãäœæããŸãã
# dd if=/dev/zero of=/dev/sdb1 bs=2024k count=1024
ããããäž¡æ¹ã®ããŒãã«æ¥ç¶ãããŠãã 1 çªç®ã®ããã㯠ããã€ã¹ (/dev/sdb) äžã®æªäœ¿çšã®ããŒãã£ã·ã§ã³ (/dev/sdbXNUMX) ã§ãããšä»®å®ããŸãã
ã¹ããã 3. DRBD ã®æ§æ
DRBDã¡ã€ã³æ§æãã¡ã€ã«- /etc/drbd.conf
ãè¿œå ã®æ§æãã¡ã€ã«ã¯ãã£ã¬ã¯ããªã«ãããŸãã /etc/drbd.d
.
ã¹ãã¬ãŒãžãã¬ããªã±ãŒãããã«ã¯ãå¿
èŠãªæ§æããã¡ã€ã«ã«è¿œå ããå¿
èŠããããŸã /etc/drbd.d/global_common.conf
ããã«ã¯ãDRBD èšå®ã®ã°ããŒãã«ã»ã¯ã·ã§ã³ãšäžè¬ã»ã¯ã·ã§ã³ãå«ãŸããŠããããªãœãŒã¹ãå®çŸ©ããå¿
èŠããããŸãã .res
ãã¡ã€ã«ã
äž¡æ¹ã®ããŒãã§å ã®ãã¡ã€ã«ã®ããã¯ã¢ãã ã³ããŒãäœæããæ°ãããã¡ã€ã«ãéããŠç·šéããŸããã (ä»»æã®ããã¹ã ãšãã£ã¿ã䜿çšããŠãã ãã)ã
# mv /etc/drbd.d/global_common.conf /etc/drbd.d/global_common.conf.orig
# vim /etc/drbd.d/global_common.conf
äž¡æ¹ã®ãã¡ã€ã«ã«æ¬¡ã®è¡ãè¿œå ããŸãã
global {
usage-count yes;
}
common {
net {
protocol C;
}
}
ãã¡ã€ã«ãä¿åããŠãšãã£ã¿ãéããŸãã
DRBD ã¯ã次㮠XNUMX ã€ã®ç°ãªãã¬ããªã±ãŒã·ã§ã³ ã¢ãŒã (ã€ãŸããXNUMX 段éã®ã¬ããªã±ãŒã·ã§ã³åæ) ããµããŒãããŠããŸãã
- ãããã³ã« A: éåæã¬ããªã±ãŒã·ã§ã³ ãããã³ã«ã é·è·é¢ã¬ããªã±ãŒã·ã§ã³ã®ã·ããªãªã§æããã䜿çšãããŸãã
- ãããã³ã« B: æºåæã¬ããªã±ãŒã·ã§ã³ ãããã³ã«ãŸãã¯åæã¡ã¢ãª ãããã³ã«ã
- ãããã³ã« C: éåžžãçè·é¢ã®ãããã¯ãŒã¯å ã®ããŒãã«äœ¿çšãããŸãã ããã¯ãDRBD èšå®ã§æãäžè¬çã«äœ¿çšãããã¬ããªã±ãŒã·ã§ã³ ãããã³ã«ã§ãã
ãããéèŠã : ã¬ããªã±ãŒã·ã§ã³ ãããã³ã«ã®éžæã¯ãã»ãã¥ãªãã£ãšé 延ãšãã XNUMX ã€ã®å±éèŠçŽ ã«åœ±é¿ããŸãã å¯Ÿç §çã«ãã¹ã«ãŒãããã¯ãéžæããã¬ããªã±ãŒã·ã§ã³ ãããã³ã«ã«å€§ããäŸåããŸããã
ã¹ããã 4: ãªãœãŒã¹ãè¿œå ãã
ãªãœãŒã¹ã¯ãç¹å®ã®è€è£œãããããŒã¿ã»ããã®ããããåŽé¢ãæãå
æ¬çãªçšèªã§ãã ãã¡ã€ã«å
ã§ãªãœãŒã¹ãå®çŸ©ããŸã /etc/drbd.d/test.res
.
äž¡æ¹ã®ããŒãã®ãã¡ã€ã«ã«ä»¥äžãè¿œå ããŸã (å€æ°ãç°å¢ã®å®éã®å€ã«çœ®ãæããããšãå¿ããªãã§ãã ãã)ã
ãã¹ãåã«æ³šæããŠãã ããããããã¯ãŒã¯ ãã¹ãåãæå®ããå¿
èŠããããŸããããã¯ãunaââme ã³ãã³ãã䜿çšããŠååŸã§ããŸãã -n
.
resource test {
on tecmint.tecmint.lan {
device /dev/drbd0;
disk /dev/sdb1;
meta-disk internal;
address 192.168.56.101:7789;
}
on server1.tecmint.lan {
device /dev/drbd0;
disk /dev/sdb1;
meta-disk internal;
address 192.168.56.102:7789;
}
}
}
ããã§ïŒ
- ãã¹ãåã«ã€ããŠ: ãã¹ããããæ§æã¹ããŒãã¡ã³ããé©çšããã on ã»ã¯ã·ã§ã³ã
- test: ããã¯æ°ãããªãœãŒã¹ã®ååã§ãã
- ããã€ã¹/dev/drbd0: DRBD ã«ãã£ãŠç®¡çãããæ°ããä»®æ³ãããã¯ããã€ã¹ã瀺ããŸãã
- ãã£ã¹ã¯/dev/sdb1: ããã¯ãDRBD ããã€ã¹ã®ããã¯ã¢ãã ããã€ã¹ã§ããããã㯠ããã€ã¹ ããŒãã£ã·ã§ã³ã§ãã
- ã¡ã¿ãã£ã¹ã¯: DRBD ãã¡ã¿ããŒã¿ãä¿åããå Žæãå®çŸ©ããŸãã å éšãšã¯ãDRBD ãæ¬çªç°å¢ã®å®éã®ããŒã¿ãšåãç©çäœã¬ãã«ããã€ã¹ã«ã¡ã¿ããŒã¿ãä¿åããããšãæå³ããŸãã
- äœæïŒè©²åœããŒãã®IPã¢ãã¬ã¹ãšããŒãçªå·ã瀺ããŸãã
ãŸãããã©ã¡ãŒã¿ãäž¡æ¹ã®ãã¹ãã§åãå€ãæã€å Žåã¯ããªãœãŒã¹ ã»ã¯ã·ã§ã³ã§çŽæ¥æå®ã§ããããšã«ã泚æããŠãã ããã
ããšãã°ãäžèšã®æ§æã¯æ¬¡ã®ããã«åæ§ç¯ã§ããŸãã
resource test {
device /dev/drbd0;
disk /dev/sdb1;
meta-disk internal;
on tecmint.tecmint.lan {
address 192.168.56.101:7789;
}
on server1.tecmint.lan {
address 192.168.56.102:7789;
}
}
ã¹ããã 5. ãªãœãŒã¹ãåæåããŠèµ·åãã
DRBD ãšå¯Ÿè©±ããã«ã¯ã次ã®ç®¡çããŒã«ã䜿çšããŸã (ã«ãŒãã« ã¢ãžã¥ãŒã«ãšå¯Ÿè©±ããŠãDRBD ãªãœãŒã¹ãæ§æããã³ç®¡çããŸã)ã
- ãã«ãããã : DRBD ã®é«ã¬ãã«ç®¡çããŒã«ã
- drbdsetup: DRBD ããã€ã¹ãããã¯ã¢ãã ããã€ã¹ã«æ¥ç¶ããããã¯ã¢ãã ããã€ã¹ãåæ ããããã« DRBD ããã€ã¹ã®ãã¢ãæ§æããå®è¡äžã® DRBD ããã€ã¹ã®æ§æã確èªããããã®äžäœã¬ãã«ã®ç®¡çããŒã«ã
- Drbdmeta: ã¡ã¿ããŒã¿ç®¡çããŒã«ã
ãã¹ãŠã®åæãªãœãŒã¹æ§æãè¿œå ããåŸãäž¡æ¹ã®ããŒãã§ãªãœãŒã¹ãåŒã³åºãå¿ èŠããããŸãã
# drbdadm create-md test
ã¡ã¿ããŒã¿ ã¹ãã¢ã®åæå
次ã«ããããå®è¡ããå¿ èŠããããŸããããã«ããããªãœãŒã¹ãããã¯ã¢ãã ããã€ã¹ã«æ¥ç¶ãããã¬ããªã±ãŒã·ã§ã³ ãã©ã¡ãŒã¿ãèšå®ããããªãœãŒã¹ããã®ãã¢ã«æ¥ç¶ãããŸãã
# drbdadm up test
ããã§ã³ãã³ããå®è¡ãããš /dev/sdb1
:
# lsblk
ãããã¯ããã€ã¹ã®ãªã¹ã
ãªãœãŒã¹ãç¡å¹ã«ããã«ã¯ã次ãå®è¡ããŸãã
# drbdadm down test
ãªãœãŒã¹ã®ã¹ããŒã¿ã¹ã確èªããã«ã¯ã次ã®ã³ãã³ããå®è¡ããŸã (ãã®æç¹ã§ã¯ãã£ã¹ã¯ã®ã¹ããŒã¿ã¹ãäºæ³ãããããšã«æ³šæããŠãã ãã) äžè²«æ§ããªã/äžè²«æ§ããªã):
# drbdadm status test
OR
# drbdsetup status test --verbose --statistics #for a more detailed status
ãªãœãŒã¹ã®ã¹ããŒã¿ã¹ã確èªãã
æª
ã¹ããã 6: ãã©ã€ã㪠ãªãœãŒã¹/åæããã€ã¹åæãœãŒã¹ãèšå®ãã
ãã®æ®µéã§ãDRBD ã䜿çšããæºåãæŽããŸããã 次ã«ãåæããã€ã¹åæã®ãœãŒã¹ãšããŠã©ã®ããŒãã䜿çšããããæå®ããå¿ èŠããããŸãã
XNUMX ã€ã®ããŒãã®ã¿ã§æ¬¡ã®ã³ãã³ããå®è¡ããŠãæåã®å®å šåæãéå§ããŸãã
# drbdadm primary --force test
# drbdadm status test
ãã©ã€ããªããŒããåæããã€ã¹ãšããŠèšå®ãã
åæãå®äºãããšãäž¡æ¹ã®ãã©ã€ãã®ç¶æ
ã UpToDate ã«ãªããŸãã
ã¹ããã 7: DRBD ã»ããã¢ããã®ãã¹ã
æåŸã«ãã¬ããªã±ãŒããããããŒã¿ãä¿åããããã« DRBD ããã€ã¹ãå¿ èŠã«å¿ããŠæ©èœãããã©ããã確èªããå¿ èŠããããŸãã 空ã®ãã£ã¹ã¯ ããªã¥ãŒã ã䜿çšããããšãæãåºããŠãã ããããã®ãããããã€ã¹äžã«ãã¡ã€ã« ã·ã¹ãã ãäœæãããããããŠã³ãããŠãã¬ããªã±ãŒããããããŒã¿ã®ä¿åã«äœ¿çšã§ãããã©ããã確èªããå¿ èŠããããŸãã
æåã®å®å šåæãéå§ããããŒã (ãã©ã€ããªã®åœ¹å²ãæã€ãªãœãŒã¹ããã) ã§æ¬¡ã®ã³ãã³ãã䜿çšããŠãããã€ã¹äžã«ãã¡ã€ã« ã·ã¹ãã ãäœæããå¿ èŠããããŸãã
# mkfs -t ext4 /dev/drbd0
Drbd ããªã¥ãŒã äžã«ãã¡ã€ã« ã·ã¹ãã ãäœæãã
次ã«ã次ã®ããã«ããŠã³ãããŸã (ããŠã³ã ãã€ã³ãã«é©åãªååãä»ããããšãã§ããŸã)ã
# mkdir -p /mnt/DRDB_PRI/
# mount /dev/drbd0 /mnt/DRDB_PRI/
次ã«ãäžèšã®ããŠã³ã ãã€ã³ãã«ããã€ãã®ãã¡ã€ã«ãã³ããŒãŸãã¯äœæãã次ã®ããã«é·ããªã¹ããäœæããŸãã
# cd /mnt/DRDB_PRI/
# ls -l
Drbd ã¡ã€ã³ ããªã¥ãŒã ã®å
容ããªã¹ãããŸãã
次ã«ãããã€ã¹ãã¢ã³ããŠã³ãã (ããŠã³ããéããŠããªãããšã確èªãããšã©ãŒãé¿ããããã«ã¢ã³ããŠã³ãåŸã«ãã£ã¬ã¯ããªãå€æŽããŸã)ãããŒãã®åœ¹å²ããã©ã€ããªããã»ã«ã³ããªã«å€æŽããŸãã
# umount /mnt/DRDB_PRI/
# cd
# drbdadm secondary test
ããäžæ¹ã®ããŒã (ã»ã«ã³ããªã®åœ¹å²ãæã€ãªãœãŒã¹ãæã€) ããã©ã€ããªã«ãããã®ããŒãã«ããã€ã¹ãæ¥ç¶ããããŠã³ã ãã€ã³ãã®é·ããªã¹ããçºè¡ããŸãã ã»ããã¢ãããæ£åžžã«æ©èœãããšãããªã¥ãŒã ã«ä¿åãããŠãããã¹ãŠã®ãã¡ã€ã«ãååšããã¯ãã§ãã
# drbdadm primary test
# mkdir -p /mnt/DRDB_SEC/
# mount /dev/drbd0 /mnt/DRDB_SEC/
# cd /mnt/DRDB_SEC/
# ls -l
ã»ã«ã³ã㪠ããŒãã§å®è¡ãããŠãã DRBD ã»ããã¢ããã確èªããŠããŸãã
詳现ã«ã€ããŠã¯ã管çããŒã«ã®ãã«ã ããŒãžãåç §ããŠãã ããã
# man drbdadm
# man drbdsetup
# man drbdmeta
ãã«ãïŒ
ãµããªãŒ
DRBD ã¯éåžžã«æè»ã§å€çšéã§ãããããã»ãŒãã¹ãŠã®ã¢ããªã±ãŒã·ã§ã³ã« HA ãè¿œå ããã®ã«é©ããã¹ãã¬ãŒãž ã¬ããªã±ãŒã·ã§ã³ ãœãªã¥ãŒã·ã§ã³ã§ãã ãã®èšäºã§ã¯ãCentOS 7 ã« DRBD ãã€ã³ã¹ããŒã«ããæ¹æ³ã瀺ãããããã¹ãã¬ãŒãž ã¬ããªã±ãŒã·ã§ã³ã«äœ¿çšããæ¹æ³ãç°¡åã«èª¬æããŸããã 以äžã®ãã£ãŒããã㯠ãã©ãŒã ã䜿çšããŠããæ°è»œã«ãæèŠããèãããã ããã
åºæïŒ habr.com