このドキュメントでは、一般的なリソース構成についてご説明します。 共有IPでapache2サービスの可用性を高めるアクティブ/パッシブ構成を行います。 この構成にはモニタも含まれ、リソースの開始はグループを使用して実行されます。 ここでは、簡潔に構成や可能性についてご説明します。 さらに、詳細をお知りになりたい方のために、詳しく説明するドキュメントをご紹介しています。
以下の構成では、Heartbeat構成を完了するには、[authkeys]や[ha.cf]も必要であることが考慮されていません。
この例では、marsとvenusという2つのノードを使用しています。marsはアクティブ、venusはパッシブです。
冒頭で述べたとおり、Heartbeat v2でのリソース構成についてのみご説明します。 構成ファイルはvar/lib/heartbeat/crm/cib.xmlにあります。 基本的には、このファイルで、クラスタのリソースとこのリソースを 実行する場所を指定します。
次の3通りの方法で、ファイルを作成できます。
/usr/lib/heartbeatに含まれる管理ツールを使用して作成する。
この例では、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> <configuration> <crm_config/> <nodes/> <resources/> <constraints/> </configuration> <status/> </cib>
上記のとおり、CIBは主に2つに分割されています:
configuration: リソースに関する構成を行います。
status: status 部分を変更する必要はありませんが、この詳細については、 クラスタ情報ベース/状態の把握をお読みください。
crm_configでは、全般的なリソースオプションを定義します。
この例で使用されている構成は、python変換スクリプトから生成されたものです。 デフォルト値を使うこともできるため、crm_configの全オプションを構成する必要はありません。 ただし、詳細をお知りになりたい場合は、Heartbeatを微調整してください。 STONITHをご使用の方は、ここをご参照ください。
どのノードがクラスタ内にあるかを定義します。
nodeセクションは、システムによって自動的に埋められるため、 ほとんどの場合は無視されます。最も重要な値はノードのUUIDですが、 不具合を起こしやすいので、このコマンドを自動的に実行するといいでしょう。 詳細はこちら。
使用するリソースを定義します。さらにこのタグでは、 モニタを構成し、リソースに必要なパラメータを設定します。
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タグの子タグです。リソースのオプションまたは必須の設定を定義します。 |
以下では、属性についてご説明します:
この例のresourceについて:
ここでは、どのリソースを、どのノードで開始するかを定義します。
簡単な例を以下に挙げます:
<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つの場合は簡単です。リソースは一方のノードで実行され、 そのノードに障害が発生すると、相手ノードで実行されます。 しかし、大規模なクラスタでは、リソースを実行するノードを指定したほうが合理的です。
制約は、今後、まだまだ展開を見せる可能性があります。 それについては、ほかのドキュメントで解説されています。
基本的な単一IPアドレス構成 (初めての方はここから始めてください)
その他の 簡単な例