This site best when viewed with a modern standards-compliant browser. We recommend Firefox Get Firefox!.

Linux-HA project logo
Providing Open Source High-Availability Software for Linux and other OSes since 1999.

USA Flag UK Flag

Japanese Flag

ホームページ

サイトについて

コンタクト情報

使用条件

協力方法

セキュリティ

This web page is no longer maintained. Information presented here exists only to avoid breaking historical links.
The Project stays maintained, and lives on: see the Linux-HA Reference Documentation.
To get rid of this notice, you may want to browse the old wiki instead.

2010.1.28
追加パッケージ集リニューアル
追加パッケージ集は、こちらから

2008.8.28
RHEL用rpm更新
更新情報はこちらから

2008.8.18
Heartbeat 2.1.4
リリース!
Downloadはこちらから

2007.11.13
Linux-ha-japan日本語ML移植しました

2007.10.5
日本語サイトOPEN
日本語MLも開設しました

2007.10.5
OSC2007 Tokyo/Fall で Heartbeat紹介
発表資料を公開しました

Last site update:
2017-09-23 21:55:34

ha.cfファイル

ha.cf ファイルは、Heartbeatを構成する際に理解しておきたい重要なファイルです。クラスタノード、通信トポロジーなどの機能が含まれています。FineArtOfConfiguringaClusterについては、別途、詳しく見ていただく必要がありますので、ここでは取り上げません。Heartbeatを初めてお使いになる方は、Heartbeat入門に掲載されている資料をご覧ください。

ha.cfのグローバルオプション

ha.cfファイルの特定のオプションはグローバルであり、各命令はha.cfファイルで指定された順に解釈されるため、グローバルオプションの順序はha.cfファイルを構成する上で重要となってきます。

グローバルオプションには、以下のものがあります:

これらのオプションは、ha.cfファイルの先頭に入力してください。特に、ログ関係のエントリを最初に入力することをお勧めします。

各ページのデフォルト値は、このWebサイトをご覧ください。

最小限のha.cfファイル

最小限のha.cfファイルには、1つまたは複数のノード命令、および、1つまたは複数の通信トポロジー(bcastmcastucast、またはシリアル)命令が含まれています。

ha.cf命令のアルファベット順リスト

apiauth - API認証命令

apiauth 命令では、どのユーザー/グループ(またはユーザーとグループ)に特定のAPIグループ名への接続を許可するかを指定します。構文は簡単です:

apiauth apigroupname [uid=uid1,uid2 ...] [gid=gid1,gid2 ...]

uidリスト/gidリスト、またはその両方を指定できます。uidリスト/gidリストは必ず指定してください。両方を指定した場合、uidリストgidリストに含まれていれば、接続が許可されます。

defaultというAPIグループ名には特別な意味があります。これは、APIグループ名のないクライアントと、ほかのapiauth命令で識別されない全てのクライアントグループを許可する際に使用されるものです。

ha.cfファイルで特に指定していない場合には、以下のとおり、特定のサービスにデフォルト認証が提供されます:

サービス

デフォルトのapiauth

ipfail

uid=hacluster

ccm

gid=haclient

ping

gid=haclient

cl_status

gid=haclient

lha-snmpagent

uid=root

crm

uid=hacluster

auto_failback命令 - フェイルバックポリシーの設定

auto_failback オプションでは、リソースを「PrimaryNode_ja:プライマリノードに自動的にフェイルバックするかどうかの設定や、ノード障害が発生または管理者が介入するまでノードを稼働させておく指定ができます。

The possible values for auto_failback are:

  • on - 自動フェイルバックを有効にする

  • off - 自動フェイルバックを無効にする

  • legacy - クラスタ内のノード全てがauto_failbackオプションをサポートしていないシステムで、自動フェイルバックを有効にする

auto_failbackonおよびoff)には、以前の「nice_failback(on)」設定と後方互換性があります。

フラッシュカットなしで「legacy」から「on」に変換する方法(ローリングアップグレードプロセスの使用)については、FAQドキュメントを参照してください。

auto_failbackのデフォルト値は「legacy」です。起動時には警告が表示されてしまいますので、auto_failback命令をha.cfファイルに必ず入力してください(注:auto_failbackには、HeartbeatBoolean値またはlegacyを指定できます)。通常、アクティブ/アクティブクラスタではauto_failback onに、そしてアクティブ/パッシブクラスタではoffに設定します。

: auto_failbackは、リリース2のCRMスタイルクラスタ(crm onで構成したクラスタ)では無効になります。CRMスタイルのクラスタでは、このコマンドはCIBのdefault_resource_stickiness属性に置き換えられました。

autojoin - ノードの自動参加を有効にする

autojoin 命令を使用すると、クラスタと通信するだけでノードを自動的に参加させることができ、ha.cfファイルにnode命令を入力する必要がなくなります。通常、通信は強力に認証されており、クラスタキーを識別するノードだけが(自動的またはその他の方法で)参加できます。

以下は、一般的なautojoin命令の構文です:

autojoin (none|other|any)

以下は、指定可能なautojoin命令です:

autojoin none
autojoin other
autojoin any

autojoin 命令に指定可能な値には、以下の意味があります:

  • none: 自動参加を無効にする。

  • other: ha.cfに含まれない自分以外のノードに自動参加を許可する。つまり、自分のノードはha.cfに含まれていなければならないが、ほかのノードは含まれていなくてもよい。

  • any: ha.cfに含まれない全てのノードに(現在のノードにも)自動参加を許可する。

クラスタと見なされているノードは、hostcacheファイルに保存されています。

autojoinを有効にすると、node命令は無効になり、その場合、hostcacheファイルが効力を持ちます。

baud - シリアル通信速度の設定

baud命令を使用して、シリアル通信の速度を設定します。オペレーティングシステムが対応していれば、9600, 19200, 38400, 57600, 115200, 230400, 460800のいずれかの速度を指定できます。デフォルトの速度は19200です。次に、baud 命令の例を挙げます:

baud 38400

bcast - ブロードキャスト通信パスの構成

bcast 命令を使用して、HeartbeatUDPブロードキャストトラフィックを送信するインターフェースを構成します。複数のインターフェースを1行で指定できます。udpport命令を使用して、これらのブロードキャスト通信に使用するポートを構成します。次に、bcast行の例を挙げます。

bcast eth0 eth1  # on Linux systems
bcast le0        # for Solaris systems

CRM対応クラスタでは、W. Richard Stevens著『Unix Network Programming - Vol 1 - 3rd Edition: The Sockets Networking API』に記載されたフラグメンテーションの問題により、bcast命令はFreeBSDでは動作しません。

20.4 dg_cli Function Using Broadcasting
..
IP Fragmentation and Broadcasts

Berkeley-derived kernels do not allow a broadcast datagram to be fragmented.
If the size of an IP datagram that is being sent to a broadcast address exceeds
the outgoing interface MTU, EMSGSIZE is returned (pp. 233-234 of TCPv2).
This is a policy decision that has existed since 4.2BSD. There is nothing that
prevents a kernel from fragmenting a broadcast datagram, but the feeling is
that broadcasting puts enough load on the network as it is, so there is no need
to multiply this load by the number of fragments.
....
AIX, FreeBSD, and MacOS implement this limitation. Linux, Solaris, and HP-UX
fragment datagrams sent to a broadcast address. 

これは、CRMクラスタが(MTUサイズを超える)大容量のパケットをクラスタ通信メディアで送信しようとすることが原因です。

compression - 圧縮方法の設定

compression 命令では、メッセージが大きくなったり、圧縮が必要になったりする場合に、使用する圧縮方法を設定します。

対応するライブラリがシステムに含まれるかによって、zlibまたはbz2を設定できます。 /usr/lib/heartbeat/plugins/HBcompress をチェックして、使用可能な圧縮モジュールを確認できます。

この命令を設定していない場合、圧縮は行われません。

compression    <bz2/zlib>

compression_threshold - メッセージの圧縮しきい値の設定

compression_threshold 命令では、メッセージを圧縮するしきい値を設定します。例えば、しきい値が1の場合、1 KB以上のメッセージが圧縮されます。デフォルトは2(KB)です。この命令は、compression命令を設定している場合にのみ有効です。

compression_threshold 2

conn_logd_time - ログデーモンに再接続する間隔の設定

The conn_logd_time 命令では、Heartbeatとログデーモンの接続が切断された場合に、Heartbeatがログデーモンに再接続する時間を指定します。conn_logd_timeは、Heartbeatの時間構文に従って指定します。次に例を挙げます。

conn_logd_time 60 #60 seconds

デフォルトは60秒です。

注:Heartbeatは、自動的にはログデーモンに再接続はしません。メッセージをログに記録する必要があり、最後の接続試行からconn_logd_time の時間が経過した場合にのみ、再接続を試みます。

coredumps - コアダンプの保存を有効にする

The coredumps 命令は、コアをダンプする必要がある場合に、Heartbeatコアダンプの作成を有効にするよう指示します。

以下は、一般的なcoredumps 命令の構文です:

coredumps HeartbeatBoolean

以下は、一般的なcoredumps命令の使用例です:

coredumps true
coredumps false

crm - 2.xクラスタマネージャの有効・無効の切り替え

The crm 命令では、Heartbeatが1.xスタイルのクラスタマネージャか、複数のノードをサポートする2.xスタイルのクラスタマネージャのどちらを実行するかを指定します。

構文は簡単ですe:

crm HeartbeatBoolean

ononに設定すると、この命令は以下を自動で定義します:

        apiauth stonithd        uid=root
        apiauth crmd            uid=hacluster
        apiauth cib             uid=hacluster

        respawn hacluster       ccm
        respawn hacluster       cib
        respawn root            stonithd
        respawn root            lrmd
        respawn hacluster       crmd

deadping - pingノードの障害(停止)検出時間の設定

deadping 命令を使用して、Heartbeatがクラスタのpingノードが停止していると判断するまでの時間を指定します。この値を低く設定しすぎると、システムが誤ってpingノードの停止を宣言してしまいます。逆に、この値を高く設定しすぎると、通信障害の検出が遅れます。 deadpingの値は、Heartbeatの時間構文に従って指定します。以下に、deadpingを指定する2つの例を挙げます。

deadping の値は、Heartbeatの時間構文に従って指定します。以下に、deadpingを指定する2つの例を挙げます。

deadping 20    # 20 seconds
deadping 750ms # 750 milliseconds

deadtime - 障害(停止)検出時間の設定

deadtime 命令を使用して、Heartbeatがクラスタのノードが停止していると判断するまでの時間を指定します。この値を低く設定しすぎると、システムが誤ってノードの停止を宣言してしまいます。逆に、この値を高く設定しすぎると、クラスタのノードに障害が発生した後の引き継ぎが遅れます。この重要なパラメータを構成(調整)する方法については、FAQ ドキュメントをご参照ください。

The deadtime の値は、Heartbeatの時間構文に従って指定します。以下に、deadtimeを指定する2つの例を挙げます。

deadtime 10    # 10 seconds
deadtime 250ms # 250 milliseconds (1/4 second)

debug - デバッグレベルの設定

The debug 命令を使用して、システムで実行されるデバッグのレベルを設定します。プロダクションシステムでは、debugレベルをゼロ(オフ)に設定します。これがデフォルトです。デバッグレベルを1以上に設定すると、ログファイルのサイズとシステムのハートビートを高速で送信する機能に影響が生じてしまいます。

システムのデバッグレベルは、-dオプションを使用して、コマンドラインで指定することもできます。さらに、システムのデバッグレベルは、heartbeatプロセスのSIGUSR1およびSIGUSR2シグナルを送信することによって動的に変更できます。SIGUSR1はデバッグレベルを上げ、SIGUSR2はデバッグレベルを下げます。以下に、debug命令の例を挙げます。

debug 0

debugfile - デバッグメッセージ用ファイルの構成

debugfile命令は、バージョン2.xで廃止される予定です。代わりに use_logd命令を有効にしてください。

debugfile 命令では、Heartbeatがデバッグメッセージを書き込むファイルを指定します。

次に、debugfile命令の例を挙げます:

debugfile /var/log/ha-debug

関連項目

ha.cf/UseLogd命令

hbaping命令

Hbaping 命令では、ファイバー・チャンネル・デバイスをPingノードとしてHeartbeatに宣言します。

hbaping 命令の構文は、以下のように簡単です:

hbaping fc-card-name

The fc-card-name は、hbaapiパッケージの一部を構成するhbaapitestプログラムから取った名前です。hbaapitestを実行すると、詳細出力が生成されます。最初の数行に、以下のような行が出力されます:

  • Adapter number 0 is named: qlogic-qla2200-0

ここでは、fc-card-nameqlogic-qla2200-0 です。

配布されているLinux-HAの各バージョンでは、この命令は有効に設定されていません。有効にするには、以下の手順を実行してください:

  • http://hbaapi.sourceforge.net からHBAAPIライブラリのソースを入手します。

  • コンパイルします(tarballに含まれるMakefileは、linuxで動作しません。linux用のMakefileは、ここからダウンロードできます)

  • 生成されたlibHBAAPI.so ファイルを/usr/libにコピーします。

  • hbaapi.hファイルをパッケージから/usr/includeにコピーします。

  • HBAベンダーのHBA(ホストバスアダプタ)専用のベンダー別HBAAPIプラグインを入手してインストールします。
  • Linux-HA(Heartbeat)パッケージを構成、コンパイルして、インストールします。
    • 代替手順として、以下を実行してください:
      1. RPMからHeartbeatをインストールします
      2. 同じバージョンのソースからHeartbeatをコンパイルし、hbaping.soファイルだけを/usr/lib/heartbeat/plugins/HBcommに手動でコピーします

hbgenmethod - Heartbeat通信世代番号の作成方法を指定

hbgenmethod 命令では、Heartbeatが通信世代番号を計算する方法を指定します。これは専門的で分かりにくい命令です。主に、ローカルディスクを持たないファイアウォールと、再起動後も永続的にデータ保存ができないデバイスで使用されるものです。デフォルトでは、Heartbeatの各世代をファイルに保存します。この世代番号は、再生攻撃からの防護に使用されるものです。

以下は、hbgenmethod命令です:

hbgenmethod time
hbgenmethod file # this is the default.

警告

time メソッドを指定すると、問題が発生する恐れがあります。Heartbeatを再起動したときに、ローカル時刻がHeartbeat起動時の時刻よりも早かったり、両方の時刻が一致したりすると、そのノードはクラスタに参加できません。

hopfudge - シリアルポートフォワーディングの最大数を設定

The hopfudge 命令では、パケットが破棄される前に、転送するノード数を制御します。ただし、hopfudgeの値は、システムのノード数に追加されます。デフォルトは1です。

以下に、hopfudge命令の例を挙げます:

hopfudge 1

initdead - 初期のdeadtime検出間隔を設定

initdead パラメータを使用して、Heartbeatを最初に開始したときに、[ja/:ClusterNode_ja:クラスタノード]の停止を宣言するまでの時間を設定します。オペレーティングシステムが適切に動作するまでに通信システムに時間がかかることがあるため、パラメータを高い値に設定する必要があります。initdeadは、Heartbeatの時間構文に従って指定します。以下に、initdead命令の例を挙げます:

initdead 30

一部のスイッチネットワーク環境では、NICがポート接続するときに、必ずスイッチがスパニングツリーアルゴリズムを実行します。完了までに時間がかかりますが、これは接続するNICが別のスイッチである場合にのみ必要となるものです。該当する場合は、特定のNICをスイッチでないものと構成し、接続の遅延を大幅に短縮できます。該当しない場合は、initdeadを引き上げて、この問題を解決する必要があります。

initdeadを低く設定しすぎると、一方のノードが相手ノードを停止していると宣言し、非CRMクラスタではログに「both nodes own XXX resources」と出力されます。

keepalive - heartbeat のキープアライブ間隔を設定

The keepalive 命令では、ハートビートパケットの間隔を設定します。keepaliveは、Heartbeatの時間構文に従って指定します。

以下に、keepalive命令を指定する例を挙げます:

keepalive 100ms

keepalive 2 # 2 seconds

logfacility - syslogのロギングファシリティを構成

logfacility を使用して、メッセージのログ記録に使用するsyslogのロギングファシリティをHeartbeatに指示します。

logfacility の値はオペレーティングシステムによって異なりますが、一般的な値には {auth, authpriv, daemon, syslog, user, local0, local1, local2, local3, local4, local5, local6, local7}などがあります。

以下に、logfacility命令の例を挙げます:

logfacility local7

logfile - ログファイルの構成

logfile命令は、バージョン2.x構成で廃止される予定です。 代わりに、use_logd 命令を有効にしてください。

logfile 命令では、ログファイルを構成します。Heartbeatのデバッグ以外の全てのメッセージは、このファイルに出力されます。

以下に、logfile命令の例を挙げます:

logfile /var/log/ha-log

警告

(syslogのログを使用する代わりに)ログファイルを構成すると、過剰な負荷がかかっているときにHeartbeatが数秒間停止することがあります。これは、システムに要求されるdeadtimeに影響する可能性があります。

関連項目

ha.cf/UseLogd命令

mcast - マルチキャスト通信パスの構成

mcast 命令を使用して、マルチキャスト通信パスを構成します。

以下は、mcast命令の構文です:

mcast dev mcast-group udp-port ttl 0
  • dev - ハートビートを送受信するIPデバイス。

  • mcast-group - 参加するマルチキャストグループ(クラスDマルチキャストアドレス224.0.0.0~239.255.255.255)

最初のバイトを239にします。

  • port - 送受信に使用するUDPポート(udpportと同じ値に設定します)

  • ttl - 送信ハートビートのttl値。これは、マルチキャストパケットが伝播する範囲に影響します(0~255)。現在のサブネットでは1に設定します。必ずゼロ以上に設定してください。

以下に、mcast命令の例を挙げます:

mcast eth0 239.0.0.1 694 1 0

バグ

この命令には、必要なパラメータと不要なパラメータがあります。

関連項目

マルチキャスト, TCP/IPガイド

msgfmt - 通信のメッセージ形式を設定

msgfmt 命令では、Heartbeatが通信で使用する形式を指定します。

msgfmt  <classic/netstring>

デフォルトはclassicです。

  • classic - Heartbeatは、メッセージを文字列に変換して転送します。バイナリ値は、base64ライブラリを使用して変換されます。

  • netstring - バイナリメッセージは直接転送されます。文字列とバイナリ値の変換が行われないのでより効率的です。

分からないときはclassic(デフォルト)を選択してください。

node命令

node命令は、どのマシンがクラスタ内にあるかを通知します。node命令の構文は簡単です:

node nodename1 nodename2 ...

命令のノード名は、マシンの"uname -n"に一致させなければなりません。

1つの命令で複数のノード名を宣言することができます。命令を複数回使用することも可能です。通常、autojoin命令が有効でない場合は、現在のノードも含めた、クラスタ内のノード全てをha.cfファイルに入力します。

2.0.4以降のnode命令は、ハートビートをやり取りするノードが完全に信頼できるわけではありません。過去に、ノードが追加された場合に手動で削除されるまでhostcacheファイル内に残るといった傾向がありました。

関連項目: http://www.osdl.org/developer_bugzilla/show_bug.cgi?id=1226

ping命令

Ping命令では、PingノードHeartbeatに宣言します。

ping 命令の構文は簡単です:

ping ip-address ...

ping命令にあるIPアドレスは独立しているため、各ノードへの接続性は重要です。

ノードのグループが特定の機能を持ち、ノードが存在することで正常な通信が可能な場合は、ping_group命令を使用します。

ping_group命令

Ping group命令は、ha.cfファイルに含まれ、グループPingノードHeartbeatに宣言します。

ping_group命令の構文は簡単です:

ping_group group-name ip-address ...

ping_group命令の各IPアドレスは関連するものと見なされ、任意のノード1つに対する接続性は、自動的にグループに対する接続性と見なされます。

Heartbeatでは、pingグループは、単一のクラスタノード(group-name)と見なされています。グループのメンバーいずれかと通信できる場合には、group-nameメンバーにも到達できます。これは、2台のルーターを使い分けてインターネットに接続する場合や、信頼できるpingノードを見つけられない場合などに役立ちます。

realtime - Heartbeatのリアルタイム機能を有効にする

realtime 命令では、Heartbeatでオペレーティングシステムのリアルタイムスケジュール機能を利用するかどうかを指定します。設定を有効にした場合、Heartbeatはメモリにロックして、優先度をリアルタイム優先度(rtprio命令で設定)へと引き上げます。この機能は主に、システムに不具合を起こし、デバッグに障害をもたらすループをデバッグする際に使用されます。realtimeフラグはHeartbeatBoolean値です。デフォルト値はtrueです。以下に、realtime命令の例を挙げます。

realtime on

respawn - 起動時に実行するHeartbeat用プログラムを指定

The respawn命令を使用して監視プログラムを指定します。このプログラムが100以外のコードで終了すると、自動的に再起動されます。1つ目のパラメータはプログラムを実行するユーザーIDで、2つ目のパラメータは実行するプログラムです。その他のパラメータは、引数としてプログラムに渡されます。

iptailはユーザーのほとんどが実行したいと思うプログラムです。

以下に、respawn命令の例を挙げます:

respawn hacluster /usr/lib/heartbeat/ipfail

セキュリティに関する注: Heartbeatからrootとしてプログラムを実行すると、セキュリティは低くなります(起動後にユーザーIDを変更できる場合を除く)。Heartbeatの付属プログラムをrespawnでrootとして実行する場合は注意してください。

rtprio - Heartbeatのリアルタイム優先度を指定

rtprio 命令を使用して、Heartbeatを実行する優先度を指定します。リアルタイム優先度の異なるプログラムを同時に実行していない場合は、指定する必要はありません。このフィールドの最小値・最大値は、それぞれsched_get_priority_min(SCHED_FIFO)およびsched_get_priority_max(SCHED_FIFO)呼び出しから設定できます。rtprioのデフォルト値は、最小値と最大値の中間です。

以下に、rtprio命令の例を挙げます:

rtprio 5

serial - シリアル通信パスの構成

serial 命令では、指定したシリアルポートを通信に使用するようHeartbeatに命令します。serial命令のパラメータは、最初にキャリアを待機することなくオープンするのに適したttyデバイスの名前です。Linuxでは、これらのポートは/dev/ttySXという名前になっています。

以下に、serial命令の例を挙げます:

serial /dev/ttyS0 /dev/ttyS1     # Linux
serial /dev/cuaa0                # FreeBSD
serial /dev/cua/a                # Solaris

stonith命令

stonith 命令を使用して、Heartbeat(リリース1のみ)のSTONITHを構成します。 ここでは、STONITH構成ファイルをクラスタ内の各マシンに配置してクラスタ内の相手ノードをリセットするのに使用する(単一の)STONITHデバイスの構成を想定しています。

stonith 命令の例

stonith {stonith-device-type} {stonith-configuration-file}

ここでは、{stonith-device-type}は、構成する(対応する)STONITHデバイスのタイプのことです。{stonith-configuration-file}は、このSTONITHデバイスのSTONITH構成情報を入力するファイル名です。

{stonith-device-type}の一覧を表示するには、次のコマンドを発行します:

stonith -L

各種のSTONITHデバイスの構成方法を表示するには、次のコマンドを発行します:

stonith -h

注:このコマンドは、stonith_host命令と相互に排他的に使用するものです。

stonith_host命令

stonith_host命令を使用して、Heartbeat(リリース1のみ)のSTONITHを構成します。 この命令では、クラスタ内のデバイスに関する全てのSTONITH構成情報を(別のファイルではなく)ha.cfファイルに入力します。

この命令を使用して、複数のstonithデバイスを構成できます。以下に、コマンドラインの形式を示します:

stonith_host {hostfrom} {stonith_type} {params...} 
  • {hostfrom} は、stonithデバイスの接続マシンです。「*」は、どのホストからでもアクセス可能であるという意味です。

  • {stonith_type} は、stonithデバイスのタイプです。

  • {params...} は、STONITHデバイスが要求する構成パラメータです。

stonith_host 命令を1回しか実行しない場合は、{hostfrom}に「*」を入力できます。

警告:
ha.cfにstonithデバイスのアクセス情報を入力し、誰でもファイルを読める状態にしておくと、サービス拒否攻撃の標的となる恐れがありま

有効な{stonith-device-type}の一覧を表示するには、次のコマンドを発行します:

stonith -L

各種のSTONITHデバイスの{params...}の一覧を表示するには、次のコマンドを発行します:

stonith -h

注:このコマンドは、stonith命令と相互に排他的に使用するものです。

traditional_compression - 圧縮モードの制御

以下に、一般的なtraditional_compression 命令の構文を示します:

traditional_compression HeartbeatBoolean

以下に、traditional_compression命令の例を挙げます。

traditional_compression false

traditional_compressionfalseに設定することを強くお勧めします。ハートビートのパフォーマンスに重大な影響が生じる恐れがあります。

ucast - ユニキャストHeartbeat通信の構成

ucast 命令では、UDPユニキャスト通信リンクで通信するようにHeartbeatを構成します。

次に、一般的なucast命令の構文を示します:

ucast dev peer-ip-address

ここでは、devとは、ピアとの通信に使用するデバイスで、peer-ip-addressはパケットを送信するIPアドレスです。

これはユニキャスト通信リンクですが、このリンクで送信されたUDPパケットはマルチキャストプロトコルです。

次に、ucast 命令の例を挙げます:

ucast eth0 10.10.10.133

この命令は、eth0インターフェースで10.10.10.133にパケットを 送信します。

ローカルマシンに送信されたucast命令は完全に無視されます。これによって、全てのマシンでha.cf命令が同一になります。

udpport - UDP通信用のポートを指定

udpport 命令では、HeartbeatUDPクラスタ内通信に使用するポートを指定します。この値を変更する理由としては、同じサブネットに複数のbcastクラスタがあること、そして、ローカル設定ポリシーに従ってこのポートがすでに使用されていることの2点が挙げられます。

このパラメータのデフォルト値は、/etc/servicesha-clusterポート(ここにある場合)、または/etc/servicesにha-clusterがある場合は694です。694は、Heartbeat(別名 ha-cluster)用のIANA登録ポート番号です。

次に、udpport命令の例を挙げます。

udpport 694

注: GUIはUDPを使用せず、クラスタ内通信ではないので、GUI通信はこの命令の影響を受けません。

バグ: mcast命令の構文には仕様の間違いがあるため、この命令はmcast通信には適用できません。

use_logd - Heartbeatがログデーモンを使用するかどうかを設定

use_logd 命令では、Heartbeatがログデーモンでメッセージをログに記録するかどうかを指定します。:

use_logd <on/off>

(注:use_logdは、任意のHeartbeatBoolean値をとります)

以下はポリシー関する詳細です:

1. ha.cfdebugfile/logfile/logfacilityのエントリが含まれる場合

  • a) use_logd が設定されていない場合、ログデーモンは使用されません

    b) use_logd がonに設定されている場合、ログデーモンが使用されます

    c) use_logd がoffに設定されている場合、ログデーモンは使用されません

2. ha.cfdebugfile/logfile/logfacilityのエントリが含まれない場合

  • a) use_logd が設定されていない場合、ログデーモンは使用されません

    b) use_logd がonに設定されている場合、ログデーモンが使用されます

    c) use_logd がoffに設定されている場合には、構成エラーが発生します。ログオプション全てをオフにすることはできません

ログデーモンを使用すると、全てのログメッセージがIPCを経由してログデーモンに送信され、ログファイルに書き込まれます。ログデーモンが、何らかの理由により停止した場合、警告メッセージがログに記録され、メッセージが全てログファイルに直接書き込まれます。

ログデーモンを使用する場合、このファイルのha.cfdebugfile/logfile/logfacilityは有効ではありません。ログデーモンの構成ファイルをチェックしてください(デフォルトは/etc/logd.cf))。

use_logdを使用していない場合、ログメッセージは全てログファイルに直接書き込まれます。

ログデーモンは、Heartbeatスクリプトで開始または停止されます。

use_logdを「yes」に設定することをお勧めします。

uuidfrom - ローカルUUIDの生成方法を選択

Heartbeatは、ノード名を変更する必要があっても、ノードを一意に識別するために、システム内のノードごとにUUIDを生成します。このUUIDは、/var/lib/heartbeat/hb_uuidファイルに格納されます。

特定種類のインストール(CDなどの読み取り専用メディアから起動するインストール)では、Heartbeatは生成されたUUIDをディスクに保存することはできません。このような場合には、uuidfrom命令を使用してください。uuidfrom nodenameを指定して、UUIDと同じようにノード名を使用するようHeartbeatに命令します。

以下は uuidfrom 命令です.

uuidfrom file
uuidfrom nodename

warntime - ハートビート遅延の警告時間を設定

warntime 命令を使用して、Heartbeatが「ハートビート遅延」警告を発行するまでの時間を指定します。

warntime の値は、Heartbeatの時間構文に従って指定します。以下に、warntime指定の例を挙げます。

warntime 10    # 10 seconds

warntime命令は、deadtimeの調整に重要です。

watchdog - ウォッチドッグデバイスの構成

watchdog 命令では、ウォッチドッグデバイスを使用するようにHeartbeatを構成します。一部の環境下では、ウォッチドッグデバイスをSTONITHデバイスの代わりに使用することができます。いずれにせよ、STONITHデバイスを使用していない場合には、構成した方が合理的です。必要に応じて、STONITHデバイスに 追加して構成します。

ウォッチドッグデバイスの目的は、Heartbeatが通常の間隔で自らのハートビートを検出できない場合に、マシンをシャットダウンすることです。これによって、スケジューラのバグなどがスプリットブレイン構成になりません。

以下は、watchdog命令の構文です:

watchdog watchdog-device-name

以下に、watchdog命令の例を挙げます:

watchdog /dev/watchdog

Linuxシステムで使用されている一般的なウォッチドッグデバイスは、softdogデバイスです。softdogデバイスは、ソフトウェアによるウォッチドッグデバイスです。通常、/dev/watchdogで参照できます。ただし、これは、ほとんどのUNIXデバイスと同様、「規則」ではなく「規定」です。

ウォッチドッグに関する特別な警告

Heartbeatは、自らの停止を宣言した直後にシステムを再起動するようウォッチドッグデバイスを設定しようとします。

また、正常にシャットダウンしたかどうか確認し、終了した場合は、システムは再起動しないでください。ただし、この動作は管理の対象外となります。これはウォッチドッグ・デバイス・ドライバによって異なります。softdogドライバについては、softdogページの設定方法に関する詳細をご覧ください。

関連情報

haresources, authkeys, ha.cfのデフォルト値, Heartbeatの構成