설치 및 구성 · 4 min read · Jan 31, 2026

DRBD 및 Heartbeat로 Openfiler 설치 및 구성

DRBD 및 Heartbeat로 Openfiler 설치 및 구성

소개

Openfiler는 SAN/NAS 장치로 사용하기 위해 맞춤화된 고성능 운영 체제입니다. 이 구성은 두 개의 Openfiler 장치가 Active/Passive 고가용성 시나리오에서 작동하도록 합니다.

요구 사항

하드웨어

  • Openfiler의 하드웨어 사양을 충족하는 2 x 박스.
  • 각 박스에 2 x 이더넷 인터페이스
  • Openfiler 2.3 설치 미디어.
  • 두 박스는 복제 불일치를 피하기 위해 동일한 크기의 드라이브를 가져야 합니다.

소프트웨어

다음과 같은 디스크 설정을 사용하여 두 박스에 Openfiler 2.3을 설치합니다:

  • 3 GB 루트 (“/”) 파티션
  • 2 GB “스왑” 파티션
  • 512 MB “/meta” 파티션 (DRBD0에 사용)
  • DRBD1에 사용되는 마운트되지 않은 LVM으로 구성된 데이터 파티션

구성

네트워크

각 Openfiler 장치는 두 개의 NIC를 가집니다: 하나는 LAN과 통신하기 위해, 다른 하나는 다른 SAN과 통신하기 위해 (직접 케이블을 통해). 첫 번째 NIC는 관리에 사용되며, 각 노드와 직접 통신합니다.

세 번째 “가상” 인터페이스는 heartbeat 서비스에 의해 사용되며 LAN의 컴퓨터에서 사용됩니다.

아래는 사용되는 설정입니다:

filer01

  • LAN 인터페이스 (eth0) 192.168.1.18
  • 복제 인터페이스 (eth1) 10.188.188.1

filer02

  • LAN 인터페이스 (eth0) 192.168.1.19
  • 복제 인터페이스 (eth1) 10.188.188.2

HA NAS/SAN 주소 (eth0) 192.168.1.17

  • 이는 cluster.xml 파일에 구성됩니다 (다른 곳에서 구성하지 마십시오)

호스트 이름 설정

두 노드가 서로의 이름을 인식할 수 있도록 각 컴퓨터의 hosts 파일을 구성합니다. / etc/hosts (filer01에서 수정):

# 다음 줄을 제거하지 마십시오. 그렇지 않으면 다양한 프로그램이
# 네트워크 기능이 필요할 때 실패합니다.
127.0.0.1 filer01 localhost.localdomain localhost
10.188.188.2 filer02

/ etc/hosts (filer02에서 수정):

# 다음 줄을 제거하지 마십시오. 그렇지 않으면 다양한 프로그램이
# 네트워크 기능이 필요할 때 실패합니다.
127.0.0.1 filer02 localhost.localdomain localhost
10.188.188.1 filer01

SSH 공유 키

두 Openfiler 장치가 비밀번호 없이 서로 통신할 수 있도록 SSH 공유 키를 사용합니다.

filer01에서:

  root@filer01 ~# ssh-keygen -t dsa

프롬프트에서 Enter를 누릅니다 (키에 비밀번호를 설정하지 마십시오).

filer02에서:

  root@filer02 ~# ssh-keygen -t dsa

프롬프트에서 Enter를 누릅니다 (키에 비밀번호를 설정하지 마십시오).

위 명령은 ~/.ssh/에 “id_dsa.pub”라는 파일을 생성하며, 이는 다른 노드에 복사해야 할 공개 키입니다:

root@filer01 ~# scp .ssh/id_dsa.pub root@filer02:~/.ssh/authorized_keys2
root@filer02 ~# scp .ssh/id_dsa.pub root@filer01:~/.ssh/authorized_keys2

DRBD 구성

DRBD는 두 노드 간의 데이터를 일관되게 유지합니다.

filer01에서:

  root@filer01 ~# mv /etc/drbd.conf /etc/drbd.conf.org

그런 다음 drbd.conf (버전 8)를 다음에 따라 수정합니다:

global {
 # minor-count 64;
 # dialog-refresh 5; # 5초
 # disable-ip-verification;
 usage-count ask;
}

common {
 syncer { rate 100M; }
}

resource cluster_metadata {
 protocol C;
 handlers {
  pri-on-incon-degr "echo O > /proc/sysrq-trigger ; halt -f";
  pri-lost-after-sb "echo O > /proc/sysrq-trigger ; halt -f";
  local-io-error "echo O > /proc/sysrq-trigger ; halt -f";
  # outdate-peer "/usr/sbin/drbd-peer-outdater";
 }
 
 startup {
  # wfc-timeout 0;
  degr-wfc-timeout 120; # 2분.
 }

 disk {
  on-io-error detach;
 }

 net {
  after-sb-0pri disconnect;
  after-sb-1pri disconnect;
  after-sb-2pri disconnect;
  rr-conflict disconnect;
 }

 syncer {
  # rate 10M;
  # after "r2";
  al-extents 257;
 }

 on filer01 {
  device /dev/drbd0;
  disk /dev/sda3;
  address 10.188.188.1:7788;
  meta-disk internal;
 }

 on filer02 {
  device /dev/drbd0;
  disk /dev/sda3;
  address 10.188.188.2:7788;
  meta-disk internal;
 }
}

resource vg0drbd {
 protocol C;
 startup {
  wfc-timeout 0; ## 무한!
  degr-wfc-timeout 120; ## 2분.
 }

 disk {
  on-io-error detach;
 }

 net {
  # timeout 60;
  # connect-int 10;
  # ping-int 10;
  # max-buffers 2048;
  # max-epoch-size 2048;
 }

 syncer {
  after "cluster_metadata";
 }

 on filer01 {
  device /dev/drbd1;
  disk /dev/sda5;
  address 10.188.188.1:7789;
  meta-disk internal;
 }

 on filer02 {
  device /dev/drbd1;
  disk /dev/sda5;
  address 10.188.188.2:7789;
  meta-disk internal;
 }
}

두 호스트는 동일한 drbd.conf가 필요하므로, filer01의 drbd.conf 파일을 filer02로 복사합니다:

  root@filer01 ~# scp /etc/drbd.conf root@filer02:/etc/drbd.conf

/ dev/drbd0 (cluster_metadata) 및 / dev/drbd1 (vg0drbd)에서 메타데이터를 초기화합니다:

root@filer01 ~# drbdadm create-md cluster_metadata
root@filer01 ~# drbdadm create-md vg0drbd
root@filer02 ~# drbdadm create-md cluster_metadata
root@filer02 ~# drbdadm create-md vg0drbd

참고: 위 명령이 파일 시스템을 제로화해야 한다는 오류를 생성하면, 다음 명령을 사용하십시오:

  root@filer01 ~# dd if=/dev/zero of=/dev/sda3

이 명령에 주의하고 올바른 드라이브에서 실행되도록 하십시오.

DRBD 서비스를 시작하기 전에 drbd0에 사용되는 파티션 (drbd.conf 파일의 cluster_metadata 리소스에서)이 이미 마운트되지 않았는지 확인하십시오 (설치 중에 생성된 경우 기본적으로 마운트됩니다).

  root@filer01 ~# umount /dev/sda3

이제 두 호스트에서 DRBD를 시작합니다:

root@filer01 ~# service drbd start
  root@filer02 ~# service drbd start

모든 것이 잘 진행되면, 연결되어야 하며 “service drbd status”를 실행하면 다음과 유사한 출력을 보여야 합니다:

  root@filer1 /# service drbd status

drbd 드라이버가 정상적으로 로드되었습니다; 장치 상태:
버전: 8.0.12 (api:86/proto:86)
GIT-hash: 5c9f89594553e32adb87d9638dce591782f947e3 phil@mescal에 의해 빌드됨, 2008-04-24 13:29:44
m:res cs st ds p mounted fstype
0:cluster_metadata 연결됨 보조/보조 불일치/불일치 C
1:vg0drbd 연결됨 보조/보조 불일치/불일치 C

두 drbd 리소스가 연결되고 두 노드가 보조 상태에 있을 때 (위와 같이), 기본 노드를 설정합니다:

root@filer01 ~# drbdsetup /dev/drbd0 primary -o
root@filer01 ~# drbdsetup /dev/drbd1 primary -o

이것은 다음과 같은 상태 결과를 제공해야 합니다:

  root@filer1 /# service drbd status

drbd 드라이버가 정상적으로 로드되었습니다; 장치 상태:
버전: 8.0.12 (api:86/proto:86)
GIT-hash: 5c9f89594553e32adb87d9638dce591782f947e3 phil@mescal에 의해 빌드됨, 2008-04-24 13:29:44
m:res cs st ds p mounted fstype
… 동기화됨: 17.9% (247232/297152)K
0:cluster_metadata SyncSource? 기본/보조 최신/불일치 C
1:vg0drbd 일시 중지된 동기화? 기본/보조 최신/불일치 C

참고: vg0drbd LVM이 크면 동기화하는 데 오랜 시간이 걸릴 수 있습니다 (하룻밤 정도).

부팅 시 DRBD가 시작되도록 설정합니다:

root@filer01 ~# chkconfig –level 2345 drbd on
root@filer02 ~# chkconfig –level 2345 drbd on

이제 cluster_metadata 파일 시스템을 생성합니다. 이 512 MB 파티션을 사용하여 모든 Openfiler 구성 데이터와 HA에서 사용할 수 있는 서비스 데이터 (예: NFS, iSCSI, SMB)를 저장합니다.

  root@filer01 ~# mkfs.ext3 /dev/drbd0

이 파티션을 /etc/fstab에 추가하지 마십시오. 이는 Heartbeat에 의해 관리됩니다 (곧 구성될 예정입니다).

Share: X/Twitter LinkedIn

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

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