Amazon Aurora Replicaのフェイルオーバーを試してみる

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

はじめに

Amazon AuroraがGAされました!

Auroraの大きな特徴が、高い可用性です。Aurora以外のDBエンジンでRDSを構築した場合、マスターDBインスタンスのフェイルオーバー先はスレーブDBインスタンスに限定されており、リードレプリカが自動的にマスターに昇格することはありませんでした。Auroraではマスター(Writer)となるDBインスタンス以外はAurora Replicaとなります。マスターDBインスタンスがフェイルオーバーした場合、Aurora Replicaのどれかがマスターに昇格します。

aws_第5回図_pptx

そしてAurora Replicaは一つのDBにつき15個作成できます。つまり、Multi-AZの耐障害性と、リードレプリカの読み取りアクセスのパフォーマンス向上を、どちらも実現するのがAurora Replicaです!

ということで、早速Aurora Replicaのフェイルオーバーを試してみました!

やってみた

まずはAmazon AuroraをMulti-AZ(Create Replica in Different Zone)として構築します。

RDS_·_AWS_Console

すると以下のように、Writerとして「aurora」、Readerとして「aurora-us-east-1c」が起動します

RDS_·_AWS_Console 2

ここで、手動でAurora Replicaを増やしてみます。[Instance Actions]-[Create Aurora Replica]をクリックします。

RDS_·_AWS_Console 3

[Create Aurora Replica]画面が表示されます。[Settings]で、[Aurora Replica Sourceと]してWriterである「aurora」を指定します。また[DB Instance Identifier]で適当な名前(ここでは「aurora-rr」としました)を付け、[Create Aurora Replica]をクリックします。

RDS_·_AWS_Console 4

すると以下のように、クラスタにメンバー「aurora-rr」が追加され、3台構成となりました。3つのAZに分散されているので、Multi-AZも3Zoneと表示されています。

RDS_·_AWS_Console 5

ではフェイルオーバーさせてみます。

RDS_·_AWS_Console 6

フェイルオーバーしました。先ほどまでWriterだった「aurora」がReaderとなり、Readerだった「aurora-us-east-1c」がWriterとなっています。

RDS_·_AWS_Console 7

こちらがフェイルオーバーしたログです。1分以内にフェイルオーバーが完了しています。

RDS_·_AWS_Console 8

もちろんあとから追加したAurora Replica(「aurora-rr」)もWriterになることができます(ここでは、無理やりWriterにするために、aurora-us-east-1cをDeleteしました)

RDS_·_AWS_Console 9

ということで、Aurora Replicaによって高い可用性が確保されています!

さいごに

アプリケーションから見ればエンドポイントは単一なので、バックグラウンドのフェイルオーバーによってどれがWriterとなっているかを意識する必要がありません。これは便利ですね!