[Linux-ha-jp] Heartbeat + Pacemaker + MHA を用いたMySQLマスター冗長化について

アーカイブの一覧に戻る

Takehiro Matsushima takeh****@gmail*****
2011年 12月 9日 (金) 10:08:30 JST


庭野 様

はじめまして、松島と申します。
よろしくお願いいたします。

私の勤め先ではHeartbeat + Pacemaker + MySQL(Async. Repl)の構成で運用しています。
MHAについて無知なので的外れかもしれませんが、この設定ですとActive/Standbyなので
MHAの強みを生かせないかと思います。

Cloneで立ち上げてしまうと、すべてのノードで同じ条件になってしまいます。
MHAがそのあたりは調整してくれるのでしょうか??

もし、MHAにそのような機能が無いのでしたらMySQLをCloneではなく
Master/Slaveにされてはいかがでしょうか。

私自身、しっかりと勉強していないので設定についてご教授いただければと思います
・orderでsymmetrical=falseにしているのはなぜでしょうか
・orderとcolocationを2行に分けているのはなぜでしょうか

よろしくお願いいたします。

----
Takehiro Matsushima



2011年12月8日14:12 庭野 悟 <niwan****@showt*****>:
> はじめまして。庭野と申します。
>
> 初投稿となります。
> どうぞ宜しくお願いします。
>
> MySQLのマスターノードを冗長化すべく構成検討を行っています。
> 候補としては以下です。
>
>  1. Heartbeat + Pacemaker + DRBD + MySQL
>  2. Heartbeat + Pacemaker + MySQL + MHA
>
> マスターノードは Act/Stb 状態で2台準備し、Act側には仮想IPが
> 割り当てられていて、更新クエリのみ受け付けるような構成に
> なっています。
>
> 上記[1]の構成は過去に構築した経験もあるのですが、巷で話題の
> MHAも検証してみようと思い[2]のような構成を考えました。
> ※MHAの付属スクリプトでIPフェイルオーバーを行ってくれる
>  サンプルがあるのですが、Perlで書かれていて私には理解できずで。。
> 上記の[2]のような構成で冗長化を行っている経験者は
> いらっしゃいませんでしょうか?
>
> 私はまだ検証段階ではありますが、今のところ以下のような設定で
> 一応は正常に動いていることを確認できています。
>
> ha.cf ※抜粋
>  keepalive 2
>  deadtime 20
>  warntime 15
>  initdead 60
>  udpport        694
>  bcast   eth1            # Linux
>  watchdog /dev/watchdog
>  node   mha-db01
>  node   mha-db02
>  respawn root /usr/lib64/heartbeat/ifcheckd
>  pacemaker on
>
> crm configure
>  property no-quorum-policy="ignore"
>  property stonith-enabled="false"
>  property startup-fencing="false"
>  property stonith-timeout="740s"
>
>  rsc_defaults resource-stickiness="INFINITY" \
>  migration-threshold="1"
>
>  primitive res_ip ocf:heartbeat:IPaddr2 \
>  params ip="192.168.1.1" nic="eth0" cidr_netmask="24" \
>  op start interval="0s" timeout="60s" on-fail="restart" \
>  op monitor interval="10s" timeout="60s" on-fail="restart" \
>  op stop interval="0s" timeout="60s" on-fail="restart"
>
>  primitive res_mysql ocf:heartbeat:mysql \
>  params binary="/usr/bin/mysqld_safe" config="/etc/my.cnf"
> datadir="/var/lib/mysql" \
>  user="mysql" group="mysql" pid="/var/lib/mysql/mha-db.pid"
> socket="/var/lib/mysql/mysql.sock" \
>  op start interval="0s" timeout="120s" on-fail="ignore" \
>  op monitor interval="10s" timeout="60s" on-fail="ignore" \
>  op stop interval="0s" timeout="120s" on-fail="ignore"
>
>  primitive prmPingd ocf:pacemaker:pingd \
>  params name="default_ping_set" host_list="192.168.1.254"
> multiplier="100" dampen="0" \
>  meta migration-threshold="3" \
>  op start interval="0s" timeout="60s" on-fail="restart" \
>  op monitor interval="10s" timeout="60s" on-fail="restart" \
>  op stop interval="0s" timeout="60s" on-fail="block"
>
>  primitive prmDiskd ocf:pacemaker:diskd \
>  params name="diskcheck_status" device="/dev/sda" interval="10" \
>  meta migration-threshold="3" \
>  op start interval="0s" timeout="60s" on-fail="restart" \
>  op monitor interval="10s" timeout="60s" on-fail="restart" \
>  op stop interval="0s" timeout="60s" on-fail="block"
>
>  group grpMhaDb res_ip res_mysql
>
>  clone clnPingd prmPingd \
>  meta clone-max="2" clone-node-max="1"
>  clone clnDiskd prmDiskd \
>  meta clone-max="2" clone-node-max="1"
>
>  location location-grpMhaDb-1 grpMhaDb \
>  rule 200: #uname eq mha-db01 \
>  rule 100: #uname eq mha-db02 \
>  rule -INFINITY: defined default_ping_set and default_ping_set lt 100 \
>  rule -INFINITY: defined diskcheck_status and diskcheck_status eq ERROR \
>  rule -INFINITY: defined diskcheck_status_internal and
> diskcheck_status_internal eq ERROR
>
>  colocation colocation-grpMhaDb-clnPingd-1 INFINITY: grpMhaDb clnPingd
>  colocation colocation-grpMhaDb-clnDiskd-2 INFINITY: grpMhaDb clnDiskd
>
>  order order-clnPingd-grpMhaDb-1 0: clnPingd grpMhaDb symmetrical=false
>  order order-clnDiskd-grpMhaDb-2 0: clnDiskd grpMhaDb symmetrical=false
>
> まず動作の前提条件として
>  「Act/Stb両方にてMySQLが起動」
>   かつ
>  「StbはActとレプリケーション中」
> があります。
> 処理の流れは、
>  Act側でMySQLダウンを検知したら、crm内のres_mysqlがfailとなり、
>  処理を停止(ignore)し、IPフェイルオーバーを行う。
> となります。
>
> この設定以外でもっとスマートな方法をご存じな方は
> いらっしゃいませんでしょうか。
>
> ※今回の場合、MySQLは両サーバーで上がっている必要があるのでCloneで
>  作る必要があるような気もしますが、やはりそうなりますでしょうか、、?
>
> 宜しくお願い致します。
>
> _______________________________________________
> Linux-ha-japan mailing list
> Linux****@lists*****
> http://lists.sourceforge.jp/mailman/listinfo/linux-ha-japan





Linux-ha-japan メーリングリストの案内
アーカイブの一覧に戻る