가상화 · 2 min read · Dec 01, 2025
VMWare 서버 및 Debian Etch (4.0)로 가상 머신 복제 및 장애 조치 - 페이지 3
4. Heartbeat 패키지 구성
Heartbeat 패키지를 설치하면 리소스 및/또는 하드웨어 장애가 발생할 경우 자동 장애 조치 및 리소스 관리가 가능해집니다.
이 튜토리얼에서는 네트워크를 통한 Heartbeat를 사용할 것이지만, 직렬 케이블 및 기타 방법으로 Heartbeat를 사용하는 것도 가능합니다. Heartbeat는 두 서버에서 업데이트를 확인하고, 더 이상 업데이트를 받지 못하면 장애 조치를 시작하고 지정된 리소스(우리의 경우 DRBD 및 VMWare)를 인수합니다.
특별히 명시되지 않는 한, 모든 명령은 두 서버에서 수행됩니다.
자, 이제 구성으로 넘어갑니다. 편의를 위해 이 튜토리얼에 맞게 조정된 다음 구성 파일을 사용할 수 있습니다. Heartbeat를 구성하려면 3개의 파일이 필요합니다: “ha.cf”, “haresources” 및 “authkeys”. 좋아하는 편집기로 적절히 수정하세요:
nano /etc/ha.d/ha.cflogfile /var/log/ha-log
logfacility local0
keepalive 1
deadtime 10
warntime 10
udpport 694
bcast
eth1
auto_failback off
node server1 ## 두 이름이 모두 접근 가능해야 합니다 - /etc/hosts 확인
node server2
ping 192.168.0.254 ## ETH0 네트워크에서 ping이 가능한 IP 주소를 입력하세요 !!
respawn hacluster /usr/lib/heartbeat/ipfail참고: 이 ha.cf 파일은 ETH0의 네트워크 연결 실패 및/또는 일반 서버 실패 시 장애 조치를 활성화합니다. ETH1의 문제는 장애 조치를 발생시키지 않습니다!
이제 “authkeys” 파일을 수정합니다:
nano /etc/ha.d/authkeysauth 3
3 md5 failover ## 이것은 단순한 문자열입니다, 원하는 것을 입력하세요! auth 3 md5는 md5 암호화를 사용합니다.하지만 이 파일의 권한을 “root”만 읽을 수 있도록 chmod 해야 합니다:
chmod 600 /etc/ha.d/authkeys마지막으로, 장애 조치 리소스를 포함하는 “haresources” 파일을 수정합니다.
nano /etc/ha.d/haresourcesserver1 192.168.0.10 drbddisk::vm1 Filesystem::/dev/drbd0::/var/vm::ext3 vmstart
# 설명:
# 기본 서버 이름 --> 사용될 가상 IP 주소 --> /etc/drbd.conf에 구성된 DRBD 리소스
# --> DRBD 리소스를 마운트할 위치 및 파일 시스템 유형 --> 장애 조치 시 시작/중지할 리소스
# "vmstart" 리소스는 VMWare 서버에 필요한 사용자 정의 스크립트입니다. Heartbeat가
# vmware 서비스를 제어하도록 할 수 없으므로 "이 머신에 대해 구성되지 않음" 오류가 발생합니다!더 나아가기 전에, 장애 조치 시 가상 머신이 서버에서 자동으로 시작되도록 하기 위해 사용자 정의 “vmstart” 스크립트를 생성해야 합니다. Apache, Mysql, NFS와 같은 다른 리소스의 경우 rc.d 디렉토리에서 시작 스크립트를 간단히 제거할 수 있었지만, VMWare는 서비스의 정상 작동에 필요하므로 그렇게 할 수 없습니다. 따라서 VMWare 서비스가 장애 조치 전에 이미 실행되고 있기 때문에 장애 조치 시 가상 머신을 시작하기 위한 사용자 정의 스크립트가 필요합니다!
“vmstart”는 Heartbeat가 이를 확인할 위치인 “/etc/ha.d/resource.d/“ 폴더에 있어야 합니다.
nano /etc/ha.d/resource.d/vmstart#!/bin/bash
case "$1" in
start)
/usr/bin/vmware-cmd -s register "/var/vm/'가상 머신 이름'/'vm 구성 파일'.vmx" 2>/dev/null
/usr/bin/vmware-cmd "/var/vm/'가상 머신 이름'/'vm 구성 파일'.vmx" start 2>/dev/null
;;
stop)
/usr/bin/vmware-cmd "/var/vm/'가상 머신 이름'/'vm 구성 파일'.vmx" stop trysoft 2> /dev/null
;;
status)
if `/usr/bin/vmware-cmd "/var/vm/'가상 머신 이름'/'vm 구성 파일'.vmx" getstate 2>/dev/null | grep -q "getstate() = on"`
then
echo "running"
else
echo "stopped"
fi
;;
*)
echo "Usage: `basename $0` '가상 머신 파일' {start|stop|status}"
echo "여기서 '가상 머신 파일'은 /var/vm/'가상 머신 이름'/'vm 구성 파일'.vmx와 같습니다."
;;
esac
exit 0‘가상 머신’ 이름과 ‘vm 구성 파일’ 지시어를 필요한 정보로 채우세요(확인: /var/vm 디렉토리). 여러 개의 가상 머신이 있는 경우, 해당 줄을 복사하면 됩니다.
이 사용자 정의 스크립트는 먼저 가상 머신을 등록합니다(새로 설치된 서버를 사용할 때 필요!) 그리고 그들을 시작합니다. 이렇게 해야 하는 이유는 VMWare 서버가 시스템 시작 시 VM을 자동으로 시작하는 옵션만 제공하기 때문입니다.
이제 모든 구성을 완료했으니, 모든 것이 정상인지 테스트할 시간입니다. Heartbeat 서비스를 시작하세요. 먼저 Server1에서, 그 다음 Server2에서 시작합니다.
/etc/init.d/heartbeat start모든 것이 정상이라면, 마스터 서버에서 새로운 가상 IP가 표시되어야 합니다.
ifconfig |more출력:
eth0 Link encap:Ethernet HWaddr 00:11:09:00:BB:5D
inet addr:192.168.0.1 Bcast:192.168.0.255 Mask:255.255.255.0
inet6 addr: fe80::211:9ff:fe00:bb5d/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:1025774 errors:0 dropped:0 overruns:0 frame:0
TX packets:227653 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:281072399 (268.0 MiB) TX bytes:56403081 (53.7 MiB)
eth0:0 Link encap:Ethernet HWaddr 00:11:09:00:BB:5D
inet addr:192.168.0.10 Bcast:192.168.0.255 Mask:255.255.255.0
...좋습니다, 만약 운이 좋고 이 튜토리얼을 상식적으로 따라왔다면, 이제 전원 코드를 뽑고 커피를 들고 두 번째 서버에서 가상 머신이 온라인으로 전환되는 것을 지켜보세요.
5. 링크
- Debian: http://www.debian.org
- 고가용성 리눅스 프로젝트: http://www.linux-ha.org
- DRBD: http://www.drbd.org
- VMware 서버: http://www.vmware.com/products/server
- VMware 어플라이언스 디렉토리 http://www.vmware.com/vmtn/appliances/
새 게시물을 받은 편지함에서 받기
스팸은 없습니다. 언제든지 구독 해지 가능합니다.