Node1 IP: 192.168.12.124
Node2 IP: 192.168.12.125
사전작업
패키지 다운로드 받은 후 설치
https://drive.google.com/file/d/1iL_3LTLt1oYe9lxzf5eyVIzuZz74_Yuo/view?usp=drive_link
다운받은 파일 압축해제
tar xvf rocky9.4_drbd8.4.tar.gz
ll
-rw-------. 1 root root 1234 10월 2 09:02 anaconda-ks.cfg
drwxr-xr-x. 2 root root 57 10월 2 13:33 rocky9.4_drbd8.4
-rw-r--r--. 1 root root 860160 10월 2 13:34 rocky9.4_drbd8.4.tar.gz
cd rocky9.4_drbd8.4/
ll
-rw-r--r--. 1 root root 849449 10월 2 13:28 drbd84-utils-9.22.0-1.el9.elrepo.x86_64.rpm
[root@zabbix-cr2 rocky9.4_drbd8.4]# dnf localinstall -y *
drbd 구성에 필요한 Heartbeat 생성 및 hosts 파일 내용 추가
cat /etc/hosts
# Node IP Setting
192.168.12.124 zabbix-cr1
192.168.12.125 zabbix-cr2
# DRBD Network Setting
10.10.11.11 drbd1
10.10.11.12 drbd2
파티션 생성 후 vg, lv 생성
(echo "n"; echo "p"; echo "3"; echo ""; echo ""; echo "t"; echo "3"; echo "8e"; echo "w") | fdisk /dev/sd*
[root@zabbix-cr2 /]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
sda 8:0 0 200G 0 disk
├─sda1 8:1 0 1G 0 part /boot
├─sda2 8:2 0 54G 0 part
│ ├─rl-root 253:0 0 50G 0 lvm /
│ └─rl-swap 253:1 0 4G 0 lvm [SWAP]
└─sda3 8:3 0 145G 0 part
vgcreate vg_data /dev/sda3
lvcreate -n etc-zabbix -L 100M vg_data
lvcreate -n var-lib-pgsql -L 10GB vg_data
lvcreate -n usr-lib-zabbix -L 500M vg_data
lvcreate -n usr-share-zabbix -L 100M vg_data
lvcreate -n etc-httpd -L 1G vg_data
drbd 구성 셋팅 및 모듈 추가
cat <<EOF> /etc/drbd.d/r0.res
resource "r0" {
protocol C;
startup {
wfc-timeout 0; ## Infinite!
degr-wfc-timeout 120; ## 2 minutes.
outdated-wfc-timeout 60; ## 1 minute, or less than degr-wfc-timeout
}
disk {
c-plan-ahead 20;
c-min-rate 1000M;
c-max-rate 1000M;
}
syncer {
rate 1000M;
al-extents 3389;
}
net {
sndbuf-size 0; # 자동으로 조절
max-buffers 36k;
max-epoch-size 8k;
connect-int 10;
ping-int 10; }
volume 0 {
device /dev/drbd1;
disk /dev/vg_data/etc-zabbix;
meta-disk internal;
}
volume 1 {
device /dev/drbd2;
disk /dev/vg_data/var-lib-pgsql;
meta-disk internal;
}
volume 2 {
device /dev/drbd3;
disk /dev/vg_data/usr-lib-zabbix;
meta-disk internal;
}
volume 3 {
device /dev/drbd4;
disk /dev/vg_data/usr-share-zabbix;
meta-disk internal;
}
volume 4 {
device /dev/drbd5;
disk /dev/vg_data/etc-httpd;
meta-disk internal;
}
on zabbix-cr1 { # hostname 1
address 10.10.11.11:7789; # hearbeat IP 1
}
on zabbix-cr2 { # hostname 2
address 10.10.11.12:7789; # heartbeat IP 2
}
}
EOF
modprobe drbd
echo drbd > /etc/modules-load.d/drbd.conf
lsmod | grep -i drbd 0 ## 내용이 나오면 정상
drbd 638976
libcrc32c 16384 5 nf_conntrack,nf_nat,nf_tables,xfs,drbd
모든 노드에서 방화벽 포트 오픈
firewall-cmd --add-port=7789/tcp –permanent
firewall-cmd --reload
* 마스터 노드에서만 진행
drbdadm create-md r0
drbdadm up r0
drbdadm primary r0 --force
drbdadm -- --overwrite-data-of-peer primary all
drbdadm outdate r0
mkfs.xfs -f /dev/drbd1
mkfs.xfs -f /dev/drbd2
mkfs.xfs -f /dev/drbd3
mkfs.xfs -f /dev/drbd4
mkfs.xfs -f /dev/drbd5
* 마스터노드 작업 후 슬레이브 노드에서 진행
drbdadm create-md r0
drbdadm up r0
drbdadm secondary all
DRBD 상태 확인 및 복제중인 상황
[root@zabbix-cr1 ~]# drbdadm status
r0 role:Secondary
volume:0 disk:Inconsistent
volume:1 disk:Inconsistent
volume:2 disk:Inconsistent
volume:3 disk:Inconsistent
volume:4 disk:Inconsistent
peer role:Secondary
volume:0 replication:SyncTarget peer-disk:UpToDate done:72.03
volume:1 replication:SyncTarget peer-disk:UpToDate done:0.68
volume:2 replication:SyncTarget peer-disk:UpToDate done:8.40
volume:3 replication:SyncTarget peer-disk:UpToDate done:0.00
volume:4 replication:SyncTarget peer-disk:UpToDate done:0.00
DRBD 데이터 동기화 완료된 상태
[root@zabbix-cr1 ~]# drbdadm status
r0 role:Primary
volume:0 disk:UpToDate
volume:1 disk:UpToDate
volume:2 disk:UpToDate
volume:3 disk:UpToDate
volume:4 disk:UpToDate
peer role:Secondary
volume:0 replication:Established peer-disk:UpToDate
volume:1 replication:Established peer-disk:UpToDate
volume:2 replication:Established peer-disk:UpToDate
volume:3 replication:Established peer-disk:UpToDate
volume:4 replication:Established peer-disk:UpToDate
primary 데이터 복제 확인
[root@zabbix-cr1 /]# mount /dev/drbd5 /etc/httpd
[root@zabbix-cr1 /]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
sda 8:0 0 200G 0 disk
├─sda1 8:1 0 1G 0 part /boot
├─sda2 8:2 0 54G 0 part
│ ├─rl-root 253:0 0 50G 0 lvm /
│ └─rl-swap 253:1 0 4G 0 lvm [SWAP]
└─sda3 8:3 0 145G 0 part
├─vg_data-etc--zabbix 253:2 0 100M 0 lvm
│ └─drbd1 147:1 0 100M 0 disk
├─vg_data-var--lib--pgsql 253:3 0 10G 0 lvm
│ └─drbd2 147:2 0 10G 0 disk
├─vg_data-usr--lib--zabbix 253:4 0 500M 0 lvm
│ └─drbd3 147:3 0 499.9M 0 disk
├─vg_data-usr--share--zabbix 253:5 0 100M 0 lvm
│ └─drbd4 147:4 0 100M 0 disk
└─vg_data-etc--httpd 253:6 0 1G 0 lvm
└─drbd5 147:5 0 1023.9M 0 disk /etc/httpd
[root@zabbix-cr1 /]# cd /etc/httpd
[root@zabbix-cr1 httpd]# ll
drwxr-xr-x 2 root root 25 10월 3 17:32 conf.d
drwxr-xr-x 2 root root 51 10월 3 17:27 conf.modules.d
# 테스트용으로 파일 이동
[root@zabbix-cr1 /]# cp -r localrepo/ /etc/httpd/
[root@zabbix-cr1 httpd]# ll
drwxr-xr-x 2 root root 25 10월 3 17:32 conf.d
drwxr-xr-x 2 root root 51 10월 3 17:27 conf.modules.d
drwxr-xr-x 3 root root 20 10월 4 10:02 localrepo
# secondary node에서 확인을 위해 primary -> secondary 변경, secondary -> primary 변경
# secondary 로 변경전 반드시 mount 해제 해야함
[root@zabbix-cr1 /]# umount /etc/httpd
[root@zabbix-cr1 /]# drbdadm secondary r0
[root@zabbix-cr2 /]# drbdadm primary r0
[root@zabbix-cr2 /]# mount /dev/drbd5 /etc/httpd
[root@zabbix-cr2 /]# cd /etc/httpd
[root@zabbix-cr2 httpd]# ll
drwxr-xr-x. 2 root root 25 10월 3 17:32 conf.d
drwxr-xr-x. 2 root root 51 10월 3 17:27 conf.modules.d
drwxr-xr-x. 3 root root 20 10월 4 10:02 localrepo
secondary node에서 데이터가 복제된 것을 확인되면 drbd 구성 끝입니다
다음에는 pacemaker 를 이용하여 더 안전하고 편리한 방식으로 구현하는 방법을 안내해보도록 하겠습니다
오픈 톡방도 운영 중이니 정보 공유 및 그 외 질문 등 많은 소통하러 오세요 ㅎㅎ
https://open.kakao.com/o/gffATvVf
서버/네트워크/인프라/클라우드 엔지니어 모임
#레드햇자격증 #rhcedump #rhcsadump #ansible #rhel #cloud #devops #vdi #vmware #aws
open.kakao.com