はじめに
仕事柄、オンプレで稼働しているシステムをAWSにリホストしたいという依頼をよく受けます。その時、必ず検討しなくてはならないのが移行テストです。リホストとは言えAWSへ移行するためには基本的にIPアドレスは変更になります。オンプレでIPアドレスを維持したままのリニューアルに慣れたお客様は割と抵抗がある様ですね。今回は、IPが変わる移行でどうやってテストをするかを考えてみたいと思います。
移行しやすい構成
IPアドレスが変更になることを前提に移行テストを考えると、基本的にサーバ間連携を再チェックする必要があります。
-
IPアドレスの直参照をしている場合はできる限りDNS名に参照に切り替える
これは、DBをRDSにしたいなど考えた時、RDSはIP直指定はNGです。なぜなら、RDSのIPアドレスはフェイルオーバー時に変わります。オンプレの負荷分散装置では1つのVIPに対し、負荷分散をしてVIPは変わらないフェールオーバーが一般的かと思いますが、AWSのELBでは、マルチAZによる冗長化が基本なので、そもそもセグメントが違い同じIPに出来ません。 -
DNS名はホスト名ではなく別の参照名を付ける
リホストの場合はアプリの作りを変えるわけにはいかないのでうまくいかないこともありますが、基本的にはホスト名は変更できるようにしておくべきです。IPアドレスとホスト名を同時に変更し、サーバ間参照時に使うDNS名だけを合わせるのが移行時最も楽な構成だと思います。 -
DNSを引くタイミングを確認
例えば、WEBサーバで動いているPHPがDB参照する時、どの段階でDBのDNS名をIPアドレスに変更しているか確認する必要があります。最近はちゃんとDNS TTLを参照してくれている事が多いですが、昔のアプリだと、apacheの起動時にしかDNSを引かないという構成になっていて絶句したことがあります。。。DBコネクションプールを使ったりしていると、そもそもコネクションが維持されている間は元にIPに接続されてしまいます。(まぁ、元のIPに接続できなくなれば強制的に切り替わるかもしれませんが)
その辺りを気にして頂ければと思います。
移行方針とテスト手法検討
前章で述べた通り、基本的にはリホスト時にはIP、ホスト名は変更してコピーを作り、現行本番を動作させたまま、テストを行うのがいいと思います。この時、サーバ間参照名を変えないでテストするためには、テスト用のDNSサーバを用意して同じ参照名で別のIPアドレスを返すようにするのが楽だと思います。また、この時、注意して欲しいのが、現行本番への影響です。間違えて本番へ接続してデータを更新してしまったりしないように、しっかりSecurityGroupなりで、アクセスできないようにしてテストする事が重要です。
まとめ
IPアドレス、ホスト名に依存しないアプリ構成を心がけましょう。
移行テスト時は、本番環境に影響しないようにしっかりSecurityGroupを掛けましょう。