DRBD 설정 · 5 min read · Jan 30, 2026

DRBD 8.3 제3 노드 복제와 Debian Etch

DRBD 8.3 제3 노드 복제와 Debian Etch

DRBD 8.3 + Debian Etch 설치 및 설정 가이드

제3 노드 설정

by Brian Hellman

최근 DRBD 8.3의 출시로 이제 제3 노드 기능이 무료로 제공되는 구성 요소로 포함되었습니다. 이 문서에서는 표준 Debian Etch 설치에서 제3 노드를 설정하는 기본 사항을 다룹니다. 이 튜토리얼의 끝에서 SAN, iSCSI 대상, 파일 서버 또는 데이터베이스 서버로 활용할 수 있는 DRBD 장치를 갖게 될 것입니다.

참고: LINBIT 지원 고객은 섹션 1을 건너뛰고 패키지 저장소를 이용할 수 있습니다.

LINBIT는 제3 노드 솔루션을 호스팅하고 있으며, 자세한 정보는 [email protected]으로 문의하시기 바랍니다.

서문:

설정은 다음과 같습니다:

  • 세 개의 서버: alpha, bravo, foxtrot
  • alpha와 bravo는 기본 및 보조 로컬 노드입니다.
  • foxtrot는 원격 네트워크에 있는 제3 노드입니다.
  • alpha와 bravo는 외부 연결을 위해 192.168.1.x 네트워크(eth0)에 인터페이스가 있습니다.
  • alpha와 bravo 간에는 172.16.6.10 및 .20을 사용하여 복제를 위한 크로스오버 링크가 존재합니다.
  • Heartbeat는 지리적으로 다양한 위치에 있는 재해 복구 노드와 통신하기 위해 192.168.5.2의 가상 IP를 제공합니다.

섹션 1: 소스 설치

이 단계는 3개의 각 노드에서 수행해야 합니다.

전제 조건:

  • make
  • gcc
  • glibc 개발 라이브러리
  • flex 스캐너 생성기
  • 현재 커널의 헤더

다음 명령을 특권 사용자로 입력하여 이러한 종속성을 충족하십시오:

apt-get install make gcc libc6 flex linux-headers-uname -r libc6-dev linux-kernel-headers

종속성이 설치되면 DRBD를 다운로드합니다. 최신 버전은 항상 http://oss.linbit.com/drbd/에서 얻을 수 있습니다. 현재 버전은 8.3입니다.

cd /usr/src/
wget http://oss.linbit.com/drbd/8.3/drbd-8.3.0.tar.gz

다운로드가 완료되면:

  • DRBD 압축 해제
  • 소스 디렉토리로 이동
  • 소스 컴파일
  • DRBD 설치

tar -xzvf drbd-8.3.0.tar.gz
cd /usr/src/drbd-8.3.0/
make clean all
make install

이제 모듈을 로드하고 확인합니다:

modprobe drbd
cat /proc/drbd

version: 8.3.0 (api:88/proto:86-89)
GIT-hash: 9ba8b93e24d842f0dd3fb1f9b90e8348ddb95829 build by root@alpha, 2009-02-05 10:36:11

세 개의 노드 각각에서 이 작업이 완료되면 다음 섹션으로 진행합니다.

섹션 2: Heartbeat 구성

제3 노드를 설정하려면 DRBD 위에 DRBD를 쌓아야 합니다. 제3 노드가 연결할 가상 IP가 필요하며, 이를 위해 간단한 Heartbeat v1 구성을 설정합니다. 이 섹션은 alpha와 bravo에서만 수행됩니다.

Heartbeat 설치:

apt-get install heartbeat

authkeys 파일 편집:

vi /etc/ha.d/authkeys

auth 1
1 sha1 yoursupersecretpasswordhere

파일이 생성되면 파일의 권한을 변경합니다. 이 단계를 따르지 않으면 Heartbeat가 시작되지 않습니다.

chmod 600 /etc/ha.d/authkeys

authkeys 파일을 bravo로 복사:

scp /etc/ha.d/authkeys bravo:/etc/ha.d/

ha.cf 파일 편집:

vi /etc/ha.d/ha.cf
debugfile /var/log/ha-debug
    logfile /var/log/ha-log
    logfacility     local0
    keepalive 1
    deadtime 10
    warntime 5
    initdead 60
    udpport 694
    ucast eth0 192.168.1.10
    ucast eth0 192.168.1.20
    auto_failback off
    node alpha
    node bravo

ha.cf 파일을 bravo로 복사:

scp /etc/ha.d/ha.cf bravo:/etc/ha.d/

haresources 파일 편집, 여기서 생성된 IP는 제3 노드가 참조할 IP입니다.

vi /etc/ha.d/haresources
alpha IPaddr::192.168.5.2/24/eth0

haresources 파일을 bravo로 복사:

scp /etc/ha.d/haresources bravo:/etc/ha.d/

가상 IP를 올리기 위해 두 서버에서 heartbeat 서비스를 시작합니다:

alpha:/# /etc/init.d/heartbeat start
bravo:/# /etc/init.d/heartbeat start

Heartbeat는 새로운 인터페이스(eth0:0)를 올립니다.

참고: Heartbeat가 인터페이스를 올리는 데 최대 1분이 걸릴 수 있습니다.

alpha:/# ifconfig eth0:0

eth0:0 Link encap:Ethernet HWaddr 00:08:C7:DB:01:CC
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1

섹션 3: DRBD 구성

DRBD 구성은 drbd.conf 파일을 통해 이루어집니다. 이 파일은 모든 노드(alpha, bravo, foxtrot)에서 동일해야 합니다. 사용 카운트가 yes로 설정되어 있다는 점에 유의하십시오. 이는 Linbit에 DRBD를 설치했음을 알립니다. 개인 정보는 수집되지 않습니다. 자세한 내용은 이 페이지를 참조하십시오:

global { usage-count yes; }

resource data-lower {
  protocol C;
  net {
    shared-secret "LINBIT";
  }
syncer {
    rate 12M;
}

  on alpha {
    device     /dev/drbd1;
    disk       /dev/hdb1;
    address    172.16.6.10:7788;
    meta-disk  internal;
  }

  on bravo {
    device    /dev/drbd1;
    disk      /dev/hdd1;
    address   172.16.6.20:7788;
    meta-disk internal;
  }
}

  resource data-upper {
  protocol A;
  syncer {
    after data-lower;
    rate 12M;
    al-extents 513;
  }
  net {
        shared-secret "LINBIT";
  }
  stacked-on-top-of data-lower {
        device /dev/drbd3;
        address 192.168.5.2:7788; # Heartbeat에서 제공한 IP
        }

  on foxtrot {
    device     /dev/drbd3;
    disk       /dev/sdb1;
    address    192.168.5.3:7788; # 백업 노드의 공용 IP
    meta-disk  internal;
  }
}

섹션 4: DRBD 장치 준비

이제 구성이 완료되었으므로 alpha와 bravo에서 메타데이터를 생성합니다.

alpha:/usr/src/drbd-8.3.0# drbdadm create-md data-lower

메타데이터 작성 중…
활동 로그 초기화 중
비트맵 초기화되지 않음
새 DRBD 메타데이터 블록이 성공적으로 생성되었습니다.

bravo:/usr/src/drbd-8.3.0# drbdadm create-md data-lower

메타데이터 작성 중…
활동 로그 초기화 중
비트맵 초기화되지 않음
새 DRBD 메타데이터 블록이 성공적으로 생성되었습니다.

이제 alpha와 bravo에서 DRBD를 시작합니다:

alpha:/usr/src/drbd-8.3.0# /etc/init.d/drbd start
bravo:/usr/src/drbd-8.3.0# /etc/init.d/drbd start

하위 레벨 DRBD 장치가 연결되었는지 확인합니다:

cat /proc/drbd

version: 8.3.0 (api:88/proto:86-89)
GIT-hash: 9ba8b93e24d842f0dd3fb1f9b90e8348ddb95829 build by root@alpha, 2009-02-05 10:36:11
0: cs:Connected ro:Secondary/Secondary ds:Inconsistent/Inconsistent 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:19530844

alpha에게 기본 노드가 되도록 지시합니다:

참고: 명령에서 언급한 바와 같이, 이는 bravo의 모든 데이터를 덮어씁니다: 지금은 좋아하는 음료를 가져갈 좋은 시간입니다.

alpha:/# drbdadm – –overwrite-data-of-peer primary data-lower
alpha:/# cat /proc/drbd

version: 8.3.0 (api:88/proto:86-89)
GIT-hash: 9ba8b93e24d842f0dd3fb1f9b90e8348ddb95829 build by root@alpha, 2009-02-05 10:36:11
0: cs:SyncSource ro:Primary/Secondary ds:UpToDate/Inconsistent C r—
ns:3088464 nr:0 dw:0 dr:3089408 al:0 bm:188 lo:23 pe:6 ua:53 ap:0 ep:1 wo:b oos:16442556
[==>……………..] 동기화됨: 15.9% (16057/19073)M
완료: 0:16:30 속도: 16,512 (8,276) K/sec

데이터 동기화가 완료되면 alpha에서 data-upper의 메타데이터를 생성하고, 이어서 foxtrot에서 생성합니다.

리소스는 data-upper이며 –stacked 옵션은 alpha에서만 활성화됩니다.

alpha:~# drbdadm –stacked create-md data-upper

메타데이터 작성 중…
활동 로그 초기화 중
비트맵 초기화되지 않음
새 DRBD 메타데이터 블록이 성공적으로 생성되었습니다.
성공

foxtrot:/usr/src/drbd-8.3.0# drbdadm create-md data-upper

메타데이터 작성 중…
활동 로그 초기화 중
비트맵 초기화되지 않음
새 DRBD 메타데이터 블록이 성공적으로 생성되었습니다.

스택 리소스를 올린 후 alpha를 data-upper의 기본으로 설정합니다:

alpha:/# drbdadm --stacked adjust data-upper

foxtrot:~# drbdadm adjust data-upper
foxtrot:~# cat /proc/drbd

version: 8.3.0 (api:88/proto:86-89)
GIT-hash: 9ba8b93e24d842f0dd3fb1f9b90e8348ddb95829 build by root@foxtrot, 2009-02-02 10:28:37
1: cs:Connected ro:Secondary/Secondary ds:Inconsistent/Inconsistent A 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:19530208

alpha:~# drbdadm –stacked – –overwrite-data-of-peer primary data-upper
alpha:~# cat /proc/drbd

version: 8.3.0 (api:88/proto:86-89)
GIT-hash: 9ba8b93e24d842f0dd3fb1f9b90e8348ddb95829 build by root@alpha, 2009-02-05 10:36:11
0: cs:Connected ro:Primary/Secondary ds:UpToDate/UpToDate C r—
ns:19532532 nr:0 dw:1688 dr:34046020 al:1 bm:1196 lo:156 pe:0 ua:0 ap:156 ep:1 wo:b oos:0
1: cs:SyncSource ro:Primary/Secondary ds:UpToDate/Inconsistent A r—
ns:14512132 nr:0 dw:0 dr:14512676 al:0 bm:885 lo:156 pe:32 ua:292 ap:0 ep:1 wo:b oos:5018200
[=============>……] 동기화됨: 74.4% (4900/19072)M
완료: 0:07:06 속도: 11,776 (10,992) K/sec

다시 음료 시간입니다!

동기화가 완료되면 /dev/drbd3를 통해 DRBD 블록 장치에 접근하십시오. 이는 두 개의 로컬 노드와 원격 제3 노드 모두에 기록됩니다. Heartbeat 구성에서는 /dev/drbd3 장치를 올리기 위해 “drbdupper” 스크립트를 사용할 것입니다. 즐거운 시간 되세요!

DRBD® 및 LINBIT®는 LINBIT, 오스트리아의 등록 상표입니다.

Share: X/Twitter LinkedIn

새 게시물을 받은 편지함에서 받기

스팸은 없습니다. 언제든지 구독 해지 가능합니다.