2022. 6. 19. 15:03ㆍdevelop_infra/aws
EC2とは
オンラプレミス環境にあるサーバーと同じ性能を持ったサーバーをインターネット上で瞬時に作成することができるサービス。
なお、数分で利用可能となる従量期間(時間〜秒単位)で利用可能な仮想サーバー。
- 起動、ノード追加、削除、マシンスペック変更が数分で可能
- 汎用的なIntelアーキテクチャーを採用
- 管理者権限で利用可能
- WindowsやLinuxなどのほとんどのOSをサポート
- OSまでは提供されているタイプを選択することで自動設定され、OSより上のレイヤーを自由に利用可能
- 独自のAmazon Machine ImageにOS設定を作成し、保存して再利用が可能
EC2の利用コスト
EC2の利用コストはインスタンスタイプや購入方式に応じて評価帯が決定する。
なお、リージョンに応じて価格が異なる、利用時間に加えてデータ転送アウトにも課金される。
- 購入方式
└オンデマンド:通常価格
└リザーブド/Saving Plan:予約と事前支払の割引を適用
└スポットインスタンス:最大90%割引を適用 - インスタンスタイプに応じた料金設定
└インタスタンタイプに応じて価格が決定される。利用時間によって価格を決定する。
└a1.mediumは0.0255USD/時間 - 時間課金の設定
└1時間単位または秒単位(最低60秒)で支払う
└Linuxインスタンスの使用は1秒単位で課金
└その他のインスタンは時間単位で課金 - リージョン
└リージョンごとに価格が異なる - データ転送
└テータ転送イン:無料
└インターネットへのデータ転送アウト(GBあたり)
└S3からAWS内でのデータ転送アウト(GBあたり) - ボリューム
└アタッチされたEBSでのデータ容量にも課金される
インスタンスを停止してもEBS分は課金が継続されるために注意が必要
└インスタンスストアには課金されない - EC2の状態に応じて課金発生が異なる
Running/開始/再起動 | ・実行時間に応じて料金が発生する ・利用中のEBSボリュームの料金が発生する |
停止/Stop | ・EC2の料金発生は停止する ・利用中のEBSボリュームの料金が発生する |
終了/Terminate | ・EC2の料金発生は停止する ・デフォルト設定ではルートボリュームに設定されたEBSボリュームも削除され、料金発生は停止する |
EC2の起動方法
AMI(OSセッティング)を選択
↓
インスタンスタイプを選択
↓
インスタンスタイプの詳細の設定
↓
ストレージを選択
↓
タグの追加
↓
セキュリティーグループを選択
↓
キーペアを設定
AMI
インスタンスタイプ
インスタンスファミリ
ユースケースに応じてインスタンスタイプを選択する
- 汎用
└ファミリー:A1、M5、T3など
バランスの取れたコンピューティング、メモリ、ネットワークのリソースを提供し、多数なワークロードに使用。
ウェブサーバーやコードレポジトリなど、インスタンスのリソースを同じ割合で使用するアプリケーションに最適なインスタンス。 - コンピューティング最適化
└ファミリー:C5、C6gなど
高パフォーマンスプロセッサが必要なコンピューティングバウンドなアプリケーションに利用。
ユースケースはバッチ処理ワークロード、メディアトランスコード、高性能ウェブサーバー、ハイパフォーマンスコンピューティング、化学モデリング、専用ゲームサーバーおよび広告サーバーエンジン、機器学習推論。 - メモリ最適化
└ファミリー:X1、R5、ハイメモリ、z1dなど
メモリ内の大きいデータセットを処理するアークロードに対して高速なパフォーマンスに最適なインスタンス。 - ストレージ最適化
└ファミリー:H1、D2、I3、I3enなど
ローカルストレージの大規模なデータセットに対する高いシーケンシャル読み取りおよび書き込みアクセスを必要とするワークロード用。
ストレージ最適化インスタンは、数万IOPSもの低レイテンシーなランダムI/Oオペレーションに最高 - 高速コンピューティング
└ファミリー:P3、Inf1、G4(GPU)、F1(FPGA)など
高速コンピューティングインスタンスは、ハードウェアアクセラレーター(コプロセッサ)を使用して、
浮動小数点計算、グラフィックス処理、データパータン照会などの機能をCPUで実行するソフトウェアに最適
ユーザーデータの利用
ユーザーデータを利用してEC2インスタンス起動時に実行されるスクリプトを設定できる
- ユーザーデータ
└EC2インスタンスの詳細設定の自動化に利用
└Bashスクリプトなどを設定して、インスタンス起動時に実行されるように準備できる - ブートスクリプト
└インスタンスにユーザーデータを渡すことで、起動時に実行される処理のこと
EC2で利用するストレージ
- インスタンスストア
└ホストコンピューティングに内蔵されたディスクでEC2と不可分のブロックレベルの物理ストレージ
└EC2の一時的なデータが保持され、EC2の停止・終了と共にデータは除去される
└無料 - Elastic Block Store(EBS)
└ネットワークで接続されたブロックレベルのストレージでEC2とは独立して管理される
└EC2をTerminateしてもEBSはデータを保持可能で、SnapshotをS3に保存する
└別途EBS料金が必要
タグ
タグを追加で設定して名前を付与することができ、EC2などのリソースのグループ分けや権限分けに利用する
セキュリティーグループ
インスタンスへのトラフィックのアクセス可否を設定するファイアウォール機能を提供
キーペア
キーペアを利用して自身がダウンロードした秘密鍵とマッチした公開鍵を有するインスタンスにアクセスする
起動テンプレート
起動テンプレートは起動の詳細な設定内容をテンプレート化して保存することができる
インスタンスの購入方式
インスタンスの購入方式に応じて割引価格が提供されるため、用途に応じて割引価格を利用することが重要とする。
- オンデマンドインスタンス
└通常のインスタンス購入方式
└長期契約なしで、コンピューティング性能に対して秒単位または分単位で支払う。
そのライフサイクルを完全に制御できるためユーザーが起動、停止、休止、開始、再起動、または終了時点を決定できる。 - リザーブドインスタンス
└Amazon EC2 リザーブドインスタンス(RI)は、1年または3年の期間利用を予約することで、
通常のオンデマンド料金に比べて大幅な割引価格(最大72%)が適用されるインスタンスの購入方式。
└特定のアベイラビリティーゾーンまたはリージョンで利用するキャパシティーを予約できる2つのタイプがある。 - スポットインスタンス
└オンデマンド価格より低価で利用できるAWS管理用に保持されているが未使用のEC2インスタンス。
ユーザーは未使用のEC2インスタンスを静止状態割引(最大90%割引ほど)でリクエストできる。
└実行時間に柔軟性がある場合や、中断できる処理に利用する。
キャパシティの予約
キャパシティーを事前に予約して購入方式に適用する。
リザーブドインスタンスとはセットで利用する。
- キャパシティ予約
└インスタンスタイプが起動可能であるという確報権のこと。
予めキャパシティを確保しておくことで実行時のキャパシティ不足エラーを制御する - オンデマンドキャパシティ予約
└必要な期間中のみオンデマンドの利用料でキャパシティが予約できる機能 - ゾーンリザーブドインスタンス
└指定したアベイラビリティーゾーン(AZ)内で1年間または3年間の間のキャパシティーを予約する
└AZは指定した場所のみ利用可能 - リージョンリザーブドインスタンス
└指定したリージョン内で1年間または3年間の間のキャパシティを予約する
└AZはどこでも利用可能
オンデマンドのキャパシテの予約 | リザーブドインスタンス | Saving Plan | |
期間 | コミットメントは不要で、必要に応じて作成及びキャンセル可能 | 固定の1年または3年のコミットメントが必要 | |
キャパシティの利点 | 特定のAZのキャパシティを予約して利用可能 | 特定のAZまたはリージョンで予約して利用可能 | なし |
請求割引 | なし | 有 | 有 |
インスタンスの制約 | リージョンごとのオンデマンドインスタンス数に制限 | AZまたはリージョンあたり20の制限 制限引上げ申請可 |
なし |
物理対応可能なインスタンス
物理サーバーにインスタンスを起動して制御が可能なタイプのインスタンス
- ハードウェア専有インスタンス
└専用HWのVPCで実行されるEC2インスタンス
└ホストHWのレベルで、他のAWSアカウントに属するインスタンスから物理的に分離する
└同じAWSアカウントのインスタンスとはHW共有する可能性がある - Delicated Host
└EC2インスタンス容量を完全にユーザー専用として利用できる物理サーバー
└サーバーにバインドされた既存ソフトウェアライセンスを利用可能 - Bare Metal
└アプリケーションが基盤となるサーバーのプロセッサーとメモリーに直接アクセス可能なインスタンス
└AWSの各種サービスとの連携が可能でOSが直接下属のハードウェアにアクセス可能
リザーブとインスタンスの特徴
利用期間を長期指定して利用する形式で、オンデマンドに比較して最大72%割安になる
スタンダード | コンバーティブル | |
利用期間 | 1年(40%割引) 3年(60%割引) |
1年(31%割引) 3年(54%割引) |
AZ/インスタンスサイズ/ネットワークタイプ変更可否 | 有 | 有 |
インスタンスファミリー/OS/テナンシー/支払オプションの変更可否 | なし | 有 |
リザーブドインスタンスマーケットプレイスでの販売可否 | 可能 | 今後可能となる予定 |
ユースケース | ①一定した状態または使用量が予約可能なワークロード ②災害対策などキャパシティ予約が可能なアプリケーション |
スポットインスタンスの特徴
予備のコンピューティング容量を、オンデマンドインスタンスに比べて割引(最大90%引き)で利用できるインスタンス
- 予備用を入札式で利用するためとても安い(最大90%引き)
- 起動に通常よりも少し時間がかかる
- 予備用のため途中で削除される可能性がある
※一時的な拡張などの用途で利用 - スポットリクエストが永続的である場合は、スポットインスタンスが中断された後に再びスポットインスタンスを起動する
- スポットブロックは中断されないように設計されている
スポットフリートの利用
インスタンスタイプや入札価格を指定することで、自動で最安値のインスタンスを選択してスポットインスタンス数を調整して、
リクエストを処理する
EC2フリートの利用
オンデマンドインスタンスとスポットインスタンスで構成されるインスタンスグループとして設定を定義する仕組み
拡張ネットワーキング
高い帯域幅、1秒あたりのパケット(PPS)の高いパフォーマンス、常に低いインスタンス間レイテンシーを実現する。
3つのタイプを利用する
Elastic Fabric Adapterの利用
ハイパフォーマンスコンピューティング(HPC)と機械学習アプリケーションを高速化するためのEC2用ネットワークデバイス
EC2のリカバリー
EC2インスタンスは定期的にバックアップすることが重要
- 定期的にバックアップ(AMI/スナップショット)をとる
- 定期的にリカバリプロセスを確認する
- 複数のAZに重要なアプリケーションをデプロイする
- CloudWatchによりインスタンスのステータスをモニタリングする
└チェック結果が失敗になった場合、Cloud Watchアラームアクションを使用してインスタンスを自動的に復旧させる
└自動復旧後のステータスとIPアドレスは元のインスタンスと同じ - インスタンスは起動時に動的IPアドレス処理の設定を行う
インスタンスの再起動フロー
pending | インスタンスはrunning状態への移行準備中 初めて起動する場合、またはpending状態になってから起動する場合、インスタンスはstopped状態になる。 |
課金されない |
running | インスタンスは実行中で、使用できる状態 | 課金される |
stopping | インスタンスは停止または使用休止の準備中 | 停止準備中は無課金、休止準備中は課金 |
stopped | インスタンスは停止されているため、使用できない インスタンスはいつでも起動できる |
課金されない |
shutting-down | インスタンスは削除準備中 | 課金されない |
terminated | インスタンスは完全に削除されているため、起動することはできない | 課金されない |
ハイバネーションの利用
ハイバネーションにより、再起動時に停止前の状態を維持することが可能
- ハイバネーションの機能
└シャットダウン前にメインメモリの内容をハードディスク等に退避することで、次回起動時にまたメインメモリに読み込んで、
シャットダウンする前と同じ状態で起動する。
再起動時に停止前の状態を維持することで再起動後のセッティングを容易にする - インスタンスタイプに応じて設定
└インスタンスタイプに応じてハイバネーションの実施不可が決まる。
初期ではAmazon Linux1を実行しているM3、M4、M5、C3、C4、C5、R3、R4、R5のみで可能であったが、
現在はAmazon Linux2やWindowsなども可能