以前に作って、プロダクションでもいくつかのサービスに導入している 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でフェイルオーバーしたい、というかたはどうぞご利用ください。