PaceMaker+DRBD構築6 【リソース登録】
DRBDの設定まで終わったら、次はPaceMakerのリソース登録です。PaceMakerのリソース登録情報
■Mysqlリソース情報項目 | 値 |
---|---|
インストールディレクトリ | /opt/db/mysql/ |
DBデータディレクトリ | /db01/mysql/data/ |
Check用DB | chk_db |
Check用DBユーザ | chk_user |
Check用DBパスワード | passwd |
Check用Table | chk_tbl |
項目 | リソースエージェント | 備考/今回の設定値 |
---|---|---|
ディスクのチェック | ocf:pacemaker:diskd | DRBDのデバイス領域:/dev/sdb DRBDのメタディスク領域:/dev/sda (Internal) |
DRBDリソースの設定 | ocf:linbit:drbd | DRBDリソース名:rdb01 |
ファイルシステムのリソース設定 | ocf:heartbeat:Filesystem | デバイス:/dev/drbd0 ディレクトリ:/db |
メール通知リソースの設定 | ocf:heartbeat:MailTo | 通知先:hoge_system@ml01.hoge.hoge.jp |
Mysql監視リソースの設定 | ocf:heartbeat:mysql | ・DBデータディレクトリ "/db01/mysql/data" ・Mysql設定ファイル "/etc/my.cnf" ・socket "/tmp/mysql.sock" ・pid "/opt/db/mysql/mysqld.pid" ・ログ "/var/log/mysql/mysqld.log" ・パラメータ "--ledir=/opt/db/mysql/bin --basedir=/opt/db/mysql" ・ヘルスチェック情報 ユーザ/パスワード "chk_user"/"passwd" ヘルスチェックTable "chk_db.chk_tbl" |
Ping監視リソースの設定 | ocf:pacemaker:pingd | Ping先:172.18.56.254 172.18.56.73 172.18.56.74 |
VIPリソースの設定 | ocf:heartbeat:IPaddr2 | VIP:172.18.56.80 |
VIP重複設定の検知 | ocf:heartbeat:VIPcheck | 監視VIP:172.18.56.80 |
# tune2fs -l /dev/sdb 省略 Filesystem volume name:Last mounted on: /db Filesystem UUID: dccf88f5-b49d-495b-b017-33b7ccdceac8 Filesystem magic number: 0xEF53 省略
Pachemakerのリソース登録手順
■Pachemakerのリソース登録用ファイルの作成# vi mysql_setup.crm primitive prm_diskd ocf:pacemaker:diskd \ params name="diskcheck_status" device="/dev/sdb" interval="10" \ op start interval="0" timeout="60s" \ op monitor interval="10s" timeout="60s" \ op stop interval="0" timeout="60s" primitive prm_diskd_internal ocf:pacemaker:diskd \ params name="diskcheck_status_internal" device="/dev/sda" interval="10" \ op start interval="0" timeout="60s" \ op monitor interval="10s" timeout="60s" \ op stop interval="0" timeout="60s" primitive prm_drbd_r0 ocf:linbit:drbd \ params drbd_resource="rdb01" \ op monitor interval="30" role="Master" timeout="30" \ op monitor interval="40" role="Slave" timeout="30" \ op start interval="0" timeout="240" \ op stop interval="0" timeout="100" primitive prm_fs ocf:heartbeat:Filesystem \ params device="/dev/drbd0" directory="/db" fstype="ext4" options="noatime" \ operations $id="prm_fs-operations" \ op start interval="0" timeout="60" \ op stop interval="0" timeout="60" \ op monitor interval="10s" timeout="60s" OCF_CHECK_LEVEL="20" \ meta target-role="started" primitive prm_mailto ocf:heartbeat:MailTo \ params email="hoge_system@ml01.hoge.hoge.jp" subject="HeartBeat FailOver" \ op start interval="0" timeout="10s" \ op monitor interval="10s" timeout="10s" \ op stop interval="0" timeout="10s" \ meta target-role="started" primitive prm_mysqld ocf:heartbeat:mysql \ params binary="/opt/db/mysql/bin/mysqld_safe" client_binary="/opt/db/mysql/bin/mysql" datadir="/db01/mysql/data" config="/etc/my.cnf" socket="/tmp/mysql.sock" user="mysql" group="dba" pid="/opt/db/mysql/mysqld.pid" log="/var/log/mysql/mysqld.log" additional_parameters="--ledir=/opt/db/mysql/bin --basedir=/opt/db/mysql" test_user="chk_user" test_passwd="passwd" test_table="chk_db.chk_tbl" \ operations $id="prm_mysqld-operations" \ op start interval="0" timeout="120s" \ op stop interval="0" timeout="120s" \ op monitor interval="20s" timeout="30" OCF_CHECK_LEVEL="10" \ meta target-role="started" primitive prm_pingd ocf:pacemaker:pingd \ params name="default_ping_set" host_list="172.18.56.254 172.18.56.73 172.18.56.74" multiplier="100" dampen="50" \ operations $id="prm_pingd-operations" \ op monitor interval="10s" timeout="20s" attempts="50" \ op start interval="0" timeout="90s" on-fail="restart" \ op stop interval="0" timeout="100s" on-fail="ignore" primitive prm_vip ocf:heartbeat:IPaddr2 \ params ip="172.18.56.80" cidr_netmask="24" \ op monitor interval="10" \ meta target-role="started" primitive prm_vipcheck ocf:heartbeat:VIPcheck \ params target_ip="172.18.56.80" count="1" wait="10" \ op start interval="0" timeout="90s" start_delay="4" \ op stop interval="0" timeout="60s" \ meta target-role="started" group grp_mysqld prm_vipcheck prm_fs prm_vip prm_mysqld prm_mailto ms ms_drbd_r0 prm_drbd_r0 \ meta master-max="1" master-node-max="1" clone-max="2" clone-node-max="1" notify="true" clone clone_diskd prm_diskd clone clone_diskd_internal prm_diskd_internal clone clone_pingd prm_pingd location loc_grp_mysqld grp_mysqld \ rule $id="loc_grp_mysqld-rule" -inf: not_defined default_ping_set or default_ping_set lt 100 colocation col_mysqld_diskd inf: grp_mysqld clone_diskd colocation col_mysqld_diskd_internal inf: grp_mysqld clone_diskd_internal colocation col_mysqld_drbd inf: grp_mysqld ms_drbd_r0:Master colocation col_mysqld_pingd inf: grp_mysqld clone_pingd order ord_mysqld_diskd 0: clone_diskd grp_mysqld order ord_mysqld_diskd_int 0: clone_diskd_internal grp_mysqld order ord_mysqld_drbd inf: ms_drbd_r0:promote grp_mysqld:start order ord_mysqld_pingd inf: clone_pingd grp_mysqld property $id="cib-bootstrap-options" \ dc-version="1.0.12-066152e" \ cluster-infrastructure="Heartbeat" \ stonith-enabled="false" \ no-quorum-policy="ignore" \ default-resource-stickiness="200" \ last-lrm-refresh="1352465746" rsc_defaults $id="rsc-options" \ migration-threshold="1" \ resource-stickiness="INFINITY"
# crm configure load update mysql_setup.crm※/dev/drbd0をext4のファイルシステムで事前に作成していないとエラーとなる。
PaceMakerリソース登録時の補足情報
リソースは大きくPrimitive、Clone、Master/Slaveの3種類に定義することができる。これによって必ず1つのノードで動かさなければならない排他制御が必要なサービス、両方のノードで行う必要がある監視、マスタースレーブ関係のあるサービスなど様々な場面に対応することができる。それらのサービスをリソースエージェントを介することで統一的な方法で管理している。種類 | 説明 |
---|---|
Primitive | アクティブ/スタンバイ構成で用いる基本的なリソースで、どこか1つのノードで動くことができるリソース。障害を検知したら他のノードにフェールオーバーさせることができる。 |
Clone | Primitiveリソースを複数のノードで動作させるために使用する。Primitiveを停止してそれを複製するためCloneと呼ばれる。 pingの疎通監視などサービスを提供していないノードでも確認する基本的な監視で利用されることが多い。 |
Master/Slave | Cloneのリソースで親子関係があるリソースに使用する。代表的なリソースとしてPrimaryとSecondaryの状態を管理する必要があるDRBDがあげられる。 |
PaceMaker+DRBD構築 の目次
01. PaceMaker+DRBD構築 【PaceMakerのインストール】PaceMaker+DRBDの運用
PaceMaker+DRBDを運用する上で、よく使うコマンドを紹介します。# crm_mon ============ Last updated: Mon Apr 8 15:58:17 2013 Stack: Heartbeat Current DC: dk-db01 (e55c28c8-89c7-4d61-9c9a-aef306eae480) - partition with quo rum Version: 1.0.12-066152e 2 Nodes configured, unknown expected votes 5 Resources configured. ============ Online: [ dk-db02 dk-db01 ] Resource Group: grp_mysqld prm_vipcheck (ocf::heartbeat:VIPcheck): Started dk-db01 prm_vip (ocf::heartbeat:IPaddr2): Started dk-db01 prm_fs (ocf::heartbeat:Filesystem): Started dk-db01 prm_mysqld (ocf::heartbeat:mysql): Started dk-db01 prm_mailto (ocf::heartbeat:MailTo): Started dk-db01 Master/Slave Set: ms_drbd_r0 Masters: [ dk-db01 ] Slaves: [ dk-db02 ] Clone Set: clone_diskd Started: [ dk-db01 dk-db02 ] Clone Set: clone_diskd_internal Started: [ dk-db01 dk-db02 ] Clone Set: clone_pingd Started: [ dk-db01 dk-db02 ]
# crm_mon -1
# cat /proc/drbd version: 8.4.2 (api:1/proto:86-101) GIT-hash: 7ad5f850d711223713d6dcsss3dd48860321070c build by root@dk-db01, 2012-11-06 15:33:13 0: cs:Connected ro:Primary/Secondary ds:UpToDate/UpToDate C r----- ns:45515384 nr:0 dw:45577604 dr:5178098 al:537 bm:64 lo:0 pe:0 ua:0 ap:0 ep:1 wo:f oos:0cs,ro,dsの値で状態を確認することができます。
項目 | 正常時 | 異常時(例) |
---|---|---|
cs | Connected | WFConnection StandAlone |
ro | Primary/Secondary or Secondary/Primary |
Primary/Unknown Secondary/Unknown |
ds | UpToDate/UpToDate | UpToDate/DUnknow |
PaceMaker+DRBDの障害復旧手順(片ノードのみ障害)
ノード間のDRBD同期が取れていない状態になった場合の復旧手順を説明します。# cat /proc/drbd
version: 8.4.2 (api:1/proto:86-101)
GIT-hash: 7ad5f850d711223713d6dcadc3dd48860321070c build by root@dk-db01, 2012-11-06 15:33:13
0: cs:WFConnection ro:Primary/Unknown ds:UpToDate/DUnknown C r-----
ns:1412 nr:636 dw:3648 dr:13333 al:16 bm:15 lo:0 pe:0 ua:0 ap:0 ep:1 wo:f oos:1200
・ノード2側のDRBD状態を確認# cat /proc/drbd
version: 8.4.2 (api:1/proto:86-101)
GIT-hash: 7ad5f850d711223713d6dcadc3dd48860321070c build by root@dk-db02, 2012-11-06 15:44:03
0: cs:StandAlone ro:Secondary/Unknown ds:UpToDate/DUnknown r-----
ns:0 nr:1408 dw:1408 dr:1672 al:0 bm:8 lo:0 pe:0 ua:0 ap:0 ep:1 wo:f oos:0
※ノード1側がPrimay状態であるため、ノード2側のデータを破棄し、ノード1側データを正とする。# drbdadm secondary rdb01書式:drbdadm secondary resource名
# cat /proc/drbd
version: 8.4.2 (api:1/proto:86-101)
GIT-hash: 7ad5f850d711223713d6dcadc3dd48860321070c build by root@dk-db02, 2012-11-06 15:44:03
0: cs:StandAlone ro:Secondary/Unknown ds:UpToDate/DUnknown r-----
ns:0 nr:1408 dw:1408 dr:1672 al:0 bm:8 lo:0 pe:0 ua:0 ap:0 ep:1 wo:f oos:0
※今回はすでにSecondary状態であったため、特に結果は変わらない。# drbdadm -- --discard-my-data connect rdb01※ノード1側がWFConnection状態であるため、ノード間の自動再接続が行われる。
# cat /proc/drbd
version: 8.4.2 (api:1/proto:86-101)
GIT-hash: 7ad5f850d711223713d6dcsss3dd48860321070c build by root@dk-db02, 2012-11-06 15:33:13
0: cs:Connected ro:Secondary/Primary ds:UpToDate/UpToDate C r-----
ns:45515384 nr:0 dw:45577604 dr:5178098 al:537 bm:64 lo:0 pe:0 ua:0 ap:0 ep:1 wo:f oos:0
PaceMaker+DRBDの障害復旧手順(両ノードがStandAlone状態)
両ノードが単独で動作している状態(スプリットブレイン)からの復旧手順を説明します。# cat /proc/drbd
version: 8.4.2 (api:1/proto:86-101)
GIT-hash: 7ad5f850d711223713d6dcadc3dd48860321070c build by root@dk-db01, 2012-11-06 15:33:13
0: cs:StandAlone ro:Primary/Unknown ds:UpToDate/DUnknown r-----
ns:13112 nr:636 dw:35652 dr:58573 al:23 bm:32 lo:0 pe:0 ua:0 ap:0 ep:1 wo:f oos:15304
# cat /proc/drbd
version: 8.4.2 (api:1/proto:86-101)
GIT-hash: 7ad5f850d711223713d6dcadc3dd48860321070c build by root@dk-db02, 2012-11-06 15:44:03
0: cs:StandAlone ro:Secondary/Unknown ds:UpToDate/DUnknown r-----
ns:0 nr:11652 dw:13060 dr:3200 al:0 bm:25 lo:0 pe:0 ua:0 ap:0 ep:1 wo:f oos:0
※ノード1側がPrimay状態であるため、ノード2側のデータを破棄し、ノード1側データを正とする。# drbdadm secondary rdb01書式:drbdadm secondary resource名
# cat /proc/drbd
version: 8.4.2 (api:1/proto:86-101)
GIT-hash: 7ad5f850d711223713d6dcadc3dd48860321070c build by root@dk-db02, 2012-11-06 15:44:03
0: cs:StandAlone ro:Secondary/Unknown ds:UpToDate/DUnknown r-----
ns:0 nr:11652 dw:13060 dr:3200 al:0 bm:25 lo:0 pe:0 ua:0 ap:0 ep:1 wo:f oos:0
※今回はすでにSecondary状態であったため、特に結果は変わらない。# drbdadm -- --discard-my-data connect rdb01書式:drbdadm -- --discard-my-data connect リソース名
# cat /proc/drbd
version: 8.4.2 (api:1/proto:86-101)
GIT-hash: 7ad5f850d711223713d6dcadc3dd48860321070c build by root@dk-db02, 2012-11-06 15:44:03
0: cs:WFConnection ro:Secondary/Unknown ds:UpToDate/DUnknown C r-----
ns:0 nr:0 dw:13060 dr:3200 al:0 bm:25 lo:0 pe:0 ua:0 ap:0 ep:1 wo:f oos:0
# drbdadm connect rdb01書式:drbdadm connect リソース名
# drbdadm primary rdb01
PaceMaker+DRBDの運用関連記事
PaceMaker+DRBDの実践運用手順PaceMaker+DRBD構築 の目次
01. PaceMaker+DRBD構築 【PaceMakerのインストール】