接続許可済みIPアドレスのプール
目次[非表示] |
解決したい課題
セキュリティ上の理由や、接続制限を行うために、接続元のIPアドレスを制限しているケースがある。 例えば、携帯キャリアに対してメールを送信する際に、事前に登録しておいたIPアドレスからしか送信を受け付けようにしているケースや、 指定のネットワーク宛てのサービスで接続元を制限しているようなケースなどだ。 クラウドでサーバーを起動する場合はグローバルIPアドレスが付与されるが、多くの場合、指定したグローバルIPアドレスを付与できない。 そのため、サービス元に毎回登録する必要が出てくるが、登録が手動だったり何かしらの処理手順が必要だったりする場合、クラウドの柔軟なリソース調達のメリットを得にくくなる。
クラウドでの解決/パターンの説明
事前に必要な分のグローバルIPアドレスを確保し、接続先に登録しておく。サーバーの変更や増減があった場合、利用可能なIPアドレスプールから使用できるものを探し、サーバーに割り当てる。 サーバーへのグローバルIPの割り当ては、サーバー自体にこの処理を入れ、起動時に自身に割り当てるようにしておくことで、オートスケーリング時に自動的に実行できる。
実装
- ElasticIPアドレスを必要な数だけ取得する。
- 取得したElasticIPをテキストファイルに列挙して、IPアドレスリストとしてS3に保存する。
- EC2をオートスケーリングで起動する。起動の際、IPアドレスリストのパスをタグにセットする。
- 起動したEC2インスタンスの初期化スクリプトで、タグに設定されたパスを基に、S3からIPアドレスリストを取得する。
- 自分のインスタンスのリージョンにあるElasticIPの中で、未使用のものの一覧を取得する。
- IPアドレスリスト内にあり、未使用のElasticIPを自身のインスタンスにひもづける。
構造
利点
- オートスケーリングでサーバーが増減した場合も、指定のElasticIPのリストに入っているEIPを利用できる。
- 設定ファイルはS3に入っているため、IPアドレス数などの設定変更は容易に行える。また、S3へのアクセスパスなどの設定は、Cloud DIパターンを利用して柔軟に変更できる。
注意点
- EC2インスタンスにひもづけていないElasticIPアドレスは、課金対象となる。
- VPCのプライベートネットワーク内ではAPIを利用できないため、インターネットへの直接アクセス、もしくはNAT経由でアクセスできるインスタンスでパターンを実装する必要がある。
その他
関連ブログ