[Linux-ha-jp] DBのMaster/Slaveセットと仮想IPの同居について

Back to archive index

renay****@ybb***** renay****@ybb*****
2015年 6月 4日 (木) 08:19:14 JST


金城さん

こんにちは、山内です。

eth0の停止不良ということは、以下のvip1リソースに故障を起こして、
stopに失敗している状態と思います。

> primitive vip1 ocf:heartbeat:IPaddr2 \
>   params \
>   ip="10.0.2.10" \
>   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="block"


この場合、stopのon-fail="block"ですので、stopに失敗するとFO(MySQLのSlaveはMasterに昇格されない)しません。
#on-fail="block"は、そのままで何もしない。
#on-fail="ignore"は、失敗を無視して処理を継続。
#on-fail="restart"は、stop->startを実行。
#on-fail="fence"は、stonithを実行。

on-fail="fence"に設定して、stonithリソースの導入を検討して頂くか、
on-fail="ignore"に設定して、VIPcheckリソースを先頭リソースとして採用して頂くなどの対応が必要です。
#on-fail="ignore"でVIPcheckを採用した場合、eth0の故障で、実際にvip1が外れていなかった場合には、Slaveノードからvip1に疎通が取れる為、やはりFOに失敗しますが、
#Master側のeth0がハード故障などで、Slaveノードからvip1に疎通が取れない場合にはFO可能です。

設定に関しては、MLやLinuxha-japanの資料に記載があったと思います。

以上です。




----- Original Message -----
> From: Yoshiki Kinjo <yossr****@gmail*****>
> To: Linux****@lists*****
> Cc: 
> Date: 2015/6/3, Wed 17:22
> Subject: [Linux-ha-jp] DBのMaster/Slaveセットと仮想IPの同居について
> 
> お世話になります。金城と申します。
> 
> 下記の環境において、DBサーバのMaster/Slaveセットの内、
> Master側のネットワークに何かしらの不良(断線やIF故障)があった場合に、
> SlaveをMasterに昇格させたいのですが、eth0に不良があった場合に
> 仮想IP(vip1)が停止せず、MySQLのSlaveはMasterに昇格されない
> 状態です。
> 
> 原因や解決策をご存知であれば、ご教授頂けますでしょうか。
> (場合によってはVIPcheckなど他のリソースが必要と考えていますが、
> 何を選択すべきか、調べたものの、今ひとつ分かっていません。)
> 
> お手数をお掛けして申し訳ありませんが、宜しくお願い致します。
> 以下、詳細です。
> 
> 
> [要件]
> CentOSサーバ2台でMySQLのMaster/Slaveセットを構築する。
> 各ノードにはネットワークIFが2枚(eth0/eth1)装備されており、
> それぞれに仮想IPを設定する。
> 他のホストからのアクセスの際は仮想IP経由でMaster側へアクセスする。
> 
> 各ネットワークIFの役割は下記の通り。
> eth0:外部サービスとの連携
> eth1:内部ネットワーク内の接続(Webアプリからの接続等)
> 
> 
> [環境] ※テスト用に仮想環境を構築
> CentOS 6.6(64bit)
> pacemaker 1.1.12-1.el6
> corosync 2.3.4-1.el6
> MySQL 5.6.24-1.el6
> 
> (host1)
> eth0: 10.0.2.11/24
> eth1: 192.168.56.11/24
> 
> (host2)
> eth0: 10.0.2.12/24
> eth1: 192.168.56.12/24
> 
> eth0には仮想IPアドレス"10.0.2.10"を、
> eth1には仮想IPアドレス"192.168.56.10"を付与する。
> 
> 
> [host1にてifconfig eth0 downを実行した結果(一部省略)]
> # crm_mon -fA1
> Online: [ host1 host2 ]
> 
> Resource Group: grpNetwork
>      vip1   (ocf::heartbeat:IPaddr2):   Started host1 ←停止するのを期待
>      vip2   (ocf::heartbeat:IPaddr2):   Started host1
>      mailto (ocf::private:MailTo):  Started host1
> Master/Slave Set: msMysql [mysql]
>      Masters: [ host1 ]
>      Slaves: [ host2 ]
> 
> 
> [設定(etc/corosync/corosync.conf)]
> totem {
>   version: 2
> 
>   crypto_cipher: none
>   crypto_hash: none
>   rrp_mode:active
> 
>   interface {
>     ringnumber: 0
>     bindnetaddr: 192.168.56.0
>     mcastport: 5405
>     ttl: 1
>   }
>   interface {
>     ringnumber: 1
>     bindnetaddr: 10.0.2.0
>     mcastport: 5405
>     ttl: 1
>   }
>   transport: udpu
> }
> 
> logging {
>   fileline: off
>   to_logfile: yes
>   to_syslog: no
>   logfile: /var/log/cluster/corosync.log
>   debug: off
>   timestamp: on
>   logger_subsys {
>     subsys: QUORUM
>     debug: off
>   }
> }
> 
> nodelist {
>   node {
>     ring0_addr: 192.168.56.11
>     nodeid: 1
>   }
> 
>   node {
>     ring0_addr: 192.168.56.12
>     nodeid: 2
>   }
> }
> 
> quorum {
>   # Enable and configure quorum subsystem (default: off)
>   # see also corosync.conf.5 and votequorum.5
>   provider: corosync_votequorum
>   expected_votes: 2
> }
> 
> 
> [設定(crm configureコマンドを用いてインポートしたテキスト)]
> ### Cluster Option ###
> property no-quorum-policy="ignore" \
>   stonith-enabled="false" \
>   startup-fencing="false"
> 
> ### Resource Defaults ###
> rsc_defaults resource-stickiness="INFINITY" \
>   migration-threshold="1"
> 
> ### Group Configuration ###
> group grpNetwork \
>   vip1 \
>   vip2
> 
> ### Clone Configuration ###
> 
> ### Master/Slave Configuration ###
> ms msMysql mysql \
>   meta \
>     master-max="1" \
>     master-node-max="1" \
>     clone-max="2" \
>     clone-node-max="1" \
>     notify="true"
> 
> ### Fencing Topology ###
> 
> ### Primitive Configuration ###
> primitive vip1 ocf:heartbeat:IPaddr2 \
>   params \
>   ip="10.0.2.10" \
>   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="block"
> 
> primitive vip2 ocf:heartbeat:IPaddr2 \
>   params \
>   ip="192.168.56.10" \
>   nic="eth1" \
>   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="block"
> 
> primitive mysql ocf:private:mysql56 \
>   params \
>   binary="/usr/bin/mysqld_safe" \
>   pid="/var/run/mysqld/mysqld.pid" \
>   replication_user="****" \
>   replication_passwd="****" \
>   op start   interval="0s"  timeout="120s" 
> on-fail="restart" \
>   op stop    interval="0s"  timeout="120s" 
> on-fail="block" \
>   op monitor interval="20s" timeout="30s"  
> on-fail="restart" \
>   op monitor interval="10s" timeout="30s"  
> on-fail="restart" role="Master" \
>   op monitor interval="30s" timeout="30s"  
> on-fail="restart" role="Slave" \
>   op promote interval="0s"  timeout="120s" 
> on-fail="restart" \
>   op demote  interval="0s"  timeout="120s" 
> on-fail="stop" \
>   op notify  interval="0s"  timeout="90s"
> 
> ### Resource Location ###
> 
> ### Resource Colocation ###
> colocation colocation-1 inf: grpNetwork msMysql:Master
> 
> ### Resource Order ###
> order order-1 inf: msMysql:promote grpNetwork:start symmetrical=false
> order order-2 0:   msMysql:demote  grpNetwork:stop  symmetrical=false
> 
> 
> [特記事項]
> ・設定内容の記述中のMySQLのログイン情報はマスクしております。
> ・MySQLのリソースエージェントは、標準のもの(ocf:heartbeat:mysql)が
>   v5.6に対応していない様で、カスタマイズしたものを使用しておりますが、
>   今回の「仮想IP(vip1)が停止しない」という現象とは直接的な関係が
>   考えにくいため、カスタマイズの詳細は一旦割愛します。
> _______________________________________________
> Linux-ha-japan mailing list
> Linux****@lists*****
> http://lists.osdn.me/mailman/listinfo/linux-ha-japan
> 




Linux-ha-japan メーリングリストの案内
Back to archive index