はじめに
記事をご覧いただきありがとうございます。
本記事ではAmazon RDS for PostgreSQL の(クロスリージョン)レプリケーションの通信について調べています。
レプリケーションの通信のルーティングは自身で行わないといけないのか、AWSの裏側で処理されているのか確認しました。
設計で同じ疑問に悩んでいる人の一助になれば幸いです。
AWSを触り始めたばかりなので誤り等あるかもしれません。
見つけた際は暖かくご指摘いただけますと幸いです。
結論
Amazon RDS for PostgreSQL のクロスリージョンレプリケーションはAWSの裏側で通信されており、自身でVPC ピアリングやルーティングの設定は不要という結論になりました。
設定しなくていい!やったね!
目次
検証方法
以下のような構成を作成し、データベースがレプリケーションされていることを
Cloud9経由で確認しました。
インターネットゲートウェイはCloud9に接続しターミナルを操作するために配置しています。
検証内容
検証内容について書いていきます。
注意事項
検証の手順を以下に掲載していますが、AWSで同じ構成を作成した場合、
料金の発生する可能性があります。
請求について責任はとれませんのでご了承ください。
VPC・サブネット・ルートテーブルの作成
私の場合、1からひとつづつ作成しましたが、ルートテーブルの設定等で苦戦したので
VPCなどを作成から作ることをおすすめします。
ap-northeast-1a のsubnet_rds_replicationにプライマリDBを構築し
ap-northeast-3aのtest_subnet_rds_replication_2にレプリカを作成した
RDSを作成したルートテーブルは以下
外には出られないようになっている
RDSの作成
今回はRDS for PostgreSQL を無料利用枠で作成する。
Cloud9からログインできるようパスワードを設定しておく
バックアップは有効にしないとレプリカの作成ができないらしい
https://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/UserGuide/USER_ReadRepl.html#USER_ReadRepl.Create
リードレプリカの作成を参照
レプリカの作成
DBサブネットグループに関して
ここですこしハマった
レプリカを作成時DBサブネットグループを選択する箇所があるが、
事前に大阪リージョンでサブネットグループを作成する必要がある。
また、DB サブネットグループを作成する際2つ以上のAZとAZ内のサブネットを選択する必要がある。
無しを選択できるがその場合はデフォルトのVPCに作成される。
↑なしを選択して作成できなかった例
レプリケーションの確認
プライマリDBにCloud9からアクセスしてテーブルを以下のように設定
同期できていることが確認できる
まとめ
- RDS for PostgreSQLのレプリケーションはAWSの裏側で通信されていてネットワークの設定は不要
- RDSのレプリカ作成時にDBサブネットグループを作成が必要
最後に
今回記事を初めて書いたので見づらい点があったと思いますが
最後まで見ていただきありがとうございます。
誤りなどがありましたらご指摘いただけますと幸いです。