반응형
※ DRBD(Distributed Replicated Block Device)
  : 네트워크를 통한 RAID1
  : 블록 디바이스에 대한 변경사항에 대해 데이터 미러링
  : Active/Backup 구성방식이며 Active(읽기/쓰기) 가능 / Backup(읽기/쓰기) 불가능, 블럭 디바이스에 접근할 수 없음
  : Active/Active 구성 방식은 OCFS, GFS등의 클러스터 파일시스템과의 조합에 의해 가능


0. 시스템 정보

A] icluster.kobic.kr[10.1.1.1]

B] icluster2.kobic.kr[10.1.2.1]


1. DRBD 설치

1.1 패키지 설치

A,B] # yum -y install gcc make automake autoconf flex rpm-build kernel-devel

A,B] # cd /usr/local/src/

A,B] # wget http://oss.linbit.com/drbd/drbd-latest.tar.gz

A,B] # tar zxvf drbd-latest.tar.gz 

A,B] # cd drbd-8.4.2

A,B] # mkdir -p /root/rpmbuild/{BUILD,BUILDROOT,RPMS,SOURCES,SPECS,SRPMS}

A,B] # ./configure 

A,B] # make rpm

A,B] # make km-rpm

A,B] # cd /root/rpmbuild/RPMS/x86_64 

A,B] # rpm -Uvh drbd-utils-8.3.11-1.el6.x86_64.rpm drbd-km-2.6.32_220.13.1.el6.x86_64-8.3.11-1.el6.x86_64.rpm 


1.2 YUM 설치

# yum install drbd83 kmod-drbd83



2. LVM 파티션 생성

A,B] # fdisk /dev/sdb

n->p->Partition number (1-4):1->t->Hex code (type L to list codes): 8e->w

A,B] # pvcreate /dev/sdb1 

Writing physical volume data to disk "/dev/sdb1"

Physical volume "/dev/sdb1" successfully created

A,B] # vgcreate vg_opt /dev/sdb1

Volume group "vg_opt" successfully created

A,B] # lvcreate -l 100%FREE -n lv_opt vg_opt

Logical volume "lv_opt" created



3. DRBD 설정

A,B] # vi /etc/drbd.d/global_common.conf

disk {

on-io-error detach;

}

syncer {

rate 300M;

}


A,B] # vi /etc/drbd.d/opt.res 

resource opt {                    ### 리소스 이름 정의

   protocol A;                      ### protocol A : Active에 쓰기 후 Backup으로 데이터 전송완료(성능)

                                        ### protocol B : Active에 쓰기 후 Backup으로 데이터 전송 후 Backup에서 수신완료

                                        ### protocol C : Active, Backup 모두 쓰기 완료(신뢰성)

   device /dev/drbd0;          ### DRBD 논리 블록 디바이스 정의

   disk /dev/vg_opt/lv_opt;   ### 물리 디바이스 지정

   meta-disk internal;           ### 메타 데이터를 저장 할 디바이스 지정

                                        ### internal:/dev/vg_opt/lv_opt에 128MB 메타 정보 저장용으로 할당

   on icluster.kobic.kr {        ### 호스트 리소스 정의, 호스트명 입력

      address 10.1.1.1:7788;   ### IP 및 포트번호 지정

   }

   on icluster2.kobic.kr {

      address 10.1.2.1:7788;

   }

}



4. DRBD 서비스 활성화

A,B] # modprobe drbd

A,B] # drbdadm create-md opt        ### 메타데이터 저장소 생성

A,B] # /etc/rc.d/init.d/drbd start 

A,B] # chkconfig drbd on 

A,B] # echo "/sbin/modprobe drbd" >> /etc/rc.local 


A] # drbdsetup /dev/drbd0 primary -o           ### primary로 변경

A] # mkfs -t ext4 /dev/drbd0


A] # cd /opt

A] # tar zcvfp opt.tgz *

A] # mv opt.tgz /tmp

A] # mount -t ext4 /dev/drbd0 /opt

A] # cd /opt

A] # tar zxvfp /tmp/opt.tgz 


5. 확인

A] # cat /proc/drbd

version: 8.3.11 (api:88/proto:86-96)

GIT-hash: 0de839cee13a4160eed6037c4bddd066645e23c5 build by root@icluster.kobic.kr, 2012-07-05 02:29:58

 0: cs:SyncSource ro:Primary/Secondary ds:UpToDate/Inconsistent C r-----

    ns:10199920 nr:0 dw:2366956 dr:10209145 al:0 bm:622 lo:1 pe:13 ua:64 ap:0 ep:1 wo:b oos:10764380

[========>...........] sync'ed: 48.7% (10512/20468)M

finish: 0:01:02 speed: 171,712 (169,968) K/sec



B] # cat /proc/drbd

version: 8.3.11 (api:88/proto:86-96)

GIT-hash: 0de839cee13a4160eed6037c4bddd066645e23c5 build by root@icluster2.kobic.kr, 2012-07-05 02:54:42

 0: cs:SyncTarget ro:Secondary/Primary ds:Inconsistent/UpToDate C r-----

    ns:0 nr:8850048 dw:8850048 dr:0 al:0 bm:539 lo:2 pe:7494 ua:0 ap:0 ep:1 wo:b oos:12112604

[=======>............] sync'ed: 42.3% (11828/20468)M

finish: 0:01:32 speed: 130,452 (163,888) want: 307,200 K/sec



6. DRBD 장애처리

- DRBD는 마스터 문제 발생 시 자동적으로 백업이 서비스가 되지 않는다.

1) 수동으로 전환하기

1.1) A를 secondary로 전환

A # umount /opt

A # drbdadm secondary opt      ### 모든 장치 secondary로 전환 : drbdadm secondary all

A # cat /proc/drbd

version: 8.3.11 (api:88/proto:86-96)

GIT-hash: 0de839cee13a4160eed6037c4bddd066645e23c5 build by root@icluster.kobic.kr, 2012-07-05 02:29:58

 0: cs:Connected ro:Secondary/Secondary ds:UpToDate/UpToDate C r-----

    ns:0 nr:0 dw:0 dr:0 al:0 bm:0 lo:0 pe:0 ua:0 ap:0 ep:1 wo:b oos:0

 1: cs:Connected ro:Primary/Secondary ds:UpToDate/UpToDate C r-----

    ns:21512412 nr:0 dw:3168852 dr:20706830 al:235 bm:1280 lo:0 pe:0 ua:0 ap:0 ep:1 wo:b oos:


B # drbdadm primary opt    ### opt 장치를 primary로 전환

version: 8.3.11 (api:88/proto:86-96)

GIT-hash: 0de839cee13a4160eed6037c4bddd066645e23c5 build by root@icluster2.kobic.kr, 2012-07-05 02:54:42

 0: cs:Connected ro:Primary/Secondary ds:UpToDate/UpToDate C r-----

    ns:0 nr:0 dw:0 dr:672 al:0 bm:0 lo:0 pe:0 ua:0 ap:0 ep:1 wo:b oos:0

 1: cs:Connected ro:Secondary/Primary ds:UpToDate/UpToDate C r-----

    ns:0 nr:21512412 dw:21512412 dr:0 al:0 bm:1280 lo:0 pe:0 ua:0 ap:0 ep:1 wo:b oos:0

B # mount /dev/drbd0 /opt


7. 기타

1) 최소 Active에서 DRBD를 실행하면 Backup이 없기 때문에 "To abort waiting enter 'yes'"라고 나오면 "yes"를 입력
2) 실행 직 후 기본이 secondary 상태이다. 파일시스템을 생성 하려면 primary 상태로 전환하여야 한다.
  # drbdsetup /dev/drbd0 primary -o


※ 참조 : 서버/인프라를 지탱하는 기술

반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기