4.0のHA構成を試していていたら、ocf:heartbeat:apacheを使ったhttpdの起動がうまくいかなかった。クラスターリソースは以下で作成している。http://localhost/zabbix/の応答が</body>で終わってる)。072015以前書いた「PacemakerでMySQLレプリケーション構成」のCentOS7+MariaDB環境用です。CentOS7になってMySQLがMariaDBになったこと、pcsコマンドのオプションが若干変更になっていることが主な変更点になります。最近のmysqlリソースエージェントでは、MySQLデータベースをMaster/Slaveセットとして構成することができます。DRBD同様、TakeoverによってReplicationのMaster/Slaveを入れ替えることが可能となります。7のPacemakerを使ってMariaDBデータベースをMaster/Slaveセットとして構成してみました。セットアップする環境は以下になります。PacemakerとCorosync一式はCentOS提供のパッケージをインストールしクラスター構成済みです。x86_64)レプリケーションの設定まずはPacemaker範囲外で、MariaDBをインストールしてレプリケーションを構成します。MariaDBのレプリケーション構成手順の詳細は公式ドキュメントを参照してください。https://mariadb.com/kb/en/mariadb/setting-up-replication/MariaDBのインストールおよび設定MariaDBをインストールし設定します。/etc/my.cnf/etc/my.cnfは[mysqld]セクションに以下を追加します。server-idは1とします。log-bin=mariadb-binserver-id=12号機も同様です。/etc/my.cnf/etc/my.cnfは[mysqld]セクションに以下を追加します。server-idは2とします。log-bin=mariadb-binserver-id=2レプリケーションユーザーの作成1号機側のみで作業します。MySQLを起動します。mariadb.serviceレプリケーションユーザーを作成します。'slavepass';アクセス元をもっと厳格に限定したい場合は、ホスト部分を環境にあわせて設定してください。mysqlリソースエージェントでは、通常のレプリケーション以外にもread-onlyに切り替える権限をもったユーザーが必要になるため、localhostでもレプリケーションユーザーを作成します。'slavepass';ユーザーを作成したら反映します。PRIVILEGES;これらの権限が必要な理由についてはリソースエージェントで以下のように説明されています。/></parameter>MariaDBを停止してデータベースファイル一式を2号機にコピーします。クラスターリソースのセットアップ最初にSlaveとして稼働させる2号機をStandbyにします。pcmk12クラスターリソースを登録します。RAの推奨値を設定しています。Master/Slaveセットを作成します。notify=trueクラスターリソースを開始します。mysql-clone1号機がMasterとして起動します。~]#2号機のStandbyを解除します。pcmk122号機がSlaveのレプリケーション構成としてMySQLが起動します。TOが実行されていることがわかります。pcmk11コマンドでMaster側をStandbyにするとMasterが切り替わります。pcmk11してStandby解除するとpcmk11はSlaveとして稼働を開始します。cib.xmlを見てみるとバイナリログの位置情報がcluster_property_setとして記録されていることがわかります。TOを実行する必要がないため、セットアップも非常に楽になります。302013Master/Slaveセットのリソースにおいて、ネットワーク疎通がOKなノードのみがMasterになれるようにするために、以下に掲載されているlocation制約を設ける方法がありました。ClusterLabs上記はcrmコマンドで設定する手順なのですが、pcsコマンドでは同様のことを定義する方法がわかりません。MLでも質問が出ていますが、明確な回答は出ていないようです。Pacemaker仕方ないので、crmコマンドで定義した際に生成される内容をXMLで用意して、直接cibadminで登録しています。262013最近のmysqlリソースエージェントでは、MySQLデータベースをMaster/Slaveセットとして構成することができます。DRBD同様、TakeoverによってReplicationのMaster/Slaveを入れ替えることが可能となります。6.4のPacemakerを使ってMySQLデータベースをMaster/Slaveセットとして構成してみました。セットアップする環境は以下になります。PacemakerとCorosync一式はCentOS提供のパッケージをインストールしクラスター構成済みです。x86_64)レプリケーションの設定まずはPacemaker範囲外で、MySQLをインストールしてレプリケーションを構成します。MySQLのレプリケーション構成手順の詳細は公式ドキュメントを参照してください。http://dev.mysql.com/doc/refman/5.1/ja/replication-howto.htmlMySQLのインストールおよび設定MySQLをインストールし設定します。/etc/my.cnf/etc/my.cnfは[mysqld]セクションに以下を追加します。server-idは1とします。log-bin=mysql-binserver-id=12号機も同様です。/etc/my.cnf/etc/my.cnfは[mysqld]セクションに以下を追加します。server-idは2とします。log-bin=mysql-binserver-id=2レプリケーションユーザーの作成1号機側のみで作業します。MySQLを起動します。startレプリケーションユーザーを作成します。'slavepass';アクセス元をもっと厳格に限定したい場合は、ホスト部分を環境にあわせて設定してください。mysqlリソースエージェントでは、通常のレプリケーション以外にもread-onlyに切り替える権限をもったユーザーが必要になるため、localhostでもレプリケーションユーザーを作成します。'slavepass';ユーザーを作成したら反映します。PRIVILEGES;これらの権限が必要な理由についてはリソースエージェントで以下のように説明されています。/></parameter>mysqlを停止してデータベースファイル一式を2号機にコピーします。クラスターリソースのセットアップ最初にSlaveとして稼働させる2号機をStandbyにします。pcmk12クラスターリソースを登録します。RAの推奨値を設定しています。Master/Slaveセットを作成します。notify=trueクラスターリソースを開始します。mysql-clone1号機がMasterとして起動します。~]#2号機のStandbyを解除します。pcmk122号機がSlaveのレプリケーション構成としてMySQLが起動します。TOが実行されていることがわかります。pcmk11コマンドでMaster側をStandbyにするとMasterが切り替わります。pcmk11してStandby解除するとpcmk11はSlaveとして稼働を開始します。cib.xmlを見てみるとバイナリログの位置情報がノードの属性として記録されていることがわかります。TOを実行する必要がないため、セットアップも非常に楽になります。182013corosync-notifydを使って何が通知されるのか試してみました。corosync-notifydを-sオプションで起動して、localhostにSNMPトラップを送信するようにします。startsnmptrapdをインストールして起動します。お試しなので認証は無効にして、届いたトラップをそのままメールにするようにしました。メール送信にはnet-snmp-perlパッケージのtraptoemailを使用します。startcorosync-notifydでノードの停止、起動を検知すると、以下のようなメールが飛びました。drbdの構成でリソースレベルフェンシングをやってみました。clustersdrbdのリソースに以下を設定してみます。...}Masterな状態で動作している1号機(pcmk-1)のN/Wを切断すると2号機(pcmk-2)がMasterになります。その際以下のlocationが設定されてpcmk-2以外のスコアが-INFINITYに設定されることが確認できました。</rule></rsc_location>この状態で1号機が復活しても、cibには上記locationが設定されているのでMasterになれないことになります。データが同期されるとafter-resync-target指定のスクリプトが実行され、locationの制約が削除されます。DRBDな環境を作ってみたときのメモ。PacemakerとCorosyncは、そのままyumでインストールするとぞれぞれ1.1.7と1.4.1だったので以下の手順でチャレンジ。Scratchdrbdは8.4.1のソースからrpmをビルドして、drbd-km/drbd-pacemaker/drbd-udev/drbd-utilsをインストールしている。問題なく進んだものの、8.5章の部分でWebIPクローンセットが1つのノードで実行されてしまい、Active/Active状態にならない(drbd自体はDual-Primaryで動作している)。crm_monでリソースをみると以下の状態で、要はWebIPが2号機のほうでStartしないので、WebSiteClone(ApacheのRAクローンセット)も2号機側で動作しない状態となっているようだ。]なんでかなーと思っていろいろ悩んだが、結局WebIPクローンセットのclone-node-maxを1に変更してみたらうまくいった。]WebIPのclone-node-maxを1にしてみたのはWebDataCloneを模倣してみたからなのだが自分でも理解不能。そもそもCluster用IPアドレスをクローンして各ノードに付与している意味が理解できない。普通のHAクラスタならIPはクローンセットせずに1ノードだけに付与するのだけれど。実際の使い方として何が正しいのか、まだまだ勉強が必要です。162012大抵のクラスタウェアでは管理対象となっているリソースを止めずにクラスタウェアを停止する方法が用意されています。クラスタウェア自身をメンテナンス停止するために用意されているのですが調べたものをいくつか紹介。Pacemaker管理対象から外す設定を実施する。リソース全体もしくはリソース個別に設定できる。(LAD)機能で対応している模様。chhaltclコマンドを-dオプション指定で実行すると管理対象リソースは動作したままServiceGuardが停止する。-d再開はcmruncl参考http://h50146.www5.hp.com/products/software/oe/hpux/component/ha/sgm_sol.htmlhttp://www.hpuxtips.es/?q=node/268LifeKeeperlkstopコマンドを-fオプション指定で実行する。Setで切り替える方法はないんだろうかと散策していたら、PacemakerのMLで同じような質問している方を発見しました。mastermigrateできないんだがどうしたらよいのかという質問で、回答としては次に示すスレッドでのやり方が紹介されています。node結論としてはlocationでrole=Masterなノードを指定してやることになるようです。Setがms_drbd0、Masterにしたいノードがnode1であった場合、以下のコマンドにより切り替えることができます。exitこちらは定義として残ってしまうので、切り替わったあとは消しておくのが無難かもしれません。