[AWS][EC2]説明~作成の流れ
前回に引き続きawsについて。今回は前回作ったVPCとか諸々を使ってEC2を作っていく〜
のと、覚えるべきところをメモしていきます🥸
そもそもEC2とは?
「EC2(Amazon Elastic Compute Cloud)」は、AWSのクラウド上でサーバーを実行するためのサービス。
EC2のサーバーは、仮想化基盤上で実行されます。「仮想化(virtualization)」とは、単一の物理サーバー上で複数の仮想サーバーを実行する技術です。EC2では、この仮想サーバーのことを、「インスタンス」または「EC2インスタンス」と呼んでいます。
EC2とVPCなどとの関係
※イメージ図
- VPC(Virtual Private Cloud):
クラウド内で隔離されたネットワーク環境。全体のネットワークの範囲を定義します。 - サブネット:
VPC内でさらに細分化されたネットワークセグメント。サブネットごとにCIDRブロックが割り当てられ、VPC内のリソースが配置されます。 - EC2インスタンス:
サブネット内に配置される仮想サーバー。アプリケーションやサービスをホストします。
EC2の仮想化技術には、「HVM:ハードウェア仮想化方式(Hardware-assisted Virtual Machine)」と「準仮想化方式(PV:Paravirtualization)」があります。
「HVM:ハードウェア仮想化方式(Hardware-assisted Virtual Machine)」
仮想化ソフトウェアが物理サーバーのハードウェアの差異を吸収し、完全にエミュレーションされたハードウェア環境をOSに提供します。通常、OSはハードウェアを選びます。WindowsマシンにmacOSを入れられないのと同様です。
この方式は、ハードウェアに合わせてOSをカスタマイズする必要がないため、最新のハードウェアをすぐに利用できるメリットがあります。
「準仮想化方式(PV:Paravirtualization)」
OSが物理サーバーの一部のハードウェアを直接利用できるため、HVM方式に比べて仮想化のオーバーヘッドが少なく、性能面で有利でした。しかし、OSをPV方式で実行するには、ハードウェアに合わせてOSイメージをカスタマイズする必要があります。さらに、HVM方式でもPV方式と同等のパフォーマンスが得られるよう改良されたため、最新の仮想化技術ではPV方式がサポートされなくなっています。
EC2のネーミングポリシー
インスタンスファミリー
「インスタンスファミリー」とは、EC2で提供されるハードウェアの種類です。
いろんな種類があり、用途に合わせて選択する!
主なインスタンスファミリー
- 汎用:CPU、メモリ、ネットワークパフォーマンスがバランスよく提供される。多くの一般的なアプリケーションに適している
- コンピューティング最適化:「汎用」と比較すると、CPUの動作クロックが高い。また、同じCPUコア数で比較すると、価格が安い。CPUに依存するワークロード向け
- ストレージ最適化:インスタンスに物理的にアタッチ(付与)された高速、大容量のストレージを利用できる。データベースソフトウェアに適している
- メモリ最適化:「汎用」と比較すると、多くのメモリが搭載されている。大量のメモリを必要とする場合に適している
- 高速コンピューティング:GPUやFPGAを利用可能。機械学習やHPCなどの大規模なワークロードを想定している
主なインスタンスファミリーのスペック
- CPUクロック:1CPUあたりの処理性能の速さ。数字が大きいほど処理速度が速くなる
- vCPU数:インスタンスに割り当てられる仮想的なCPUの数。数字が大きいほど多くの処理を同時に行える
- ネットワーク帯域幅:ネットワークでのデータ転送速度
インスタンス世代
インスタンス世代には、次のような特徴があります。verみたいなもの😌
- 新しいものほど数字が大きくなる
- 新しいものほど性能が高く、価格が安い
- 古い世代のサポートは継続されるが、新しい世代に移行したほうがコストパフォーマンスはよくなる
追加機能
インスタンスファミリーは、追加されるオプションによってさらに細分化されます。
インスタンスサイズ
「バースト可能インスタンス」とは(補足)
- 「バースト可能インスタンス」は、コストが低いインスタンスでも、短時間だけ高パフォーマンスを得られる(CPUをバーストさせられる)仕組み。
- バースト時は、CPUクレジットを消費する。CPUクレジット1つにつき、最大性能を1分間得られる
- CPUクレジットは、時間の経過によって回復する
- Unlimitedモードがあり、このモードにすると24時間で獲得可能な最大クレジット数分のCPUクレジットを前借りして使用できる
- 前借りしたCPUクレジットを超えてバーストすると、時間あたりの課金が発生する
EC2のセキュリティ対策
EC2インスタンスは、パブリック/プライベートのどちらの状態であっても、インターネットや他のリソース(EC2インスタンスなど)から無制限にアクセスできるわけではない。
「セキュリティグループ」の機能を使って通信を適切に制御し、セキュリティ対策を施します。
セキュリティグループはVPCに複数定義が可能で、インスタンスに対して最大5つまで関連付けられる
- 1つのセキュリティグループには、複数のアクセス許可ルールを設定できる(HTTP)(SSH)とか!
(拒否ルールの設定はないので、許可ルールに一致しない通信はすべて遮断される)
- インスタンスへ入ってくる通信「インバウンドトラフィック」と、インスタンスから出ていく通信「アウトバウンドトラフィック」を別々に設定できる
セキュリティグループでは、インバウンドルールに一致したインバウンドトラフィック戻りのアウトバウンドトラフィックは、アウトバウンドルールの設定にかかわらず許可される。
EC2作成とセキュリティグループ編集
[要件]
- イメージ:Amazon Linux2 AMI
- インスタンスファミリー:t2.micro
- セキュリティグループ:SSHを許可する (パブリックサブネットに起動するEC2に対して)
- パブリックサブネット、プライベートサブネットそれぞれにEC2インスタンスを構築する
-
awsのEC2に行きインスタンスを起動を押す
-
任意の名前入力
今回はパブリックサブネット、プライベートサブネットそれぞれにEC2インスタンスを構築するから(dev-infra-public-EC2)と(dev-infra-praivate-EC2)にした! -
『イメージ:Amazon Linux2 AMI』 『インスタンスファミリー:t2.micro』選択
-
秘密鍵作成(名前はdev-infra-public-awsとdev-infra-private-awsにした)
-
ネットワーク設定の編集押す。(右上)
-
セキュリティグループのルール追加を押す。今回はpublicは『0.0.0.0/0』にした!
『0.0.0.0/0』は全てのIPアドレスへの開放を意味するからprivateはこれしちゃったらダメじゃない?ってなってprivateは『192.168.0.0/16』にしました!!!ルートの時に設定したやつ。 -
画面右側に概要確認してインスタンス起動ボタン押す。(2個作る)
EC2のセキュリティ設定変更する時
新しいセキュリティグループ作ってそっちに紐付けたいなーって時は....
- 対象のインスタンスを右クリックして『セキュリティ』→『セキュリティグループを変更』
- 変更するセキュリティグループ選択して、既存の方を消せば完了!!!
EC2のIPアドレス
- EIPは、EC2インスタンスに付与できる固定のパブリックIPアドレス。
IPアドレスをアカウントにプールしておくことが可能で、必要に応じてインスタンスのパブリックIPアドレスとして利用できる。EC2に付与されたEIPは、インスタンスを停止しても明示的に開放しない限りは、付与されたままになる。
EC2のストレージ
「Amazon EBS」、「インスタンスストア」、「Amazon EFS」ストレージがある。
普通に作ったらEC2作ったらデフォルトで「Amazon EBS」が作られる!!(変更可能)
作ったEC2でサーバーと接続できるか確認する。
[要件]
- 1章で作成したパブリックサブネットのEC2に、Nginxをインストールする
- SSH、HTTPを許可するセキュリティーグループを作成する
- EC2に2.で作成したセキュリティグループを割り当てる
- EC2のパブリックIPにHTTP接続が「できる」ことを確認する
- セキュリティグループからHTTPの許可を削除する
- EC2のパブリックIPにHTTP接続が「できない」ことを確認する
- EC2にログインする。
作成したキーペアをCloud9上にドラッグ&ドロップ。 - 「.ssh」というフォルダへキーペアを移動
mv dev-infra-public-aws.pem ~/.ssh/
- キーペアファイルの権限を変更する
sudo chmod 600 ~/.ssh/dev-infra-public-aws.pem
- サーバーにアクセスする
ssh -i ~/.ssh/dev-infra-public-aws.pem ec2-user@対象EC2のパブリックIPアドレス
- サーバーに「Nginx」をインストールする
Nginxをインストールする
sudo amazon-linux-extras install -y nginx1
Nginxの自動起動を設定する
sudo systemctl enable nginx
Nginxを起動する
sudo systemctl start nginx
⭐️ブラウザにIPv4打ってNginxの画面が表示されれば成功!
セキュリティグループ作成
- VPCからセキュリティに行って、グループ作成おす
- 名前と説明は任意
- VPCをdev-infraに設定
- インバウンドルールにルール追加(今回は要件的にSSHとHTTPを追加)(0.0.0.0/0)
- アウトバウンドは触らない(インバウンドに設定したら反映されるから)
- EC2右クリックしてセキュリティグループ変更(既存絶対消すこと!)
- ブラウザでNginxの画面出たらOK!
- セキュリティグループ編集からHTTPだけ消してブラウザ確認して繋がらなければOK!
今回はEC2についてと作成、サーバー接続の流れをしました〜〜〜
次回はEC2の運用についてやっていきます👾
Discussion