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を使う必要があるそうです。
CentOS6.6で設定すると
このクイックスタートガイドを参考にして/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必須なんですね。