NFS 서버 설정 · 2 min read · Nov 18, 2025
고가용성 NFS 서버 설정 - 페이지 4
8 heartbeat 설치 및 구성
heartbeat는 이 전체 설정의 제어 인스턴스입니다. server1과 server2에 설치되며, 다른 서버를 모니터링합니다. 예를 들어, server1이 다운되면 server2의 heartbeat가 이를 감지하고 server2가 인수합니다. heartbeat는 또한 server1과 server2에서 NFS 서버를 시작하고 중지합니다. 또한 IP 주소 192.168.0.174를 통해 NFS를 가상 서비스로 제공하여 웹 서버 클러스터 노드가 단일 NFS 서버만 보도록 합니다.
먼저 heartbeat를 설치합니다:
server1/server2:apt-get install heartbeat
이제 heartbeat를 위한 세 개의 구성 파일을 만들어야 합니다. 이 파일들은 server1과 server2에서 동일해야 합니다!
server1/server2:/etc/heartbeat/ha.cf:
| logfacility local0 keepalive 2 #deadtime 30 # USE THIS!!! deadtime 10 bcast eth0 node server1 server2 |
노드 이름으로는 server1과 server2에서 uname -n의 출력을 사용해야 합니다.
server1/server2:/etc/heartbeat/haresources:
| server1 IPaddr::192.168.0.174/24/eth0 drbddisk::r0 Filesystem::/dev/drbd0::/data::ext3 nfs-kernel-server |
첫 번째 단어는 server1에서의 uname -n의 출력이며, server1 또는 server2에서 파일을 생성하든 상관없이 동일합니다! IPaddr 뒤에는 우리의 가상 IP 주소 192.168.0.174를 넣고, drbddisk 뒤에는 여기서 r0인 DRBD 리소스의 리소스 이름을 사용합니다(기억하세요, 이는 /etc/drbd.conf에서 사용하는 리소스 이름입니다 - 다른 것을 사용하는 경우 여기에서도 사용해야 합니다).
server1/server2:/etc/heartbeat/authkeys:
| auth 3 3 md5 somerandomstring |
somerandomstring은 server1과 server2의 두 heartbeat 데몬이 서로 인증하는 데 사용하는 비밀번호입니다. 여기에는 자신의 문자열을 사용하세요. 세 가지 인증 메커니즘 중에서 선택할 수 있습니다. 저는 가장 안전한 md5를 사용합니다.
/etc/heartbeat/authkeys는 root만 읽을 수 있어야 하므로, 다음과 같이 설정합니다:
server1/server2:chmod 600 /etc/heartbeat/authkeys
마지막으로 server1과 server2에서 DRBD와 heartbeat를 시작합니다:
server1/server2:/etc/init.d/drbd start
/etc/init.d/heartbeat start
9 첫 번째 테스트
이제 첫 번째 테스트를 수행할 수 있습니다. server1에서 다음을 실행합니다:
server1:ifconfig
출력에서 가상 IP 주소 192.168.0.174가 나타나야 합니다:
| eth0 Link encap:Ethernet HWaddr 00:0C:29:A1:C5:9B inet addr:192.168.0.172 Bcast:192.168.0.255 Mask:255.255.255.0 inet6 addr: fe80::20c:29ff:fea1:c59b/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:18992 errors:0 dropped:0 overruns:0 frame:0 TX packets:24816 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:2735887 (2.6 MiB) TX bytes:28119087 (26.8 MiB) Interrupt:177 Base address:0x1400 eth0:0 Link encap:Ethernet HWaddr 00:0C:29:A1:C5:9B inet addr:192.168.0.174 Bcast:192.168.0.255 Mask:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 Interrupt:177 Base address:0x1400 lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 inet6 addr: ::1/128 Scope:Host UP LOOPBACK RUNNING MTU:16436 Metric:1 RX packets:71 errors:0 dropped:0 overruns:0 frame:0 TX packets:71 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:5178 (5.0 KiB) TX bytes:5178 (5.0 KiB) |
또한, server1에서 다음을 실행합니다:
df -h
이제 data가 나열되어야 합니다:
| Filesystem Size Used Avail Use% Mounted on /dev/sda5 4.6G 430M 4.0G 10% / tmpfs 126M 0 126M 0% /dev/shm /dev/sda1 89M 11M 74M 13% /boot /dev/drbd0 24G 33M 23G 1% /data |
같은 작업을 server2에서 수행하면:
server2:ifconfig
df -h
server2에서는 192.168.0.174와 /data를 볼 수 없어야 합니다.
이제 server1의 /data/export에 테스트 파일을 생성한 다음, heartbeat를 중지하여 server1의 서버 장애를 시뮬레이션합니다:
server1:touch /data/export/test1
/etc/init.d/heartbeat stop
이제 server2에서 ifconfig와 df -h를 실행하면 192.168.0.174와 /data 파티션이 표시되어야 하며,
server2:ls -l /data/export
이 명령은 이전에 server1에서 생성한 파일 test1을 나열해야 합니다. 따라서 server1에서 server2로 미러링되었습니다!
이제 server2에서 또 다른 테스트 파일을 생성하고, server1이 다시 시작될 때 미러링되는지 확인합니다:
server2:touch /data/export/test2
server1:/etc/init.d/heartbeat start
(몇 초 기다립니다.)
ifconfig
df -h
ls -l /data/export
server1에서 다시 192.168.0.174와 /data를 볼 수 있어야 하며, 이는 다시 인수했음을 의미합니다(우리가 이를 기본으로 정의했기 때문에) 그리고 data/export/test2 파일도 볼 수 있어야 합니다!
새 게시물을 받은 편지함에서 받기
스팸은 없습니다. 언제든지 구독 해지 가능합니다.