以前に作って、プロダクションでもいくつかのサービスに導入している MHA::AWS ですが、failover 方法を ENI 付け替えの他に VPC Route Table の書き換えもサポートしました。
ENI付け替えでは同一 Availability Zone 内での failover しかできませんが、VPC Route Table の書き換えによる方法では Multi-AZ 環境での failover も可能になります。
CPANにも上げましたので、 cpanm MHA::AWS でインストール可能です。
- MHA::AWS - A support script for "MySQL Master HA" running on AWS - metacpan.org
- fujiwara/MHA-AWS · GitHub
# /etc/masterha_default.cnf master_ip_failover_script=mhaws master_ip_failover --interface_id=eni-xxxxxxxx master_ip_online_change_script=mhaws master_ip_online_change --interface_id=eni-xxxxxxx shutdown_script=mhaws shutdown --interface_id=eni-xxxxxxxx
使用方法は以前と変わらず、master_ip_(failover|online_change)_script と shutdown_script に対して引数を適切に設定した mhaws コマンドを指定すれば動きます。
Usage: $ mhaws [subcommand] --interface_id=ENI-id [... args passed by MHA] required arguments: 1. failover method is ENI attach/detach --interface_id=[ENI-id for master VIP] 2. failover method is RouteTable change destination --route_table_id=[RouteTable-id] --vip=[master VIP] subcommand: master_ip_failover master_ip_online_change shutdown
実はまだ、幸か不幸か(テスト以外で) 本番環境で事故による failover が発動したことはないのですが、一応ちゃんと動くと思います。
深遠な理由で RDS でなく EC2環境で MySQL を動作させる必要がある、MHAでフェイルオーバーしたい、というかたはどうぞご利用ください。