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

ホームページ

サイトについて

コンタクト情報

使用条件

協力方法

セキュリティ

2009.02.18
パッケージ追加
追加パッケージ集にパッケージを追加しました

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:
2009-11-11 06:31:28

序文

このドキュメントでは、一般的なリソース構成についてご説明します。 共有IPでapache2サービスの可用性を高めるアクティブ/パッシブ構成を行います。 この構成にはモニタも含まれ、リソースの開始はグループを使用して実行されます。 ここでは、簡潔に構成や可能性についてご説明します。 さらに、詳細をお知りになりたい方のために、詳しく説明するドキュメントをご紹介しています。

以下の構成では、Heartbeat構成を完了するには、[authkeys]や[ha.cf]も必要であることが考慮されていません。

この例では、marsvenusという2つのノードを使用しています。marsはアクティブ、venusはパッシブです。

リソースの構成

冒頭で述べたとおり、Heartbeat v2でのリソース構成についてのみご説明します。 構成ファイルはvar/lib/heartbeat/crm/cib.xmlにあります。 基本的には、このファイルで、クラスタのリソースとこのリソースを 実行する場所を指定します。

次の3通りの方法で、ファイルを作成できます。

  • 手動で作成する。
  • /usr/lib/heartbeatに含まれる管理ツールを使用して作成する。

  • python変換スクリプトを使用する。

この例では、python変換スクリプトを使用して構成ファイルを作成します。 この方法が最も短時間で終わるからです。 最初に、haresourcesファイルを作成してください。

vi /root/haresources.temp

mars 10.0.200.30/16/eth0 apache2

このファイルをHA v2スタイルに変換します:

HA 2.0.2 :python /usr/lib/heartbeat/cts/haresources2cib.py /root/haresources.temp > /var/lib/heartbeat/crm/cib.xml
HA 2.0.3 :python /usr/lib/heartbeat/haresources2cib.py /root/haresources.temp > /var/lib/heartbeat/crm/cib.xml

以下の内容がpythonスクリプトから生成されます:

<?xml version="1.0" ?>
<cib>
    <configuration>
        <crm_config>
            <nvpair id="transition_idle_timeout" name="transition_idle_timeout" value="120s"/>
            <nvpair id="symmetric_cluster" name="symmetric_cluster" value="true"/>
            <nvpair id="no_quorum_policy" name="no_quorum_policy" value="stop"/>
        </crm_config>
        <nodes/>
        <resources>
            <group id="group_1">
                <primitive class="ocf" id="IPaddr_1" provider="heartbeat" type="IPaddr">
                     <operations>
                        <op id="1" interval="5s" name="monitor" timeout="5s"/>
                     </operations>
                     <instance_attributes>
                        <attributes>
                            <nvpair name="ip" value="10.0.200.30"/>
                            <nvpair name="netmask" value="16"/>
                            <nvpair name="nic" value="eth0"/>
                        </attributes>
                    </instance_attributes>
                </primitive>
                <primitive class="ocf" id="apache2id" provider="heartbeat" type="apache2">
                    <operations>
                       <op id="3" name="monitor" interval="10s" timeout="10s"/>
                    </operations>
                </primitive>
            </group>
        </resources>
        <constraints>
            <rsc_location id="rsc_location_group_1" rsc="group_1">
                <rule id="prefered_location_group_1" score="100">
                    <expression attribute="#uname" operation="eq" value="mars"/>
                </rule>
            </rsc_location>
        </constraints>
    </configuration>
    <status/>
</cib>

空のCIB

<cib>
   <configuration>
     <crm_config/>
     <nodes/>
     <resources/>
     <constraints/>
   </configuration>
   <status/>
</cib>

上記のとおり、CIBは主に2つに分割されています:

  • configuration: リソースに関する構成を行います。

  • status: status 部分を変更する必要はありませんが、この詳細については、 クラスタ情報ベース/状態の把握をお読みください。

crm_config

crm_configでは、全般的なリソースオプションを定義します。

この例で使用されている構成は、python変換スクリプトから生成されたものです。 デフォルト値を使うこともできるため、crm_configの全オプションを構成する必要はありません。 ただし、詳細をお知りになりたい場合は、Heartbeatを微調整してください。 STONITHをご使用の方は、ここをご参照ください。

node

どのノードがクラスタ内にあるかを定義します。

nodeセクションは、システムによって自動的に埋められるため、 ほとんどの場合は無視されます。最も重要な値はノードのUUIDですが、 不具合を起こしやすいので、このコマンドを自動的に実行するといいでしょう。 詳細はこちら

resources

使用するリソースを定義します。さらにこのタグでは、 モニタを構成し、リソースに必要なパラメータを設定します。

Heartbeatで使用するリソースの定義は、Heartbeat構成にとって重要です。 2種類の方法で、これらのリソースを定義できます。リソースグループに 複数のリソースを入力し、さらには、複数のリソースを定義することもできます。 リソースをグループなしで個別に定義することも可能です。 ただし、その場合は、リソースごとに、どのノードでリソースを 開始するかを定義してください。その結果、制約の定義が複雑になります。 ここでグループを使用するのは、一連のリソースを順次、開始/停止する場合、 はるかに簡単に行えるからです。

注:ノードをグループ化する方法もあります。グループ化は属性を使用して行い、 3つ以上のノードがある場合に便利です。

        <resources>
            <group id="group_1">
                <primitive class="ocf" id="IPaddr_1" provider="heartbeat" type="IPaddr">
                     <operations>
                        <op id="1" interval="5s" name="monitor" timeout="5s"/>
                     </operations>
                     <instance_attributes>
                        <attributes>
                            <nvpair name="ip" value="10.0.200.30"/>
                            <nvpair name="netmask" value="16"/>
                            <nvpair name="nic" value="eth0"/>
                        </attributes>
                    </instance_attributes>
                </primitive>
                <primitive class="ocf" id="apache2id" provider="heartbeat" type="apache">
                    <operations>
                       <op id="3" name="monitor" interval="10s" timeout="10s"/>
                    </operations>
                </primitive>
            </group>
        </resources>

resource

言うまでもなく、ここでリソースを定義します。

group

resourceタグの子タグにすることができます。

primitive

リソースを定義します。グループを使用する場合はこのタグをgroupの子タグとして入力し、それ以外の場合はresourceの子タグとして入力します。

operations

オプションのprimitiveの子タグです。ここでは、start、stopタイムアウト、monitorを定義します。 詳細

attribute

primitiveタグの子タグです。リソースのオプションまたは必須の設定を定義します。

以下では、属性についてご説明します:

  • id:idは、groupまたはprimitiveを呼び出すときに使用するidです。
  • class: classでは、リソースエージェントが何を使用するかを定義します。選択肢は、以下の3つです:
    • class=""ocf": /usr/lib/ocf/resource.d/heartbeat/のスクリプトを使用します。
    • class="heartbeat": /etc/ha.d/resource.d/のスクリプトを使用します。
    • class="lsb": /etc/init.d/のスクリプトを使用します。
    • 注:lsbは引数をとらないため、lsbクラスでは操作を使用できません。
  • provider: クラスがocf、providerがheartbeatの場合にのみ必要です。classがlsbの場合、属性は必要ありません。
  • type: 使用する起動スクリプトの名前です。

この例のresourceについて:

  • グループは1つ、グループ名は「group_1」です。
    • グループには、2つの構成済みのリソースがあります(primitive)
      • 1つ目のリソースでは、ocfスクリプトを使用してエイリアスIPアドレスを作成しています。
        • IPエイリアスはmonitorにより5秒ごとにチェックされます。
        • attributesでは、IPエイリアスをIPアドレス10.0.200.30などに指定します。
      • 2つ目のリソースはapache2サーバーです。ここでもocfライブラリのスクリプトを使用します。
        • apacheサーバーが起動していれば、10秒ごとにチェックされます。

リソースの詳細

Constraints

ここでは、どのリソースを、どのノードで開始するかを定義します。

簡単な例を以下に挙げます:

        <constraints>
            <rsc_location id="rsc_location_group_1" rsc="group_1">
                <rule id="prefered_location_group_1" score="100">
                    <expression attribute="#uname" operation="eq" value="mars"/>
                </rule>
            </rsc_location>
        </constraints>

rsc_locationでは、rscを「このグループ(group_1)」と定義しています。 expressionでは、どのノードで最初に開始するかを定義しています。

ノードが2つの場合は簡単です。リソースは一方のノードで実行され、 そのノードに障害が発生すると、相手ノードで実行されます。 しかし、大規模なクラスタでは、リソースを実行するノードを指定したほうが合理的です。

制約は、今後、まだまだ展開を見せる可能性があります。 それについては、ほかのドキュメントで解説されています。

詳細はこちら

関連情報