これまであまり物理的なネットワークに触れてこなかったエンジニアを対象に、AWSを用いてネットワークの基礎知識を解説する連載。今回は、サーバ公開で利用するネットワーク機能について解説し、DNSのサービスの「Amazon Route 53」の設定を通して、名前解決を行う方法を示す。
この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。
これまであまり物理的なネットワークに触れられてこなかったSEやサーバ管理者、情シスなどの方を対象にネットワークの基本を「Amazon Web Services」(AWS)を用いて解説する本連載「AWSで学ぶクラウド時代のネットワーク基礎知識」。
今回は、サービスをインターネットに公開する方法についてネットワークに特化して解説します。DNSサービスによるドメイン名からのIPアドレスの解決を主として、負荷分散などについても補足します。
皆さんは日々さまざまなインターネットサービスを利用していると思います。また、会社や個人でインターネット向けにサービスを提供しているかもしれません。インターネットでサービスを提供するに当たり、必要となる要素、機能として主に次の5つが挙げられます。
連載第2回で記載した内容ですが、インターネット上で通信するには「グローバルIPアドレス」を用いたアクセスが必要です。
ただしサービスを提供するサーバ自身に直接グローバルIPアドレスを割り当てて直接インターネットに公開すると、インターネットからさまざまな攻撃を受けることになりかねず、セキュリティの観点で避けるべきです。
そのため一般的には、サーバでもNAT(Network Address Translation)機能を用いてグローバルIPアドレスから「プライベートIPアドレス」に変換してサーバにアクセスさせたり、グローバルIPアドレスを割り当てたプロキシサーバがクライアントからの通信をリバースプロキシ機能で代理応答しながらプライベートIPアドレスを割り当てたサーバと通信したりするといった方法が採られます。
IPアドレスは一見するとランダムな数字と「.」の羅列であり、非常に覚えにくいものです。アドレスを見てもアクセス先の情報は一切分からず、この値を直接指定して通信することは現実的ではありません。そこで「ドメイン名による宛先の特定」によって宛先として意味のある文字列で指定して通信を行える仕組みが実装されています。
例えば、何らかのWebサービスを利用する際には、「http://」「https://」から始まる「URL(Uniform Resource Locator)」という文字列を利用してアクセスしていると思います。URLは「https://」などに続けて宛先の情報を指定しますが、その際皆さんがグローバルIPアドレスを指定して通信することはほぼなく、「www.netone.co.jp」などの「FQDN」(完全修飾ドメイン名)というホスト名とドメイン名をつなげた文字列を指定すると思います。このFQDNが相手を特定する情報となります。
このFQDNの文字列はあくまでも便宜的な名前にすぎず、これだけでは相手の場所を特定できません。インターネットでは上述のようにグローバルIPアドレスを用いて通信します。そこでFQDNとIPアドレスがマッピングされたデータベースから宛先のIPアドレスを特定し、そのIPアドレスを用いて通信します。
このために必要となるシステムプロトコルのことを「DNS(Domain Name System)」、DNSの機能でFQDNからIPアドレスを特定することを「名前解決」といいます。
DNSサービスはインターネット上にある多数の事業者の連携によって提供されています。ユーザーはインターネットを契約しているサービスプロバイダーやGoogleなどが無料公開しているDNSサービスを利用することで、名前解決が可能になっています。
DNSの詳細については本稿では述べませんが、興味がある方はこちらの記事を参照してください。
サーバ公開における重要な要素として、「3. セキュリティの保証」があります。サービスを公開できたとしても、セキュリティ対策が不十分なサービスは問題を起こす原因となり得ます。
ネットワークに関するセキュリティ対策の方法については次回解説します。
サービスを提供するに当たって、物理機器や仮想マシン、プログラムといったものを利用しますが、物理的な故障をはじめ、サービスの利用頻度増大に伴う高負荷、CPUやメモリなどのパフォーマンス不足、ソフトウェアのバグなどによってサービスが利用できなくなる、あるいは利用しにくい状況が発生し得ます。
この対策として、各サービスの構成要素を複数用意し、「ロードバランサー」などで各要素に通信を振り分ける構成が取られます。これによって、単体では処理が難しい高負荷でもサービスレベルを維持することが可能となります。
またロードバランサーが振り分け先の構成要素を監視し、故障や異常が発生したノードの発見時に振り分け対象から除外することで冗長なサービスを提供できます。
ここまでの対応でサービス利用者とサービス環境が近ければサービスレベルの高いサービス提供が可能となります。しかし、例えば日本のサービス利用者がブラジルのサービスを利用する場合など離れた環境間での通信は遅延が大きくなり、サービスレベルの維持が難しくなります。そこで「高速なサービスの提供」が必要となります。
その方法の一つとして、画像や音楽など静的なコンテンツをあらかじめワールドワイドに展開しておき、利用者は自身の場所に近いコンテンツを取得することで高速なサービス提供を可能とする機能があります。この機能を、サービスとして提供するものを「CDN(Content Delivery Network)」といいます。
また世界の複数の地点に同様のサービスを展開しておき、利用者がサービスを利用するに当たり、FQDNから名前解決する際に利用者に近いサービスのグローバルIPアドレスを返すことによって高速なサービス提供を実現することも可能です。
ここからはAWS環境でのサーバ公開方法を紹介します。前項で解説した機能はそれぞれ以下のAWSのネットワーク機能で実現可能です。
項目 | 機能 | AWSサービス名称 |
---|---|---|
グローバルIPアドレスでの通信 | グローバルIP | Elastic IPアドレス |
NAT | インターネット ゲートウェイ Elastic Load Balancing(Network Load Balancer) |
|
リバースプロキシ(ロードバランサー) | Elastic Load Balancing(Classic Load Balancer、Application Load Balancer) | |
ドメイン名による宛先の特定 | DNS | Amazon Route 53 |
セキュリティの保証 | IPフィルター | セキュリティグループ ネットワークACL |
ファイアウォール | AWS Network Firewall | |
サービス提供の継続 | ロードバランサー | Elastic Load Balancing(Classic Load Balancer、Network Load Balancer、Application Load Balancer) |
高速なサービスの提供 | CDN | Amazon CloudFront |
DNS | Amazon Route 53 | |
Copyright © ITmedia, Inc. All Rights Reserved.