自身の知見を深めるためにも、学んだことを忘れないためにも、AWSの各種サービスについて分かりやすく記事にしていこうと思います。
まずは避けて通れないVPCから解説します。みなさん、ネットワークって苦手ですよね?私はインフラエンジニアとして10年以上携わっていますが、ネットワークが一番苦手です。で、VPCはネットワークです。頑張って自分の言葉で説明します。
目次
VPCとは
VPCとは「Amazon Virtual Private Cloud」の略で、クラウド上の仮想ネットワークを意味します。公式には以下のように特徴が表現されています。
- 接続の保護とモニタリング、トラフィックのスクリーニング、仮想ネットワーク内のインスタンスのアクセス制限を行います。
- 仮想ネットワークのセットアップ、管理、検証に費やす時間が短縮されるため、仮想ネットワーク内で実行されるアプリケーションの構築に集中できます。
- 独自の IP アドレス範囲の選択、サブネットの作成、ルートテーブルの設定により、仮想ネットワーク環境をカスタマイズします。
んーわかるような分からないような、ですね。早速解説、と行きたいところですが、VPCの前にまずAWSのデータセンターと概念(リージョン、ゾーン)について説明が必要でした。
リージョン、ゾーンとは
AWSはこのデータセンターを世界中の沢山の場所に持っています。なぜ世界中に沢山あるか、ですが、AWSには「Design for Failure」というとても重要な概念があります。これは「障害は起きるものだから、起きても問題ないように設計しましょう」という概念です。この概念がデータセンターレベルでも適用されています。どういうことかというと、データセンターが全面的に障害になったとしても、別のデータセンターで業務継続できるような環境をAWSは提供してくれています。
リージョンおよびゾーンの概念について説明します。世界中の沢山のデータセンターを地域単位で区切ったものをリージョンと言います。日本には東京リージョンと大阪リージョン(大阪リージョンは特殊な制限が多くあります)の2つがあります。リージョンの中に複数のデータセンターがあります。東京リージョンには3つのデータセンターがあります。これをアベイラビリティゾーン(AZ)と言います。つまり、Design for Failureの考え方をすると、データセンター単体の障害は東京リージョン内の別データセンターで業務継続、例えば関東大震災のように東京全域が障害発生した場合は、地理的に離れた別リージョン(大阪リージョン等)で業務継続、といったシステムを構築することが出来ます。
実際に大規模な障害は何度か起きています(「東京リージョン 障害」等で検索すると出てきます)。オンプレミスで何千・何万ものハード(CPU筐体やDISK、NW機器等)を運用している大企業のシステムを見ていた経験から分かりますが、ソフトウェアに問題がなくてもハード障害というのは避けられません。この規模の数があると、毎日のようにどこかしらのハード故障は起きています。
ちなみに、執筆時点では世界に25のリージョン、81のアベイラビリティゾーンがあります。すごいですね…
(リージョン・ゾーンを踏まえ)VPCとは
VPCとは前述の通り一言で表現すると「仮想ネットワーク」です。物理的なネットワークというと、例えばオフィスの1フロアを1つのネットワークにといった具合に、一般的には物理的なロケーションで1つのネットワークを作成するものです。この考えをベースにすると、VPCはAZにつき1つなんだな、と思いそうですが、VPCはどのリージョンに作成するか、を指定します。つまり物理的なロケーションをリージョン内であれば跨がって1つのネットワークとすることが出来ます。複数のAZを1つのネットワークのように論理的に集めて扱えます。
VPCを作成する際に、VPC内で扱えるネットワークのレンジ(CIDR)を決定する必要があります。これは非常に重要です。例えば、IPv4で10.0.0.0/24と指定した場合、VPC内では10.0.0.0~10.0.0.255の256個のIPアドレスしか使えません(実際はAWSが利用する分もあるのでもっと少ない)。これは後で変更できないので、余裕をもっておくとよいでしょう。また企業内で複数のアカウント・複数のVPCを作成する際にIPアドレスが重複しないように予め管理しておくことが望ましいです。
また、VPCに限らずですが、クラウドサービスを利用する上での制限・制約事項が存在します。詳細は以下を確認してください。
例えば、リージョンあたりの VPC の数が5と制約があります。東京リージョンしか利用しないとした場合、1アカウントには5つしかVPCが作成できないことを意味します。ただし、調整可能列が「はい」になっていますので、申請を行うことで拡大することは可能です。このような調整のことを「上限緩和」とよく呼びます。
引用元:Amazon VPC クォータ
サブネットとは
サブネットとはVPCの中のAZ単位のネットワークです(VPCはAZを跨ぐネットワーク)。2つのAZを利用する場合、このようにVPCのネットワークを2つのサブネットに分割します。
VPC : 10.0.0.0/24
Subnet-a : 10.0.0.0/25
Subnet-c : 10.0.0.128/25
サブネットには大きく2種類あります。それはインターネット接続するサブネット(パブリックサブネット)か、インターネット接続しないサブネット(プライベートサブネット)かの2種類です。
2種類に分ける必要性についてですが、例えば、このブログのようにインターネットから直接アクセスするサーバはパブリックサブネットに配置します。でないとインターネットからアクセスできません。ですが、データベースはインターネットから直接アクセスされるとセキュリティ面で不安です。データベースはパブリックサブネットに配置したサーバからしかアクセスできないようにしたいです。なのでデータベースは通常プライベートサブネットに配置します。そしてデータベースにはパブリックサブネットのCIDR(下記例では10.0.0.0/26、10.0.0.128/26)のみからの通信を許可するように設定します。この許可設定をAWSではセキュリティグループと呼びます。
Multi-AZかつパブリック・プライベートを均等に割り振った場合
VPC : 10.0.0.0/24
Subnet-a(パブリック) : 10.0.0.0/26
Subnet-a(プライベート) : 10.0.0.64/26
Subnet-c(パブリック) : 10.0.0.128/26
Subnet-c(プライベート) : 10.0.0.192/26
※これが一般的な構成です。VPCを/24にしてしまったために、各サブネットには64個のIPアドレスしか持てなくなってしまいました。サブネットを増やしたい、と要件があるとさらに減ってしまいますね。この例からもVPCのCIDRは余裕をもって大きくとることが望ましいです。
インターネットゲートウェイ
このインターネットに接続するかどうか、というのはどういう風に設定するのかを説明します。AWS内のサーバ等からインターネット接続可能かどうか、というのはインターネットゲートウェイ(IGW)にルーティングされているか、ということになります。VPCには1つのIGWを作成でき、通常AWS内のルーティングにないものはIGWへルーティングされるようなルートテーブルを作成します。
少し踏み込んだ話をしますが、コスト要件やシステム要件から、パブリックサブネット・プライベートサブネットを分ける要件やAZを分ける要件がない(Multi-AZ構成としない)ということも多くあると思います。ですが、少なくともこの4分割構成でサブネットまでは作成しておく(採番できる余力を残しておく)ことをお勧めします。これは後からCIDRは変えられないためです。あとからサブネットを追加しようにもCIDRが枯渇していては分割することもできませんので。(VPCから作り直しになります)
ここまでを踏まえて簡単に
- VPCとは「AWS内に作られる仮想ネットワーク」のこと
- 仮想ネットワークとは複数のデータセンター(ゾーン)を跨いだ仮想的なネットワークのこと
- データセンター(ゾーン)単位のネットワークはサブネットといい、VPCの中に作成する
ですかね。んー、簡単に説明するのは難しい。質問等あればお問い合わせください。
別の機会で、実例ベースでVPCの具体的なことを説明しようと思います。(この設定はこういうことを意味しているよ、という内容)
最後に。初心者に役立つ本の紹介
AWSはとても幅が広く、検索等で部分的に理解することは出来ても全体を体系的に理解することが難しいです。公式ドキュメントを上から順に読んでいくことで理解が深まりますが、資格取得の書籍等で勉強することをお勧めします。
なぜ資格取得の書籍かというと、重要な部分を浅く抑えているからです。全体を体系的に浅く押さえておき、深く知る必要があるときに色々調べたり、試したりするとバランスのよいAWSエンジニアになれると思います。このあたりの書籍が分かりやすくおすすめです。
AWS認定資格試験テキスト AWS認定ソリューションアーキテクト – アソシエイト 改訂第2版 [ NRIネットコム株式会社 ] 価格:2,618円 |
みんなのAWS 〜AWSの基本を最新アーキテクチャでまるごと理解! [ 菊池 修治、加藤 諒 ] 価格:2,618円 |
改訂新版 徹底攻略 AWS認定 ソリューションアーキテクト – アソシエイト教科書[SAA-C02]対応 [ 鳥谷部 昭寛 ] 価格:2,618円 |
コメント