LoginSignup
0

More than 3 years have passed since last update.

AWS上のMongoDBをAtlasにLiveMigrationする

Last updated at Posted at 2019-09-12

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を実行する。

Untitled Diagram.png

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 インスタンスへ接続する方法を教えてください。

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
0