こんにちは。クラウドソリューション事業部の石垣です。
先日、Auroraクラスターに追加のReaderインスタンスとしてAurora Serverless v2を導入しようとした際に、ACUが想定より高くなる事象があって原因を調査しました。
経緯
以下のような元々Provisioned Instanceで構成されていたAuroraクラスターに負荷対策としてServerless v2のインスタンスの追加を検討していました。
起こったこと
追加したServerless v2のインスタンスでACUが4より低くなりません。
原因
デフォルトのAuroraクラスターで、デフォルト設定でReadレプリカを追加すると、フェイルオーバー優先順位が「tier-1」で作成されます。
今回の原因はこれです。
以下の弊社の別のブログにもありますが、tier-1はWriterインスタンスのスペックに追従します。
WriterインスタンスがProvisioned Instanceであってもその挙動は変わらずなので、Writerインスタンスのスペック相当のACUが追加したServerless v2インスタンスに割り当てられます。
参考:https://www.seeds-std.co.jp/blog/creators/2024-03-25-a5476ad1-3aa5-46ff-8ae6-55623defaf3c/
対応
フェールオーバー戦略として今回の場合は以下を想定していて、Serverless v2インスタンスはフェールオーバー先としては想定していませんでした。
- 既存のProvisioned Instanceがフェールオーバー先とする。
- 追加のServerless v2インスタンスはあくまでアクセス増対応のためのReaderスケーリング用途。
上記の場合、Serverless v2インスタンスはWriterインスタンスのスペックに追従する必要がないので、フェールオーバ優先順位をtier-2にします(tier-1より下であればOK)。
無事下がりました。
終わりに
Aurora Serverless v2の導入を検討するケースも増えてきましたが、フェールオーバー戦略の検討とそれにあわせたフェールオーバー優先順位の設定も大切ですね。