Aurora MySQL または PostgreSQL はどのようにしてリーダーノード間でワークロードを分散しますか?

所要時間1分
0

Amazon Aurora for MySQL または PostgreSQL がリーダーノード間でワークロードを分散する方法を知りたいと考えています。

解決策

リーダーエンドポイントを使用して、Amazon Aurora クラスターのリーダーノードに接続します。

接続のローテーションディストリビューションを確認するには、シェルコマンドを実行します。Aurora がリーダーエンドポイントへの接続の負荷分散をどのように試みているかを確認するには、次の例のようなコマンドを実行します。

while sleep 5; do dig xxx-cluster.cluster-ro-xxxxxx.us-east1.rds.amazonaws.com|grep CNAME; done

リーダーエンドポイントを解決するたびに、接続可能なインスタンス IP アドレスが取得されます。この IP アドレスは、ローテーションディストリビューションに基づいて選択されます。

次のシナリオでは、各リードレプリカへの DB 接続が均等に分散されない場合があります。

  • クライアントが DNS 情報をキャッシュしている。クライアントがキャッシュされた接続設定を使用して同じ Aurora レプリカに接続すると、不均等な分散が発生します。DNS キャッシュは、ネットワーク、オペレーティングシステム、アプリケーションコンテナなど、どこでも発生する可能性があります。
  • DB インスタンスがフェールオーバーしている場合、リーダーエンドポイントは接続をリダイレクトする可能性があります。リーダーエンドポイントは、接続を一時的に DB クラスターのプライマリ DB インスタンスに転送することがあります。これは、Aurora レプリカがプライマリ DB インスタンスに昇格したときに発生します。
  • リードレプリカが利用できないか、ヘルスチェックに失敗した。
  • アプリケーションはJavaで記述されており、TTLキャッシュを無効にしたり調整したりすることはありません。TTL キャッシュを無効化または調整していないと、Java 仮想マシン (JVM) が DNS を無期限にキャッシュする可能性があります。詳細については、「DNS 名参照用の JVM TTL の設定」を参照してください。
  • 接続が同時に発生した場合、接続は同じリーダーエンドポイントに送信されます。

ワークロードの分散をより柔軟に管理したい場合は、カスタムエンドポイントを使用できます。たとえば、クラスター内で異なる DB インスタンスサイズを使用する場合は、カスタムエンドポイントを使用できます。

関連情報

Amazon Aurora 接続管理

AWS公式
AWS公式更新しました 2ヶ月前
コメントはありません

関連するコンテンツ