読み込みリクエストを複数の Amazon RDS リードレプリカに分散させる方法を教えてください。
最終更新日: 2022 年 9 月 23 日
複数の Amazon Relational Database Service (Amazon RDS) リードレプリカに読み取りリクエストを分散させたいと考えています。
簡単な説明
Amazon Route 53 加重レコードセットを使用すると、リクエストを複数のリードレプリカに分散させることができます。Route 53 ホストゾーン内で、リードレプリカに関連付けられた各 DNS エンドポイントに対して、個々のレコードセットを作成します。次に、同じ重みを付けて、リクエストをレコードセットのエンドポイントに転送します。
解決方法
リードレプリカの DNS エンドポイントの URL を見つける
- Amazon RDS コンソールを開きます。
- ナビゲーションペインで、[Databases] (データベース) を選択し、各リードレプリカを選択します。
- [Endpoint] (エンドポイント) の横にある DNS エンドポイントの URL をメモ (またはコピー) します。
Route 53 ホストゾーンを作成する
注意: 既にホストゾーンがある場合は、この手順をスキップします。
- Route 53 コンソールを開き、ナビゲーションペインで [Hosted zones] (ホストゾーン) を選択します。
- [Create Hosted Zone] (ホストゾーンの作成) を選択します。
- [Domain Name] と [Comment] に名前とコメントを入力します。
- Type には、リードレプリカが置かれている VPC のプライベートホストゾーンを選択します。プライベートホストゾーンを選択すると、外部リソースからのリードレプリカへのアクセスがブロックされます。あるいは、[Type] (タイプ) を [Public] (パブリック) のままにしておきます。
注意: [Public] (パブリック) と指定する場合、ホストゾーンで指定したドメインの所有権を持っている必要があります。 - [Create] (作成) を選択します。
レコードセットの作成
ホストゾーンを作成したら、それを選択し、[レコードセットの作成] を選択します。次のような属性を使用します。
- [Name] に名前を入力します。これはリードレプリカにアクセスするためのエンドポイントの URL として使用します。
- [Type] (タイプ) を [CNAME] に設定します。
- [TTL value] (TTL 値) には、ニーズに合わせて任意の値を設定することができます。これにより、各リードレプリカがどのくらいの頻度でリクエストを受け付けるかが決まります。
- [Value] (値) フィールドに、最初のリードレプリカの DNS エンドポイントを貼り付けます。
- [Routing Policy] (ルーティングポリシー) で、[Weighted] (加重) を選択します。
- [重み] フィールドに値を入力します。各レプリカのレコードセットには必ず同じ値を使用してください。
- [Set ID] (ID を設定) で、名前を入力します。
- ヘルスチェックを設定するのがベストプラクティスです。詳細については、「Amazon Route 53 ヘルスチェックの作成と DNS フェイルオーバーの設定」を参照してください。
レコードセットを設定したら、[Create] (作成) を選択します。
以上のステップを繰り返して、各追加リードレプリカのレコードセットを作成します。すべてのレコードセットが同じ名前、同じ生存時間 (TTL) の値、および同じ重みの値を使用していることを確認します。これにより、リウエストを均等に分散させることができます。
アプリケーションのエンドポイントを変更せずに、より多くのリードレプリカを追加し、さらに多くの接続あるいは高いリソース使用率に対応することができます。Route 53 ヘルスチェックを導入すれば、Route 53 が利用できないリードレプリカ以外のトラフィックへと確実に向かわせることができます。