AWS EC2インスタンス上にインストールされているSelf ManagedなMongoDB ClusterをAtlasに移行する際の覚書
2019/10/07 追記
関連記事: NLBでTLS終端を行いAtlasのLiveMigrationを行う も書きました。
基本的には公式ドキュメントに網羅されているが
Enter the hostname and port of the primary member of the source cluster into the provided text box. For example, mongoPrimary.example.net:27017.
とある。
Live Migration Server自体は、Atlas上に作成するClusterとは別物であるため、vpc peeringを行うことはできないので、PrimaryサーバがLive Migration Serverからインターネット経由で見える必要がある。
今回移行対象のDBサーバーはPrivate subnet
に配置されているため、Elastic IPは存在しない。
そこで以下のように、Network Load Balancer
を経由することでLive Migrationを実行する。
PrimaryDBインスタンスが稼働しているサブネットのAZ内のpublic subnet内にNLBを作成し、
NLBのリスナーおよびターゲットとして、private subnetのDBインスタンスの27017ポートを指定する。
※ 今回のLBは負荷分散ではなく、LiveMigrationのための疎通が目的であり、かつPrimaryインスタンスに接続する必要があるため、LBの配置されるAZは1つのみ指定し、ターゲットも1つのインスタンスのみ指定する。
※ LiveMigration実施中にフェイルオーバーが発生した場合は未検証。
また、PrimaryDBが稼働しているEC2インスタンスに以下を許可するキュリティグループを一時的にアタッチする
- AtlasのLiveMigration画面で指定されたCIDRからの27017ポートへのInbound通信
- Public SubnetのCIDRから27017ポートへのInbound通信 (これがないとLBのヘルスチェックに成功しない)
- 接続確認用のオフィスのIPなどから27017ポートへのInbound通信
LBのヘルスチェックが通れば
mongo "mongodb://<LBのDNS name>"
で接続することができるようになる。
Atlasのコンソールでも<LBのDNS name>:27017
を指定することで無事Live Migrationが開始する。
関連:
パブリック向けロードバランサーをプライベート IP アドレスを持つ EC2 インスタンスへ接続する方法を教えてください。