ページ

2015年4月11日

Pacemaker/Corosyncの設定方法がCentOS6とCentOS7で違います

この1か月程、毎週土曜日のアクティビティと化しているCentOS6にPacemakerをパッケージインストールして動作させる実験のメモです。

CentOS7(Pacemaker-1.1 + Corosync-2.2)と違いいろいろと手間取りました。


CentOS6.6のbaseでインストールすると・・・



CentOS6.6でpacemakerを手軽に使おうとすると、baseパッケージからインストールするのが簡単だと思います。

インストールされたパッケージバージョンは、Pacemaker-1.1.2-4とcorosync-1.4.7-1とcman-3.0.12.1-68とpcs-0.9.123-9です。


clusterlabs.orgのドキュメントを見ると、ディストリビューションとバージョンの組み合わせで参照するドキュメントが違いました。
日本語で書かれたブログ記事の多くはpacemaker-1.0とcrmshを使った例が多いのでそのまま利用するにはちょっとメンドクサイです。  ということで、公式サイトを参照しています。

CentOS6.6にインストールされるpacemaker + corosyncを使う場合には「pacemaker-1.1 for CMAN or corosync-1.X」のドキュメントを参照するとよいと思うのですが、Clusterlabs.ORGのクイックスタート(RedHat6)を見ると、RHEL6の場合CMANを使う必要があるそうです。


このクイックスタートガイドを参考にして/etc/cluster/cluster.confを作成すると、corosyncはマルチキャストをつかってビートを送信します。

ところが、/etc/corosync/corosync.confに、udpu指定していてもユニキャストが有効にならないんです。

ということでマルチキャストが使えない環境(AWSなど)では、両ノードがONLINEになりません。

どうするかというと、/etc/cluster/cluster.confに設定を追加する必要がありました。


こちらを参考にして、
<cman transport="udpu"> 
を追加する良いということで追加したら・・・起動時にエラーを出して立ち上がらなくなっちゃいました。

「Relax-NG validity error」が発生します。

バリデーションコマンドを使うと

# ccs_config_validate -f /etc/cluster/cluster.conf
Relax-NG validity error : Extra element fencedevices in interleave
tempfile:24: element fencedevices: Relax-NG validity error : Element cluster failed to validate content
Configuration fails to validate

このような感じでエラーとなりまして、追加した<cman transport="udpu">を受け付けてくれません。

/etc/cluster/cluster.confをよ~~~~く見てみると、
<cman \>行があったのので、その行と入れ替えてみたらOKになりました。

日本語の検索キーワードではgoogleでマッチしなかったので、ほとんどの方はトラブル無しなんでしょうね。

ちなみにccsコマンドで作成するには:
$ ccs -f /etc/cluster/cluster.conf --setcman transport="udpu" port="5405"

情報元:LINUX-HA MAILING LIST


ところで、cman使わないと


cman使わずに、corosyncとpacemakerだけ使おうとうすると起動時の処理でpacemakerがエラーになってしまうんです。

正確には、corosyncは立ち上がるのですが、pacemakerがdeadになってしまいます。

CentOS6では、cman必須なんですね。