さくさく進めたい。
VPC(Amazon Virtual Private Cloud)
概要と関連記事
AWSのサービスを使用するための仮想的なネットワークといったところでしょうか。
あくまで仮想的にネットワークを構成するため、ネットワーク機器が不要となります。
簡単なものであれば以下の記事のように全くのインフラ素人でも形は作れたりするのです。
VPC構築の流れと各サービスについて
【全体イメージ図】
【VPC】
構築するネットワークの一番大きい単位となります。
VPCはリージョン内に生成し、リージョンを跨いだ生成は基本的にできません。
VPCの生成ではプライベートアドレス空間はCIDRブロックの16~28の間で設定します。
VPCが一番大きい単位になるので、内側に構築するネットワークはその範囲の中でIPアドレスを扱うことになります。
【サブネット】
サブネットはVPCの範囲内で、一つのアベイラビリティゾーン内で生成します。なのでもちろんアベイラビリティゾーンを跨いだ生成はできません。
実機学習では全く意識したことがなかったですがAWSのサブネットの場合、サブネット単位で割り当てることができないアドレスは2つではなく、5つになるそうです。
内2つはネットワークアドレスとブロードアドレスですが、AWSで他3つが定められていると。
サブネットの種別はプライベートサブネットとインターネットへ接続できるパブリックサブネットに分類される。
インターネットに接続できるとは、後述するインターネットゲートウェイが設定されているということ。
また実機学習からも学んだ通り、RDSをVPC内で生成するには、複数のサブネット(アベイラビリティゾーン)に設置しなければならない。
パブリックIPのデフォルト割り当てもこの時点で設定する。
【ゲートウェイ】
VPC単位にアタッチするゲートウェイです。(そのまま)
実際に使ったことがあるのはインターネットゲートウェイだけですが、本来は複数の種類が存在します。
・インターネットゲートウェイ
インターネットに接続する場合に設定する
・仮想プライベートゲートウェイ
他の拠点とVPN接続する際に設定する。VPC側に設定するもの
・カスタマーゲートウェイ
VPN接続する際にVPN側に設定するもの。
・NATゲートウェイ
NAT機能を持ったゲートウェイ、VPC内からはインターネットに接続できるが、インターネット側からは接続できない。
【ルートテーブル】
VPC内でルーティングを行うための機能。
サブネットとゲートウェイを紐づける。
【ネットワークACL】
セキュリティに関しては各サービス(インスタンス)において、セキュリティグループによる設定もできますが、VPCではネットワークACLによる設定もできます。
特徴としてはセキュリティグループはステートフルですが、ACLはステートレスです。
つまりはセキュリティグループはインバウンドの設定のみでアウトバウンドを定義する必要がありませんでしたが、ACLでは相互に通信を行うためにはインバウンドとアウトバウンドの設定を行う必要があります。
AWSでの接続
AWSのサービス間で接続
AWSのサービスでは、VPC内でプライベートIP空間で利用できるサービスとパブリックIPアドレス空間で利用できるサービスに分類されます。
パブリックIPアドレス空間で利用できるサービスは基本的にはインターネットからのみアクセス可能ですが、VPC内のサービスからアクセスできるようにするためにはエンドポイントを設定します。
VPC間で接続
他のリージョンやアカウントのVPC間ではそのままでは接続できません。
VPC間で接続を行うためには、ピア接続を行います。
ELC(Elastic Load Balancing )
概要と関連記事
ひとことロードバランサですね。
印象としては実際にオンプレのLBを設定したことがなくても、机上の知識があるだけで理解が楽になったように感じました。
関連記事
ELBの概要と種類
ELBはVPC内に構築を行い、異なるアベイラビリティゾーンに存在するインスタンスに処理を分散する。
ELB自体はアベイラビリティゾーンの外にある扱い??
現在提供されているELBは主に以下の三種。
それぞれの違いについては抑えておくべき。
・Application Load Balance(ALB)
・Network Load Balance(NLB)
・Classic Load Balance(CLB)
【Classic Load Balance】
基本的なLB機能。
無料枠では利用したが、VPC以前のネットワークで利用されていたサービスであるため、試験的な重要性は低いか。
L4/L7層に対応するリバースプロキシ型。
他の種類については後述する。
Application Load Balance(ALB)
基本的な機能はLBとしてのCLBの機能をサポートするが、いくつかの機能が追加されている。
HTTP(S)に対応するL7層のリバースプロキシ型。
■パスベースルーティング
リクエストのURLに基づいて転送する。
以下のようなリクエストに対してALB一台で振り分けを行うことができる。
http ://example.com/app1
http ://example.com/app2
http ://example.com/app3
■ホストベースルーティング
パスベースと同様にホストごとの振り分けもALBの一台構成で行うことができる。
http ://example1.com/app
http ://example2.com/app
http ://example3.com/app
そのほかに同一のインスタンスに対してのポートによる負荷分散も可能となる。
Network Load Balance(NLB)
TCPやTLSをサポートするL4層(L5)NATロードバランサ型。
NLB自身にはセキュリティグループは設定できないという特徴があるみたいです。低層レイヤを扱ってるゆえですかね??
■固定IPアドレス
NLBは自身に固定IPアドレスの設定が可能となる。
ロードバランサのアクセス先をドメイン名ではなく、IPアドレスで指定したい場合に使用せざるおえない。
■ネットワーク経路
知っている言葉だとDSR(Direct Server Return)のような感じでいいでしょうか。
通常はLB構成ではトラフィックは行きも帰りもLBを経由するがNLBでは帰り(応答)のトラフィックではLBを経由させずに返答を行うことができる。
ALBの構成と比較すると一目両全。※画像はあくまでイメージです。
【ALBの構成】
【NLBの構成】
この点から高パフォーマンスが期待できる。
※ちょっと調べたところ、厳密にはDSRとは違うとの記述もみかけました。まぁ雰囲気DSRぐらいでおさえておいた方がよいでしょう。
ELBの機能と特徴
■ヘルスチェック
通常のLBのようなヘルスチェックです。これはCLBにも存在するため実機で確認しました。
対象のインスタンスに対して、あくまで死活監視を行う機能であるため、異常が発生した際にはトラフィックを切断しますが、それ以上の措置(再起動等)は行わない。
■スケーラビリティ
ELBは負荷の増減に応じて、自動でスケーリングを行うが対応が間に合わない場合にはHTTP503を返却する。
また、負荷の急増に対応できるようにしておくためには暖機運転を行う。
暖機運転(Pre warminng)は急激なトラフィックの増加に対応するために予めスケーリングを行っておくこと。使用するためには、AWSサポートに申請の必要があるとのこと。
■SSL Termination
SSL TerminationはELBをSSLの終端にする。つまり、クライアントELB間の通信をHTTPS(暗号化)し、ELB、インスタンス間をHTTP通信を行う。
SSL通信処理の負荷軽減や証明書をインスタンスごとに管理する必要がなくなるというメリットがある。
なお、NLBは対応していない。
■スティッキーセッション
同一クライアントからのリクエストを特定のインスタンスに送信する仕組み。
大きく二種の仕組みが提供される。
・任意の有効期限を指定する
設定された有効期限の間、同一インスタンスとのセッションを維持する。
・アプリケーションのCookieに従う
指定したCookie名のセッション維持を行う。Cookie名を含むリクエストがあった場合に同一インスタンスとの通信を維持する。
最近は一時的に記事のペースが遅いので少し細かめにここまでで。