Amazon Aurora をプライマリとレプリカのインスタンスタイプが異なる構成で運用できますか

2022.09.02

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

困っていた内容

書き込み処理と読み込み処理に差があり、ライターインスタンス(プライマリ)と比べて、リーダーインスタンス(レプリカ)のリソースはいつも余っています。

コスト削減のためリーダーインスタンスだけ、より料金の安いインスタンスタイプへ変更し、ライターインスタンスとは異なるインスタンスタイプで運用したいのですが可能ですか? 懸念点などがあれば教えてください。

どう対応すればいいの?

はい、Aurora のライターインスタンスとリーダーインスタンスのインスタンスタイプを非対称な構成で利用することは可能です。

ただし、ライターとリーダーが1台づつの構成であったり、ライターと異なるインスタンスタイプのリーダーしか存在しない場合、 何らかの障害やメンテナンスなどによってフェイルオーバーが発生すると、リソースの異なるリーダーインスタンスがライターインスタンスに昇格するため注意が必要です。

<フェイルオーバー発生後>

画像の例だと、フェイルオーバーによって db.r5.large のインスタンスで処理していた書き込み処理が db.t3.small のインスタンスで処理されることになります。 このとき、ワークロードによってはリソースが足りず処理しきれない状況が発生する可能性があります。

フェイルオーバーが発生した後、インスタンスタイプを大きなものに変更したり、手動でフェイルオーバーさせて元の構成に戻すことは可能ですが、その際にダウンタイムが発生します。

リソースの異なるリーダーインスタンスがライターインスタンスに昇格することによる影響や、フェイルオーバー発生時の追加の作業、ダウンタイムを許容できる場合は良いですが、 許容出来ない場合には、ライターインスタンス(プライマリ)とリーダーインスタンス(レプリカ)に同じインスタンスタイプを選択することをお勧めします。

参考資料

Amazon Aurora の高可用性