Amazon Aurora Replicaのフェイルオーバーを試してみる
はじめに
Amazon AuroraがGAされました!
Auroraの大きな特徴が、高い可用性です。Aurora以外のDBエンジンでRDSを構築した場合、マスターDBインスタンスのフェイルオーバー先はスレーブDBインスタンスに限定されており、リードレプリカが自動的にマスターに昇格することはありませんでした。Auroraではマスター(Writer)となるDBインスタンス以外はAurora Replicaとなります。マスターDBインスタンスがフェイルオーバーした場合、Aurora Replicaのどれかがマスターに昇格します。
そしてAurora Replicaは一つのDBにつき15個作成できます。つまり、Multi-AZの耐障害性と、リードレプリカの読み取りアクセスのパフォーマンス向上を、どちらも実現するのがAurora Replicaです!
ということで、早速Aurora Replicaのフェイルオーバーを試してみました!
やってみた
まずはAmazon AuroraをMulti-AZ(Create Replica in Different Zone)として構築します。
すると以下のように、Writerとして「aurora」、Readerとして「aurora-us-east-1c」が起動します
ここで、手動でAurora Replicaを増やしてみます。[Instance Actions]-[Create Aurora Replica]をクリックします。
[Create Aurora Replica]画面が表示されます。[Settings]で、[Aurora Replica Sourceと]してWriterである「aurora」を指定します。また[DB Instance Identifier]で適当な名前(ここでは「aurora-rr」としました)を付け、[Create Aurora Replica]をクリックします。
すると以下のように、クラスタにメンバー「aurora-rr」が追加され、3台構成となりました。3つのAZに分散されているので、Multi-AZも3Zoneと表示されています。
ではフェイルオーバーさせてみます。
フェイルオーバーしました。先ほどまでWriterだった「aurora」がReaderとなり、Readerだった「aurora-us-east-1c」がWriterとなっています。
こちらがフェイルオーバーしたログです。1分以内にフェイルオーバーが完了しています。
もちろんあとから追加したAurora Replica(「aurora-rr」)もWriterになることができます(ここでは、無理やりWriterにするために、aurora-us-east-1cをDeleteしました)
ということで、Aurora Replicaによって高い可用性が確保されています!
さいごに
アプリケーションから見ればエンドポイントは単一なので、バックグラウンドのフェイルオーバーによってどれがWriterとなっているかを意識する必要がありません。これは便利ですね!