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:0
cs,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のインストール】