動かして理解するPacemaker ~CRM設定編~ その1


変更履歴

  • 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を動かしてみましょう。

Pages: 1 2 3 4

Comments are closed.