LoginSignup
10
7

More than 5 years have passed since last update.

Amazon RDS Read ReplicaをNLBでロードバランシングする

Posted at

この記事は Relux AdventCalendar 4日目の記事です。

RDS Read Replicaのロードバランシング

複数のRead Replicaをロードバランシングする方法はいくつか考えられます。

  • Reader Endpointを使用する
  • HAProxyやNginxなどのソフトウェアを使用する
  • NLBを使用する

Reader Endpoint

Reader EndpointはAWS RDSの機能として用意されたもので、特別な設定をすることなく利用できます。
クラスタ内のRead Replica全てに均一に分散するもので、特定のRead Replicaを対象から外すといったことはできません。
短い時間(1秒ごと)でCNAMEを切り替えてラウンドロビンするような実装となっており、実際はロードバランサではありません。

HAProxyやNginx

AWSで行うとしたら、専用のEC2インスタンスを用意し、自分でインストール・設定・管理をする必要があります。

NLBを使用する

2017年9月ごろに、ELBの一種としてリリースされた Network Load Balancerは、EC2インスタンスだけでなく、任意のIPアドレスをターゲットとしてTCPロードバランサを構築できます。
これを使用することで、特定のRead Replicaのみをターゲットとした負荷分散環境を簡単に実装することができます。

NLB で Read Replica のロードバランシングを行う

NLBの構築

Screen Shot 0029-12-04 at 7.21.32.png
EC2 Load Balancersの設定画面から「Create Load Balancer」をクリック

Screen Shot 0029-12-04 at 7.21.58.png
Network Load Balancer を選択

NLBの基本設定

Screen Shot 0029-12-04 at 7.23.48.png
Nameには任意の名前を設定。
Schemeは、VPC内でのみ使用するのであれば internalを選択。

Listenerは、Aurora(MySQL)を対象とするので 3306/TCP

Availability Zoneでは使用するVPCを選択し、エンドポイントを置くサブネットを選択する。

ルーティングの設定

Screen Shot 0029-12-04 at 7.24.28.png

ALBと同じようにターゲットグループを作成する。
AuroraのReplicaをターゲットとする場合には、3306/TCP、Target typeは ip とする。

ターゲットの登録

Screen Shot 0029-12-04 at 7.25.26.png

ターゲットとして、ロードバランシングの対象としたいReplicaインスタンスのIPアドレスを登録する。
IPアドレスはReplicaインスタンスのDNS名をnslookupやdigで引いて調べる。

Security Groupの設定

Screen Shot 0029-12-04 at 7.35.59.png

NLBにはSecurity Groupを設定できない。
なので、NLBのAvailability Zoneに設定したサブネットのネットワークアドレスを許可するよう、RDSのSecurity Groupに設定をする。

疎通確認

Screen Shot 0029-12-04 at 8.07.04.png

アプリケーションサーバから接続可能なことを確認する。

最後に

今のところ、弊社では開発環境にのみ導入をし、試験運用を行なっております。
特に動作にが問題なく有用そうであれば、本番環境への導入を進めていきたいと思っています。

10
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
7