🦛

AWS EC2構成

2024/08/06に公開

EC2とは

EC2とは、「Amazon Elastic Compute Cloud」の略。AWSで利用できるシステムのひとつ。
AWS上に仮想サーバー(VPC)を構築して自由に利用できるのが特徴で、クラウド環境において、さまざまな役割を担ってくれる。
伸縮性や弾力性を意味する"Elastic"の言葉通り、ユーザーの必要に応じて、スペックを変更できるのがEC2の魅力。

  • EC2のメリット
    1. 簡単なスペック変更
    2. 従量課金によるコストメリット
    3. スピーディーな構築による時間短縮
    4. 冗長化(システムに何らかの障害が発生した際に備えて、予備の設備やサブシステムを平常時から運用しておくこと。)簡単に行える。

ハードウェア仮想化方式(HVM)

仮想化ソフトウェアが物理サーバーのハードウェアの差異を吸収して、完全にエミュレーション(本来と異なる動作環境で実行させること)された、ハードウェア環境をOSに提供する。WindowsマシンにmacOSを入れられないのと同様。

  • ハードウェアに合わせて、OSをカスタマイズする必要がないため、
    最新のハードウェアをすぐに利用できるメリットがある。

準仮想化方式(PV)

OSが物理サーバーの一部のハードウェアを直接利用できるため、性能面では便利。OSをPV方式で実行するには、ハードウェアに合わせてOSイメージをカスタマイズする必要がある。更に、ハードウェア仮想化方式(HVM)がPVと同等のパフォーマンスが得られるように改良されたため、あまり使われなくなっている。

  • 今更ですが、
    パソコン本体および周辺機器のことを総称して、"ハードウェア"
    そのハードウェア上で働く、プログラムを総称して、"ソフトウェア"

インスタンスの種類

インスタンスファミリー

EC2では、インスタンスの利用目的に合わせて、数種類のハードウェアが用意されている。これを、インスタンスファミリーといいEC2を利用するときは、利用目的にあった、インスタンスファミリーを適切に選択する必要がある。

実際にサービスで利用するときの用途に合わせて選択肢、負荷テストなどで最適なサーバーを決める。

汎用

CPU、メモリ、ネットワークパフォーマンスがバランスがよく提供される。
多くの一般的なアプリケーションに適している。

コンピューティング最適化

「汎用」と比較すると、CPUの動作クロック(CPUが処理を行う際に発する信号の速さ)が高い。また、同じCPUコア数で比較すると安い。CPUに依存するワークロード向け。

ストレージ最適化

インスタンスに物理的に付与された高速、大容量のストレージを利用できる。
データベースソフトウェアに適している

メモリ最適化

「汎用」と比較すると、多くのメモリが搭載。大量のメモリを必要とする場合に適している。

高速コンピューティング

GPU(画像処理装置)、FPGA(特定処理の専用ハードウェアを、プログラムを書き込むことで自由に構成できるデバイスのこと)を利用できる。大規模のワークロードを想定している。

※ CPUはハードウェアやアプリケーションから受け取る全ての指示を処理するパソコンの頭脳に当たるパーツのこと。(CPUが一括してデータを扱うため、中央で演算する装置"中央演算装置"とも呼ばれる。)

インスタンス世代

新しいものほど数字が大きい
新しいものほど性能が高く、安い
古い世代のサポートは継続されるが、新しい世代にいこうした方がコストパフォーマンスがよい。

追加機能

追加されるオプションによって、更に細分化される。
主なオプション

  • d :インスタンスストア(EC2の一時的なデータが保持され、EC2の停止・終了と共にクリアされる)
  • n :ネットワーク帯域幅を追加したインスタンスファミリー
  • a AMDプロセッサ(AMDによって製造されてるCPU)を利用したインスタンスファミリー

インスタンスサイズ

インスタンスファミリーの特徴を保持したまま、更に必要な性能を選択できる。

<m5の場合>
m5.large
m5.xlarge
m5.2xlarge
m5.4xlarge
m5.8xlarge
m5.12xlarge
m5.16xlarge
m5.24xlarge
m5.metal

サイズが大きい: インスタンスサイズが大きいほど、より多くのリソース(CPUコア、メモリ、ストレージなど)が提供されるため、性能が向上。

最適化: サイズが大きいインスタンスが必ずしも最適とは限りません。アプリケーションやワークロードに合わせて最適なサイズを選ぶことが重要。

※サイズが大きいほど、料金は高くなる。

インスタンスタイプを変更したい時

インスタンスタイプは、対象インスタンスを右クリックするとメニューが出るので、そこから変更できる。
インスタンスが実行中の場合は、停止にする。

  1. インスタンスの状態が"停止済み"になったことを確認したら、対象インスタンスを右クリックして[インスタンスの設定]→[インスタンスタイプの変更]選択。

  2. 対象インスタンスを右クリックをして、[インスタンスを開始]

EC2のネットワーク構成

パブリックとプライベート

サーバーのネットワークは、[パブリック]と[プライベート]がある。

  • サーバーがパブリックである = インターネットに直接接続が可能。
  • サーバーがプライベートである = インターネットに直接接続は不可能。何らかの中継サーバーや踏み台(踏み台サーバー)を経由して接続する必要があることを意味する。

ENI(Elastic Network Interface)

EC2インスタンスに付与される"仮想ネットワークインターフェース"
インスタンスへの通信は、全てENIをを経由して行われる。
インスタンスにはデフォルトで一つぬENIがアタッチされており、必要に応じて複数のENIをアタッチできる。
(上記の図に載せ忘れました。🙇)

セキュリティグループ

EC2インスタンスは、パブリックまたはプライベートであっても、無制限にアクセスできるわけではない。
セキュリティグループの機能を使って通信を適切に制御し、セキュリティ対策をする。

役割

インスタンスの通信を遮断する目的で作られる仮想ファイアーウォール
「ファイアーウォール」とは、
不正な通信が侵入することを遮断し、保護するセキュリティ対策機能)

  1. セキュリティグループは、VPCに複数定義が可能
  2. インスタンスに対して最大5つまで関連つけられる
    ※セキュリティグループはインスタンスにアタッチされているENIに関連づけられ、そのENIを介した通信のファイアウォールとして機能する。
  3. 1つのセキュリティグループには、複数ぬアクセス許可ルールを設定できる
    ※拒否ルールの設定はない。許可ルールに一致しない通信は全て遮断される
  4. インスタンスへ入ってくる通信 = インバウンドトラフィック
    インスタンスから出ていく通信 = アウトバウンドトラフィック
    これを別々に設定できる。
インバウンドトラフィック(受信トラフィック)

インスタンスが外部から受け取るトラフィックを指す。
インバウンドルールを設定して、どのトラフィックがインスタンスに到達できるかを指定する。
( 例 )
・ SSHアクセス(ポート22)を自分のIPアドレスからのみ許可する :
・ プロトコル(トラフィックの種類) :TCP
・ ポート(インスタンスが受け入れるトラフィックのポート番号) :22
・ ソース(トラフィックが来る元のIPアドレスやCIDRブロック、または他のセキュリティグループ) :自分のIPアドレス

アウトバウンドトラフィック(送信トラフィック)

インスタンスから外部に送信されるトラフィックを指す。
アウトバウンドルールを設定して、どのトラフィックがインスタンスから出ていくか指定する。
( 例 )
・ インスタンスからすべてのインターネットへのアウトバウンドHTTPアクセスを許可する:
・ プロトコル: TCP
・ ポート: 80
・ 宛先: 0.0.0.0/0

ルールを設定

通信を制御するルールの固まりを設定する。
(例)
ウェブサーバーの場合、

  • 利用者がアクセスするためのhttphttps(こっちのが安全)が許可されている必要がある。
  • 開発者やシステム運用者がサーバーにアクセスするためのsshが許可されてる必要がある。

↑ このようなルールの固まりで、セキュリティグループを作成する。 ↑

  1. EC2コンソール画面(左のメニュー一覧)から、
    [ネットワーク&セキュリティ]にある、[セキュリティグループ]クリック
  2. 右上にある、[セキュリティグループを作成]をクリック

どのプロトコル、どのポートに対して、どこからのアクセスを許可するのか設定する。
"どこへ"の情報は、セキュリティグループを付与したサーバー(ENI)が対象。

インバウンドルール

  • タイプ :一般的なアプリケーション用ルールを設定するとき、
    タイプを選択すると、"自動的にプロトコルとポート範囲が設定される"

  • プロトコル :許可したい通信のプロトコルを指定する。
    [TCP][UDP][ICMP][ICMPv6]のいずれかを選択(タイプを選んだら、自動設定されてるはず)

  • ポート範囲 :許可したい通信のポート番号の範囲を指定する。

  • ソース :許可したい通信のソース(送信元)を指定する。
    IPアドレス、IPアドレス範囲、またはセキュリティグループを指定する。
    セキュリティグループの場合は、同じVPC内のものを指定。
    セキュリティグループを指定した場合、そのセキュリティグループが関連付けられているインスタンス(ENI)からの通信が許可ルールの対象となる。

アウトバウンドルール

  • インバウンドルールと一緒

ソース/送信先のIPアドレス/セキュリティグループの使い分け

  • 0.0.0.0/0 = 全てのIPアドレスへの解放を意味する。
    → 一般公開するウェブサービスのウェブサーバーなどのように、
    対象ルールに対して接続先を制限する必要がない場合に設定。

  • 社内ネットワークやAWS以外のデータセンターなど、
    "VPC以外のネットワークとの通信を許可する場合には設定する。"

  • ウェブサーバーやバッチサーバー(個人情報を取り扱うサーバー)など、
    VPC内の特定のサーバーとの通信を許可する場合は、セキュリティグループを使用する方が望ましい。🤨

EC2インスタンスのセキュリティグループ

設定を確認する

  • EC2インスタンスを選択状態にすると、下側にタブが出てきて、
    その中の[セキュリティ]タブの[セキュリティグループ]表示される。
  • セキュリティの項目では、EC2インスタンスに関連つけられてるセキュリティグループ名だけでなく、[インバウンドルール][アウトバウンドルール]も確認できる

設定を変更する

  • EC2インスタンスとセキュリティグループの関連付けは、インスタンス状態に関係なく、"いつでも変更できる"
  1. 対象インスタンスを右クリック。[セキュリティ]→[セキュリティグループの変更]選択
  2. セキュリティグループを変更画面に遷移される
    3.[関連付けられたセキュリティグループ]から サーチのところから変更するセキュリティグループを選択する
  3. 選択したら、[セキュリティグループを追加]をクリック
  4. 既存(前のやつ)のセキュリティグループの削除
  5. 保存するをクリック

EC2のIPアドレス

IPアドレスの種類

  • EC2インスタンスが保持するIPアドレスには、以下の3種類がある。
パブリックIPアドレス(動的付近)

・ パブリックIPアドレスは、インターネットから接続できるアドレス。
・ EC2インスタンス作成時、パブリック状態のサブネットを選択して自動割り当てパブリックIPを設定すると、IPが付与される。

:::

プライベートIPアドレス

・ プライベートIPアドレスは、EC2インスタンスにアタッチされている全てのENIに対して、個別に付与できるIPアドレス。
・付与できるIPアドレスは、そのENIが属しているサブネットのIPアドレス範囲で、デフォルトでは自動付与だけど、手動で固定のIPアドレスを付与することもできる。

:::

EIP

・ EIPは、EC2インスタンスに付与できる固定のパブリックIPアドレス
・IPアドレスをアカウントにプール(すぐに使うことになりそうなものを一時的に貯めておく仕組み)しておくことが可能で、必要に応じてインスタンスのパブリックIPアドレスとして利用できる。

IPアドレスを確認する

IPアドレスは、対象のインスタンスを選択すると、
下の[詳細]タブのパブリックIPv4プライベートIPv4アドレスで確認できます。

IPアドレスを変更

EC2インスタンスのIPアドレスを変更するには、種類によって方法が異なる。

セカンダリ以降のプライベートIPアドレスの割り当てや変更をするには、

  1. 対象のインスタンスを右クリックをするとメニューが出てくる
  2. [ネットワーキング]→[IPアドレスの管理]を選択

新たなプライベートIPアドレスを割り当てるには、[新しいIPの割り当て]をクリック。
IPアドレスの割り当ては、IPアドレスを指定すればそのIPアドレスが割り当てられ、空欄のままにするとサブネットのIPアドレス範囲から自動的に決定される。
なお、プライベートIPアドレスを手動で指定する場合でも、サブネットのIPアドレス範囲から外れたIPアドレスや、AWSまたは他のノードによって使用済みのIPアドレスは指定できない。

自分が見やすいように、まとめたかったですが長くなってしまいました...

Discussion