OpenSource/DRBD

DRBD 설치 및 구성후 데이터 복제

싸비스 2024. 10. 4. 10:38
반응형

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

 

 

 

반응형