[アップデート] Amazon RDS for SQL Server のリードレプリカ機能がシングル AZ 構成でも利用出来るようになりました

2024.04.04

いわさです。

Amazon RDS for SQL Server ではリードレプリカインスタンスを作成し、RDS マネージドな機能で自動レプリケーション構成や手動でのレプリカの昇格を行うことが出来ます。

特定のワークロードで有効なこのリードレプリカですが前提条件がいくつかあり、これまではマルチ AZ の Enterprise Edition である必要がありました。
先日の以下のアップデートでこの前提条件が少し変わり、シングル AZ でもリードレプリカがサポートされるようになりました。Enterprise Edition の前提については従来どおりです。

このアップデートにより、「マルチ AZ までは必要ないがリードレプリカを追加したい」、あるいは「自動フェイルオーバーまでは必要ないが DR リージョンへ、バックアップではなくパイロットライト的にレプリカを用意しておきたい」といったユースケースに対応しやすくなります。

この記事ではシングル AZ の RDS for SQL Server Enterprise Edition を使って、リードレプリカを別の AZ、別のリージョンへ作成したり、手動での昇格を試してみたりしましたので、その様子を紹介します。

リードレプリカの作成

次のように、RDS for SQL Server Enterprise Edition インスタンスを作成します。

ほぼほぼ問題にならないと思いますが、一応この機能を使うにあたっての前提バージョンも設定されていますので以下も確認しておきましょう。

今回のアップデートのポイントです。
これまではマルチ AZ 構成を選択する必要がありましたが、不要になったはずなのでマルチ AZ 配置は「なし」を選択しましょう。

リードレプリカ構築に関してもう一点ポイントがあり、自動バックアップを有効化する必要があります。
従来はマルチ AZ 配置を選択することがそもそも前提になっていたので自動バックアップも強制的に有効化されていたのですが、シングル AZ 配置の場合は自動バックアップを無効(0 日で設定)にすることが出来ます。

自動バックアップが無効のプライマリインスタンスの場合、次のように「リードレプリカの作成」メニューが非活性となります。エディションが正しいのにリードレプリカが選択出来ないという場合は、まずは自動バックアップが有効になっているか確認してみましょう。

プライマリインスタンスの設定を変更し、次のようにバックアップ保持期間を 1 日以上で選択します。

更新の反映後、次のようにシングル AZ インスタンスからも「リードレプリカの作成」を選択出来ることが確認出来ました。

ではリードレプリカを作成してみましょう。
まず、リードレプリカのインスタンスサイズを選択します。
プライマリインスタンスのエンジンでサポートされているものを選択する必要がありますが、プライマリインスタンスとは別のインスタンスサイズを選択出来ます。

続いてリードレプリカの作成先を選択します。
送信先リージョンはソースインスタンスとは別のリージョンを選択することが出来ます。
ペアリージョンの概念はなく、同一リージョンも含めて任意の組み合わせが可能です。(GovCloud リージョンとの出入りだけは出来ません)

まずは次のように同一リージョンの別 AZ にリードレプリカを作成してみました。
プライマリでバックアップが開始され、レプリカが作成されました。

レプリカラグなども確認出来ますね。
ちなみに RDS のリードレプリカは非同期レプリケーションなので、結果整合性を意識したアプリケーション実装が必要です。

クラスターエンドポイントはない

Aurora クラスターのようにクラスターエンドポイントの概念がないので、クライアントからはそれぞれのインスタンスの接続先へ接続する形となります。

以下はプライマリインスタンスのエンドポイントです。

以下はレプリカインスタンスのエンドポイントです。

当然ながらクライアントでは接続先(ライター、リーダー)を意識した実装が必要ですし、複数のリードレプリカ(最大 15 台まで作成可能)を作成した場合に負荷分散を実現するためにエンドポイントをクライアントにどう提供するか検討する必要があります。

方法のひとつとしてはカスタムエンドポイントを Route 53 の加重ルーティングを使用する方法があります。

レプリカの昇格

レプリカを昇格させてみましょう。

Aurora クラスターの昇格だと、プライマリとセカンダリを入れ替える方法と、セカンダリをスタンドアロンとして独立させる方法が選択出来ますが、RDS のリードレプリカの場合は後者のスタンドアロン独立の方法のみです。

アプリケーション側で使用している書き込みエンドポイントを引き継いでくれるわけではないので、このあたりも先程と同じようにカスタムエンドポイントなどの仕組みを導入しておいたほうが良さそうです。

昇格の手順は RDS コンソールでリードレプリカを選択して「リードレプリカの昇格」を操作するだけです。

先ほどまでレプリカロールだったインスタンスが独立しました。レプリケーションもされなくなっています。

さらにここからリードレプリカの作成も出来ますね。

大阪リージョンでも同じ確認をしてみた

今回は東京リージョンのソースインスタンスから、大阪リージョンにリードレプリカインスタンスを作成してみました。
リードレプリカごとにインスタンスサイズを設定出来るので、大阪リージョンに最小構成でレプリケーションだけしておき、昇格&サイズ変更で DR リージョンとして使うようなパイロットライト戦略を取りたい場合でもシングル AZ から開始することが出来ます。

大阪リージョンでも昇格出来そうですね。

さいごに

本日は Amazon RDS for SQL Server のリードレプリカ機能がシングル AZ 構成でも利用出来るようになったので、東京リージョンの別 AZ、大阪リージョンで確認してみました。

Enterprise Edition は必要になりますが、マルチ AZ 必須の制限がなくなったので、リードレプリカのためだけに不要にマルチ AZ を有効化していた方は構成を見直してみては如何でしょうか。