設定ガイド · 1 min read · Dec 01, 2025

VMWareサーバーとDebian Etch (4.0)による仮想マシンのレプリケーションとフェイルオーバー - ページ3

4. ハートビートパッケージの設定

ハートビートパッケージをインストールすることで、リソースやハードウェアの障害が発生した場合に自動フェイルオーバーとリソース管理が可能になります。

このチュートリアルでは、ネットワーク経由でハートビートを使用しますが、シリアルケーブルや他の方法でハートビートを使用することも可能です。ハートビートは両方のサーバーからの更新を確認し、更新が受信されなくなると、フェイルオーバーを開始し、指定されたリソース(この場合はDRBDとVMWare)を引き継ぎます。

特に指定がない限り、すべてのコマンドは両方のサーバーで実行されます。

さて、設定に進みましょう。便利なように、以下の設定ファイルをこのチュートリアルに合わせて使用できます。ハートビートを設定するには、”ha.cf”、”haresources”、”authkeys”の3つのファイルが必要です。お好みのエディタでそれらを適宜編集してください:

nano /etc/ha.d/ha.cf
logfile /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/authkeys
auth 3
3 md5 failover  ## これは単なる文字列です。好きなものを入力してください! auth 3 md5はmd5暗号化を使用します

しかし、このファイルは”root”のみが読み取れるようにchmodする必要があります:

chmod 600 /etc/ha.d/authkeys

最後に、フェイルオーバーリソースを含む“haresources”ファイルを編集します。

nano /etc/ha.d/haresources
server1 192.168.0.10 drbddisk::vm1 Filesystem::/dev/drbd0::/var/vm::ext3 vmstart
# 説明:
# プライマリサーバー名 --> 使用される仮想IPアドレス --> /etc/drbd.confで構成されたDRBDリソース
# --> DRBDリソースをマウントする場所とファイルシステムの種類 --> フェイルオーバー時に開始/停止するリソース
# "vmstart"リソースは、VMWareサーバーに必要なカスタムスクリプトです。なぜなら、ハートビートが
# vmwareサービスを制御することはできず、そうすると「このマシン用に構成されていません」という恐ろしいエラーが発生するからです!

さらに進む前に、フェイルオーバー時に仮想マシンが自動的にサーバーで起動することを確認するために、カスタム”vmstart”スクリプトを作成する必要があります。Apache、Mysql、NFSなどの他のリソースでは、rc.dディレクトリからそれらのスタートアップスクリプトを単に削除することができましたが、VMWareでは、サービスの正常な機能に必要なため、これは不可能です。したがって、フェイルオーバー時に仮想マシンを起動するためのカスタムスクリプトが必要です。なぜなら、VMWareサービスはフェイルオーバー前にすでに実行されているからです!

“vmstart”は、ハートビートがそれを確認する場所である”/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を起動するオプションしか持っていないからです。

すべての設定が完了したので、すべてが正常かどうかをテストする時が来ました。最初にサーバー1で、次にサーバー2でハートビートサービスを開始します。

/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  
          ...

さて、運が良ければ、そしてこのチュートリアルを常識を持って進めていれば、今こそその電源コードを引き抜き、コーヒーを持って、仮想マシンが2番目のサーバーでオンラインになるのを見守る時です。

5. リンク

Share: X/Twitter LinkedIn

新しい投稿を受信箱で受け取る

スパムはありません。いつでも購読を解除できます。