変更履歴
- 2013.9.19 初版制定
- 2016.3.23 Pacemaker-1.1に対応
■はじめに
Linux-HA Japanをご覧の皆さんこんにちは。Linux-HA Japanの中の人、ひがしと申しますm(_ _)m
みなさん、Pacemaker触っていますか?
OSCなどのブースや講演で中の人がPacmakerをデモしているのを見かけると思いますが、ああいう構成って一から自分で作ろうとするとまぁ大変ですよね。
個人的に最初につまづくのが”CRM設定ファイル“だと思います。
例えば、2011年福岡で開催されたOSCで講演したデモ環境のCRM設定ファイル(これに含まれるdemo4.crmファイル)を見てみてください。
長い・・しかも設定ファイルなのに¥記号たくさんww
やばい・・ゲシュタルト崩壊して¥がVサインに見えてきた(注1)。。だからみんなPacemakerのことピースメーカーって呼んじゃうんだな(注2)・・そのせいで呼び名が変更されるって記事もあったし・・・
注1:\に見えてる人はごめんなさい
注2:本当はペースメーカーです
でもしかし!このCRM設定ファイルの攻略なしにPacemakerでHA環境は作れないのです。
というわけで本記事ではこのCRM設定ファイルを読める/書けるようになることを目標に、全3回の連載形式でいろいろ書いていこうと思います。
動かして理解するPacemaker ~CRM設定編~ 連載一覧(全3回)
■CRM設定ファイルとは
CRM設定ファイルは、Pacemakerに、「どのようなリソース(※1)をどこで稼働させるか?」「いつフェイルオーバ(※2)するのか?」というようなことを教えるための設定ファイルです。
賢明な読者の中には、「その設定ってコマンドラインからやるんじゃなかったっけ?」とお思いの方もいるかもしれません。
その通り!
過去に掲載された記事の中でも、crmコマンドというPacemaker付属のコマンドラインで行っています。
CRM設定ファイルはこのcrmコマンドに流し込むコマンドを列挙したものです。
小規模な設定であればコマンドを直接打ってもいいですが、大規模になるとファイルに書いておいた方が保存、配布などが楽になります。Windowsでいうバッチファイル、Linuxでいうシェルスクリプトみたいなものですね。
これで、一つ謎が解けました。そうですCRM設定ファイルに「\」が多かったのはその箇所が本来1行で書くコマンドラインだからです。
ちなみにcrmコマンドは、設定のみならず、クラスタの状態確認、操作等、様々な機能を持っています。まさにクラスタのシェルですね。
さぁ以上を踏まえて、早速、CRM設定ファイルを読んでいきましょう。
※1 リソースって何だっけ、という人は、この記事の「リソース制御機能」を参照してください。
※2 以後フェイルオーバを「F/O」と略記します。
■CRM設定ファイルの構成
前述の2011年福岡で開催されたOSCで講演したデモ環境のCRM設定ファイルをもう一度見てみてください。
心の眼でよーく見ると、行の始めは以下の8種類のコマンドのどれかであることがわかります。
ちなみに行頭が「#」はコメントアウト、「\」は行が続くことを表します。
- property
- rsc_defaults
- group
- clone
- primitive
- location
- colocation
- order
次回以降で紹介しますが、Master-Slave構成を使う場合、
- ms
というコマンドも使用します。
上記9コマンドあれば、たいがいのHA構成は定義できちゃいます。
Pacemaker-1.1系の場合、上記に加え fencing_topology というコマンドも使用します。詳細はOSCデモ機の設定を公開しますをご覧ください。
早速、9コマンドの解説を、、と言いたいところですが、ここで1つCRM設定ファイルの例を示します。
### Cluster Option ###
property no-quorum-policy="ignore" \
stonith-enabled="false" \
crmd-transition-delay="2s"
### Resource Defaults ###
rsc_defaults resource-stickiness="INFINITY" \
migration-threshold="1"
### Group Configuration ###
group grp \
resource1 \
resource2
### Clone Configuration ###
clone clnResource \
resource3
### Primitive Configuration ###
primitive resource1 ocf:heartbeat:Dummy \
op start interval="0s" timeout="300s" on-fail="restart" \
op monitor interval="10s" timeout="60s" on-fail="restart" \
op stop interval="0s" timeout="300s" on-fail="block"
primitive resource2 ocf:heartbeat:Dummy \
op start interval="0s" timeout="300s" on-fail="restart" \
op monitor interval="10s" timeout="60s" on-fail="restart" \
op stop interval="0s" timeout="300s" on-fail="block"
primitive resource3 ocf:heartbeat:Dummy \
op start interval="0s" timeout="300s" on-fail="restart" \
op monitor interval="10s" timeout="60s" on-fail="restart" \
op stop interval="0s" timeout="300s" on-fail="block"
### Resource Location ###
location rsc_location-1 grp \
rule 200: #uname eq pm01 \
rule 100: #uname eq pm02
### Resource Colocation ###
colocation rsc_colocation-1 INFINITY: grp clnResource
### Resource Order ###
order rsc_order-1 0: clnResource grp symmetrical=false
この例は比較的単純ですが、msを除く8のコマンドを全て含んでおり、Active-Standby構成の基本がつまっています。しかもDummyという特殊なリソースのみを使用しているため、Pacemaker以外、Apacheや共有ディスク等のリソースは不要です。
なお、Pacemaker-1.1系の場合、「crmd-transition-delay=”2s”」の設定は不要です。Pacemaker-1.1系で試す方は当該行を削除してください。
以降、しばらくはこのCRM設定ファイルを題材に解説をしていきます。
次のページで早速このCRM設定でPacemakerを動かしてみましょう。