Recent Changes

2011-05-06
2011-02-22
2011-02-18
2011-02-16
2011-02-15

Latest File Release

[1-01] Pacemakerリポジトリパッケージ (RHEL7) (1.1.19-1.1)2018-12-07 13:00
[1-02] Pacemakerリポジトリパッケージ (RHEL6) (1.1.19-1.1)2018-12-07 13:00
[1-03] Pacemakerリポジトリパッケージ (RHEL5) (1.0.13-2.1)2014-08-13 09:28
[1-10] pm_ctl : 運用管理連携機能 (1.0-1)2012-11-05 11:20
[1-11] pm_logconv-cs : ログメッセージ制御機能(Corosync対応) (1.0-1)2012-11-12 09:53
[2-01] Heartbeat (RedHat/CentOS用rpmパッケージ) (2.1.4-1)2008-08-28 09:53
[2-02] hb-monitor:クラスタ状態表示機能 (1.03-1)2011-02-16 07:21
[2-03] hb-extras:拡張リソースエージェント・プラグイン (1.02-1)2011-02-16 07:21
[2-04] hb-logconv:ログメッセージ制御機能 (1.02-1)2011-02-16 07:21
[2-05] hb-cibgen:cib.xml編集ツール (1.03-1_1)2009-11-16 13:31
[2-06] hb-diskd:ディスク監視デーモン (1.10-1)2010-01-22 10:20
[2-07] VIPcheck:VIPcheckリソースエージェント (1.1)2009-11-30 07:21
[2-08] hb-sfex:共有ディスク排他制御 (1.30-1)2010-01-22 10:00
[2-09] hb-logmoni:ロギングデーモン監視 (2.00-1)2010-01-22 10:10
[2-10] hb-ipv6:IPv6対応追加パッケージ (1.00-1)2010-01-29 07:21
[2-11] hb-vmmonitor:デバイス一括監視機能 (1.00-1)2010-06-11 07:21
[2-12] vm-logd-monitor:ログデーモン監視機能(Domain-0用) (1.00-1)2010-06-11 07:21
[2-13] stonith-wrapper2:STONITHラッパープラグイン2 (2.00)2010-06-18 07:21
[2-14] hb-actmonitor:フェイルオーバ抑止機能 (1.00-1)2010-11-26 07:21

Wiki Guide

Side Bar

IPv6対応追加パッケージ (hb-ipv6)

Heartbeat-2.1.4 の標準パッケージでは、IPv6環境で使用する場合一部不具合があります。 本パッケージをインストールする事により、IPv6環境で pingdによる経路監視、IPv6addrリソースエージェントを使用する事ができます。

このリリースのファイルを表示

インストール

rpmパッケージからのインストール

本パッケージは、Heartbeat 2.1.4がインストールされていることが前提となります。Heartbeat 2.1.4がインストールされていない場合は、先にインストールしてください。ここでの説明は64bit環境を前提としています。32bit環境では適宜読み替えをお願いします。

本ツールのパッケージ hb-ipv6-1.00-1.hb214.x86_64.rpm をダウンロードします。その後、以下のようにrpmコマンドを使ってインストールします。

# rpm -ivh hb-ipv6-1.00-1.hb214.x86_64.rpm
Preparing...                ########################################### [100%]
   1:hb-ipv6                ########################################### [100%]

rpmを使ってインストールした場合、ファイルは /usr/lib64/heartbeat/hb-extras/ に配置されます。
Heartbeatの所定のディレクトリからシンボリックリンクが張られ、動作可能な状態となっています。

# ls /usr/lib64/heartbeat/hb-extras/
IPv6addr  pingd
# ls -l /usr/lib64/heartbeat/pingd
lrwxrwxrwx 1 root root 36  2月  3 13:27 /usr/lib64/heartbeat/pingd -> /usr/lib64/heartbeat/hb-extras/pingd
# ls -l /usr/lib/ocf/resource.d/heartbeat/IPv6addr
lrwxrwxrwx 1 root root 39  2月  3 13:27 /usr/lib/ocf/resource.d/heartbeat/IPv6addr -> /usr/lib64/heartbeat/hb-extras/IPv6addr

ソースファイルからrpmを作成する方法

ソースコードからrpmパッケージを作成する手順を以下に示します。

必要資材

rpmを作成するために必要となる資材は、以下になります。

  • パッチファイル(主にpingd、IPv6addrに対するパッチ): hb-ipv6-1.00-1.hb214.patch.gz
  • Heartbeat2.1.4のソースコードアーカイブ(※) : Heartbeat-STABLE-2-1-STABLE-2.1.4.tar.gz
※以下のURLからダウンロードできます。
http://hg.linux-ha.org/lha-2.1/archive/STABLE-2.1.4.tar.gz

作成手順

ここでは/home/hacluster/rpmディレクトリ配下でrpmを作成するものとしています。

(1) .rpmmacrosファイルを作成します
rpmを作成するユーザのホームディレクトリ直下に以下の内容からなる.rpmmacrosファイルを作成します。

%_topdir /home/hacluster/rpm
%_tmppath /home/hacluster/rpm/tmp
%debug_package %{nil}

(2) 必要なディレクトリを作成します

$ mkdir -p /home/hacluster/rpm/BUILD
$ mkdir -p /home/hacluster/rpm/RPMS/i386
$ mkdir -p /home/hacluster/rpm/RPMS/x86_64
$ mkdir -p /home/hacluster/rpm/SOURCES
$ mkdir -p /home/hacluster/rpm/SPECS
$ mkdir -p /home/hacluster/rpm/SRPMS
$ mkdir -p /home/hacluster/rpm/tmp

(3) Heartbeatのソースコードアーカイブを配置します

$ cp -p Heartbeat-STABLE-2-1-STABLE-2.1.4.tar.gz /home/hacluster/rpm/SOURCES

(4) パッチファイルを解凍します

$ gunzip hb-ipv6-1.00-1.hb214.patch.gz

(5) パッチファイルを配置します

$ cp -p hb-ipv6-1.00-1.hb214.patch /home/hacluster/rpm/SOURCES

(6) Heartbeatのソースコードアーカイブを展開します

$ cd /home/hacluster/rpm/SOURCES
$ tar xfz Heartbeat-STABLE-2-1-STABLE-2.1.4.tar.gz

(7) パッチを適用します

$ cd /home/hacluster/rpm/SOURCES
$ patch -p1 -d Heartbeat-STABLE-2-1-STABLE-2.1.4 < hb-ipv6-1.00-1.hb214.patch

(8) ソースをconfigureします

$ cd /home/hacluster/rpm/SOURCES/Heartbeat-STABLE-2-1-STABLE-2.1.4
$ ./ConfigureMe bootstrap

(9) specファイルを配置します

$ cp -p /home/hacluster/rpm/SOURCES/Heartbeat-STABLE-2-1-STABLE-2.1.4/hb-ipv6.spec /home/hacluster/rpm/SPECS

(10) 展開したHeartbeatのソースツリーを削除します

$ cd /home/hacluster/rpm
$ rm -rf /home/hacluster/rpm/SOURCES/Heartbeat-STABLE-2-1-STABLE-2.1.4

(11) rpmbuildコマンドを実行します

$ cd /home/hacluster/rpm/SPECS
$ rpmbuild -bb hb-ipv6.spec 2>&1 | tee rpmbuild.log

(12) rpmファイルが作成されたことを確認します

$ ls -l /home/hacluster/rpm/RPMS/x86_64/hb-ipv6-1.00-1.hb214.x86_64.rpm (64bit環境の場合)
$ ls -l /home/hacluster/rpm/RPMS/i386/hb-ipv6-1.00-1.hb214.i386.rpm     (32bit環境の場合)


IPv6addr について

IPv6addrは「(仮想)IPv6アドレスの割当管理(割当/監視/削除)」を行うリソースエージェントです。

heartbeat-2.1.4-1同梱版からの変更点

  • nicパラメータをサポート
  • 本パラメータには、ネットワークI/Fを指定
  • 値はプレフィックス長指定時と同様に、IPアドレスを割当てるネットワークI/F選択時の条件として使用(プレフィックス長と同時に指定可能(and条件))
  • cidr_netmaskパラメータをサポート
  • プレフィックス長を1つのパラメータとして指定できるよう変更
    <nvpair ... name="ipv6addr"     value="2001:db8:91:0:92::189/64"/>
     ↓                                                         ~~~
    <nvpair ... name="ipv6addr"     value="2001:db8:91:0:92::189"/>
    <nvpair ... name="cidr_netmask" value="64"/>
    

使用方法

cib.xmlでリソースとして定義することにより、利用可能となります。cib.xmlで指定できるパラーメタ、および設定例を示します。

パラメータ

IPv6addrでは以下のパラメータが指定可能です。

パラメータ 意味 必須
ipv6addr 割当対象のIPv6アドレスを指定
cidr_netmask IPアドレスを割当てるネットワークI/F選択時の条件として使用 ×
nic IPアドレスを割当てるネットワークI/F選択時の条件 ×

複数のネットワークI/Fを使用している環境で、どのネットワークI/Fに対して仮想IPアドレスを割当てるかの指定はcidr_netmaskとnicの指定を行うことによって可能となります。以下に例を示します。 本例ではネットワークI/FとIPアドレスは以下の状態とします。

 eth0   inet6 addr: 2001:db8:91:0:92::181/80 Scope:Global
                    ^^^^^^^^^^^^^^^^
 eth1   inet6 addr: 2001:db8:91:0:91::182/64 Scope:Global
                    ^^^^^^^^^^^^^
 bond0  inet6 addr: 2001:db8:91:0:92::183/64 Scope:Global
                    ^^^^^^^^^^^^^

  • 例1 : ipv6addrパラメータのみ設定した場合
     <nvpair ... name="ipv6addr"     value="2001:db8:91:0:92::189"/>
    
    この場合には選択候補のネットワークI/Fは、eth0eth1bond0となります。結果としてif_inet6内で最初に一致したIPアドレスを持つネットワークI/Fが選択されます。どれが実際に選択されるかは本設定だけでは分かりません。
  • 例2 : ipv6addr、cidr_netmaskパラメータを設定した場合(1)
     <nvpair ... name="ipv6addr"     value="2001:db8:91:0:92::189"/>
     <nvpair ... name="cidr_netmask" value="80"/>
    
    この場合にはcidr_netmaskが指定されるこことにより、選択候補のネットワークI/Fは、eth0のみとなります。結果として「eth0」に「2001:db8:91:0:92::189」が割当てられます。
  • 例3 : ipv6addr、cidr_netmaskパラメータを設定した場合(2)
     <nvpair ... name="ipv6addr"     value="2001:db8:91:0:92::189"/>
     <nvpair ... name="cidr_netmask" value="64"/> 
    
    この場合にはcidr_netmaskが指定されていますが、候補となるネットワークI/Fは、eth1bond0の二つとなります。結果としてif_inet6内で最初に一致したIPアドレスを持つネットワークI/Fが選択されます。どれが実際に選択されるかは本設定だけでは分かりません。
  • 例4 : ipv6addr、nicパラメータを設定した場合
            <nvpair ... name="ipv6addr"     value="2001:db8:91:0:92::189"/>
            <nvpair ... name="nic"          value="bond0"/>
    
    この場合にはnicを指定することにより、選択候補のネットワークI/Fは、bond0のみとなります。結果として「bond0」に「2001:db8:91:0:92::189」が割当てられます。

cib.xmlの設定例

cib.xmlでの設定例を示します。

   (省略)
    <primitive id="prmVIPv6" class="ocf" type="IPv6addr" provider="heartbeat">
      <instance_attributes id="prmVIPv6_instance_attrs">
        <attributes>
          <nvpair id="atr:VIPv6:ex:IPv6addr:ipv6addr" name="ipv6addr" value="2001:db8:91:0:92::189"/>
          <nvpair id="atr:VIPv6:ex:IPv6addr:nic" name="nic" value="bond0"/>
          <nvpair id="atr:VIPv6:ex:IPv6addr:cidr_netmask" name="cidr_netmask" value="64"/>
        </attributes>
      </instance_attributes>
      <operations>
        <op id="op:VIPv6:ex:IPv6addr:start" name="start" timeout="60s" on_fail="restart"/>
        <op id="op:VIPv6:ex:IPv6addr:monitor" name="monitor" interval="10s" timeout="60s" on_fail="restart"/>
        <op id="op:VIPv6:ex:IPv6addr:stop" name="stop" timeout="60s" on_fail="block"/>
      </operations>
    </primitive>
   (省略)


pingd について

pingdは「ネットワーク状態を監視(指定されたIPアドレスに対してネットワーク疎通を確認)する」をプログラムです。

heartbeat-2.1.4-1同梱版からの変更点

  • スタンドアローンモードの追加
  • pingd単体での監視をサポート(-Nオプション) : -Nオプションの追加に付随する形で、以下のオプションも追加
  • 監視間隔の指定をサポート(-iオプション)
  • リトライ回数の指定をサポート(-nオプション)
  • タイムアウトの指定をサポート(-tオプション)
  • CIB更新を行わないモード(-Uオプション)の追加
  • IPv6アドレスに対する監視機能の強化
  • 監視時に使用するネットワークI/F指定もサポート(IPv4/IPv6、共に指定可能)

使用方法

pingdはha.cfのrespawnディレクティブで指定することで使用可能です。例を用いて設定方法を記述します。

  • 例1 : 監視先に「IPアドレス」のみを指定する場合
    respawn root /usr/lib64/heartbeat/pingd -m 100 -a default_ping_set -N 192.168.201.17
    
    IPv6アドレス(グローバルアドレス/リンクローカルアドレス)の指定も可能です。
    respawn root /usr/lib64/heartbeat/pingd -m 100 -a default_ping_set -N 2001:db8:91:0:92::171
    
    respawn root /usr/lib64/heartbeat/pingd -m 100 -a default_ping_set -N fe80::215:17ff:fe8f:ab20
    
    注意 : -Nオプション指定時は、pingディレクティブは不要です。指定しても無視され、pingディレクティブで指定したアドレスに対する監視は有効に機能しません。
  • 例2 : 監視先に「IPアドレス」と「監視時に使用するネットワークI/F」を指定する場合 IPアドレス%nicという形式(アドレスの後に%nic)で指定可能です。
    respawn root /usr/lib64/heartbeat/pingd -m 100 -a default_ping_set -N 192.168.201.17%bond0
    
    respawn root /usr/lib64/heartbeat/pingd -m 100 -a default_ping_set -N 2001:db8:91:0:92::171%bond0
    
    respawn root /usr/lib64/heartbeat/pingd -m 100 -a default_ping_set -N fe80::215:17ff:fe8f:ab20%bond0
    
  • 例3 : 複数の監視先を指定する場合(1)
    respawn root /usr/lib64/heartbeat/pingd -m 100 -a default_ping_set -N 192.168.201.17%bond0 -N 2001:db8:91:0:92::171%bond0
                                                                          ~~~~~~~~~~~~~~①        ~~~~~~~~~~~~~~~~~~~~~②
    
    ※上記設定の場合の疎通確認結果とdefault_ping_setの値は以下になります。
    • ①②、共に疎通確認OKの場合、default_ping_setの値は「200」になります。
    • ①②、どちらか疎通確認NGの場合、default_ping_setの値は「100」になります。
    • ①②、共に疎通確認NG場合、default_ping_setの値は「0」になります。
  • 例4 : 複数の監視先を指定する場合(4)
     respawn root /usr/lib64/heartbeat/pingd -m 100 -a default_ping_set  -N 192.168.201.17%bond0
                                                                            ~~~~~~~~~~~~~~①
     respawn root /usr/lib64/heartbeat/pingd -m 100 -a default_ping_set2 -N 2001:db8:91:0:92::171%bond0
                                                                            ~~~~~~~~~~~~~~~~~~~~~②
    
    ※上記設定の場合の疎通確認結果とdefault_ping_set, default_ping_set2の値は以下になります。
    • ①が疎通確認OKの場合、default_ping_set の値は「100」になります。
    • ①が疎通確認NGの場合、default_ping_set の値は「0」になります。
    • ②が疎通確認OKの場合、default_ping_set2の値は「100」になります。
    • ②が疎通確認NGの場合、default_ping_set2の値は「0」になります。