NFS 서버 설정 · 5 min read · Jan 30, 2026
DRBD와 Heartbeat를 이용한 고가용성 NFS 서버 설정하기 (Debian 5.0 Lenny)
DRBD와 Heartbeat를 이용한 고가용성 NFS 서버 설정하기 (Debian 5.0 Lenny)
이 HowTo는 Debian 5 (Lenny)와 drbd8, heartbeat를 사용하여 고가용성 NFS 서버를 설정하는 방법을 설명합니다.
저는 며칠 전에 이 설정을 했습니다. 재미로요. 그래서 이 문서를 작성하는 것이 좋겠다고 생각했습니다.
저자 - Vishal Sharma
작성일 - 2010년 3월 9일
버전 - 1.0
면책 조항 - 이 HowTo는 있는 그대로 제공되며, 어떤 종류의 보증도 없습니다. 사용은 본인의 책임 하에 진행하십시오. 이 단계는 저에게 효과가 있었습니다. 따라서 아마도 여러분에게도 효과가 있을 것입니다. 문제가 발생할 경우 아래에 댓글을 남겨주시면 최대한 빨리 해결하도록 하겠습니다.
다음은 수행해야 할 작업의 요약입니다:
1단계. 시스템 준비를 하십시오. 이는 기본 하드웨어 및 소프트웨어를 설정하는 것을 포함합니다. (이 부분은 이 HowTo에서 다루지 않습니다.)
2단계. 필요한 IP 주소를 설정하십시오.
3단계. 필요한 패키지를 설치하십시오.
4단계. 관련 구성 파일을 편집하십시오.
5단계. 시스템을 시작하십시오.
6단계. 실제로 작동하는지 테스트하십시오.
1단계. 시스템 준비하기
저는 이를 위해 3개의 Debian 시스템을 사용하고 있습니다. 모두 표준 기본 설치입니다. 그러나 시스템을 텍스트 모드로 부팅하도록 변경했습니다. 제 기계의 하드웨어가 그렇게 좋지 않기 때문에 명령줄로 작업하는 것을 선호합니다.
각 시스템에는 온보드 네트워크가 있습니다. 일반적으로 프로덕션 시스템에서는 그렇지 않을 수 있습니다. 그러나 제 시스템은 단순히 실험용 설치이기 때문에 성능을 높일 수 있는 장비를 추가할 필요가 없었습니다.
전용 박스를 원하지 않으면 Sun VirtualBox를 사용하여 설정할 수 있습니다. 이렇게 하면 중요한 구성 변경을 하기 전에 시스템 스냅샷을 찍을 수 있는 이점이 있습니다.
여기서의 테스트 설정은 2개의 서버와 1개의 클라이언트를 기반으로 합니다. 제 시나리오에서 이 클라이언트 시스템은 NFS 서버에서 공유를 마운트하는 일반 NFS 클라이언트입니다. 여기서의 설정은 Active/Passive이며 Active/Active가 아닙니다. 따라서 언제든지 활성 시스템이 실패하면 수동 시스템이 인계받습니다.
server01과 server02에는 다음과 같은 2개의 파티션이 있습니다:
/dev/hdb1 - 500GB - /data로 NFS 마운트됩니다.
/dev/hdc1 - 500MB - drbd 메타 데이터를 저장합니다. 최소 128MB가 필요합니다.
이 파티션을 마운트하지 않도록 하십시오. 이는 drbd에 의해 처리됩니다. 파티션을 만들고 그대로 두기만 하십시오. 지금은 포맷이나 마운트가 필요 없습니다.
2단계. 필요한 IP 주소 설정하기
다음은 제가 시스템에 이름을 붙인 방법입니다:
server01 - 192.168.1.2/24 (eth0)
server02 - 192.168.1.3/24 (eth0)
client01 - 192.168.1.4/24 (eth0)
위의 항목이 /etc/hosts 파일에 있어야 이름 해석에 문제가 없습니다. 이는 아마도 가장 좋은 옵션이며, 이를 위해 DNS 서버를 설정하는 번거로움에 빠지지 않기를 바랍니다.
192.168.1.5/24는 제 가상 플로팅 IP 주소입니다. 이는 외부 세계에서 보이는 주소이며 시스템 상태가 변경됨에 따라 시스템 간에 이동합니다.
제 기본 게이트웨이는 192.168.1.1/24로, 제 라우터입니다. 패키지 설치를 위해 인터넷 액세스가 필요합니다.
3단계. 필요한 패키지 설치하기
HA 클러스터가 잘 작동하기 위해 가장 중요한 것은 - 시간입니다. 시스템의 시간이 동일해야 합니다. 이를 보장하기 위해 ntp 패키지가 설치되어 있어야 합니다.
server01# apt-get install ntp ntpdate위의 명령을 server01과 server02에서 수행하십시오.
서버인 server01과 server02에서는 작동을 시작하기 위해 다음 패키지를 설치해야 합니다.
drbd8, 커널 헤더 파일, nfs-server 설치 및 heartbeat. 그래서 제가 한 일은 다음과 같습니다.
server01# apt-get updateserver01# apt-get install linux-headers-`uname -r` drbd8-utils drbd8-source heartbeat nfs-kernel-server(위의 명령은 완료되는 데 시간이 걸릴 수 있습니다.)
설치가 완료되면 다음 명령을 사용하여 커널 drbd 모듈을 만듭니다:
server01# m-a a-i drbd8-source이 명령은 컴파일을 수행하고 drbd 커널 모듈을 만듭니다.
server01# modprobe drbdserver01# lsmod | grep drbd(이 명령은 무언가를 보여줄 것입니다. 아무것도 표시되지 않으면 어딘가에 문제가 있으니 수정해야 합니다.)
부팅 시 nfs가 시작되지 않도록 비활성화합니다. 이는 nfs의 시작 및 종료가 drbd에 의해 처리되므로 시스템이 간섭하지 않도록 하기 위함입니다.
server01# update-rc.d -f nfs-kernel-server removeserver01# update-rc.d -f nfs-common removeserver02에서도 동일한 단계를 수행하십시오.
4단계. 관련 구성 파일 생성/편집하기
다음은 server01과 server02에서 편집해야 할 파일입니다.
NFS 내보내기를 처리하기 위한 - /etc/exports - (server01 및 server02에서):
/data/export 192.168.1.0/255.255.255.0(rw)drbd 구성 - /etc/drbd.conf (server01 및 server02에서):
global {
usage-count yes;
}
common {
syncer { rate 10M; }
}
resource r0 {
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";
}
startup {
degr-wfc-timeout 120; # 2 minutes.
}
disk {
on-io-error detach;
}
net {
}
syncer {
rate 10M;
al-extents 257;
}
on server01 {
device /dev/drbd0;
disk /dev/hdb1;
address 192.168.1.2:7788;
meta-disk /dev/hdc1[0];
}
on server02 {
device /dev/drbd0;
disk /dev/hdb1;
address 192.168.1.3:7788;
meta-disk /dev/hdc1[0];
}
}heartbeat - /etc/ha.d/ha.cf - (server01 및 server02에서):
logfacility local0
keepalive 1
deadtime 10
bcast eth1
auto_failback on
node server01 server02heartbeat 인증 설정 - /etc/heartbeat/authkeys - (server01 및 server02에서):
auth 3
3 md5 your_passwordmd5 대신 sha1을 사용할 수도 있습니다. 이 파일을 root만 읽고 쓸 수 있도록 설정하는 것을 잊지 마십시오.
chmod 600 /etc/heartbeat/authkeys (서버01 및 서버02에서.)
ha 리소스를 사용 가능하게 만들기 위한 - /etc/ha.d/haresources - (server01 및 server02에서):
server01 IPaddr::192.168.1.100
server01 drbddisk::r0 Filesystem::/dev/drbd0::/data::ext3 nfs-kernel-server(참고: server02의 haresources 파일에서 동일한 호스트 이름인 server01을 사용했습니다. 이는 server01이 온라인 상태일 때 server02가 제어를 다시 넘기도록 하기 위함입니다. server02로 남기고 싶다면 위의 호스트 이름을 server02로 변경하십시오.)
위의 모든 작업을 마친 후, drbd 메타 디스크를 초기화하기 위해 다음 명령을 실행하십시오 (server01 및 server02에서):
server01# drbdadm create-md r0 ( r0는 리소스 이름입니다.)
server01# drbdadm up all서버01과 서버02에서 다음 명령을 실행하여 상태를 확인하십시오:
cat /proc/drbd 서버01과 서버02가 모두 Secondary 모드이며 일관성이 없음을 확인할 수 있습니다. 이는 NFS 시스템을 아직 설정하지 않았고 어떤 시스템이 기본 서버가 될지를 정의하지 않았기 때문입니다. 제 경우에는 server01이 기본 서버입니다. 따라서 서버01에서 다음 명령을 실행합니다:
server01# drbdsetup /dev/drbd0 primary -oserver01# mkfs.ext3 /dev/drbd0server01# mkdir /dataserver01# mount -t ext3 /dev/drbd0 /data기본적으로 NFS 서버는 /var/lib/nfs에 마운트 상태와 잠금을 저장하며, 장애 발생 시 이를 유지하고 싶습니다. 따라서 서버01에서 다음을 수행하십시오:
server01# mv /var/lib/nfs/ /data/server01# ln -s /data/nfs/ /var/lib/nfsserver01# mkdir /data/exportserver01# umount /dataserver01# cat /proc/drbd <— 주의 깊게 살펴보면 server01이 이제 기본 시스템임을 알 수 있습니다.
서버02에서 장애 발생 시 인계받기 위해 다음 명령을 실행하십시오.
mkdir /datarm -fr /var/lib/nfsln -s /data/nfs /var/lib/nfs음… 이게 거의 다입니다. 구성 관점에서 완료되었습니다. 이제 시스템을 시작하십시오.
5단계. 시스템 시작하기
서버01과 서버02에서 필요한 서비스를 시작하십시오:
/etc/init.d/drbd start/etc/init.d/heartbeat start위의 작업이 성공적으로 완료되면, server01에 추가 IP - 192.168.1.100이 할당되고 /data가 마운트된 것을 확인할 수 있습니다. /proc/drbd 파일에서 실시간 상태를 확인할 수도 있습니다.
서버02에서는 192.168.1.100과 /data가 보이지 않아야 합니다.
tail -f /var/log/messages그리고 재미를 지켜보십시오.
6단계. 실제로 작동하는지 테스트하기
테스트하는 가장 좋은 방법은 실제로 전원을 끄는 것입니다. server01의 전원을 끄고 server02가 어떻게 인계받는지 확인하십시오. server02에서 인계 로그를 지켜보세요. :)
새 게시물을 받은 편지함에서 받기
스팸은 없습니다. 언제든지 구독 해지 가능합니다.