AWS再入門ブログリレー Amazon EC2編

2020.08.26

こんにちは、コンサル部@大阪オフィスのTodaです。
当エントリは弊社コンサルティング部による『AWS 再入門ブログリレー 2020』の 17 日目のエントリです。

このブログリレーの企画は、普段 AWS サービスについて最新のネタ・深い/細かいテーマを主に書き連ねてきたメンバーの手によって、 今一度初心に返って、基本的な部分を見つめ直してみよう、解説してみようというコンセプトが含まれています。
AWS をこれから学ぼう!という方にとっては文字通りの入門記事として、またすでに AWS を活用されている方にとっても AWS サービスの再発見や 2020 年のサービスアップデートのキャッチアップの場となればと考えておりますので、ぜひ最後までお付合い頂ければ幸いです。

では、さっそくいってみましょう。 17日目のテーマは『EC2』です。

EC2とは?

EC2 (Elastic Compute Cloud)は、サイズ変更可能な仮想マシンをクラウド内で提供するウェブサービスです。
リソースが必要な時に数分で新規インスタンスを立ち上げ、変更する事ができ、必要がなくなれば終了させることでコスト効率化をはかることができます。

サービスの特徴・メリット

EC2の特徴・メリットとして以下のようなことが挙げられます。

  • 必要な時に必要な量のリソースを数分で確保する事ができる
  • 負荷の変化に応じてスケールアウト、スケールイン、スケールアップ、スケールダウンができる
  • 従量課金のサービスのため、利用した分だけ課金される
  • Linuxや、Windows Serverなど多くのOS、ソフトウェアを選択できる
  • ルートアクセス権があるためOSやソフトウェアの設定が変更可能

EC2インスタンスについて

ここからはEC2インスタンスを構築する際に抑えておきたい要素についてご紹介していきます。

Amazon マシンイメージ (AMI)

AMIはオペレーティングシステム、アプリケーションサーバー、アプリケーションなどを記録したテンプレートです。インスタンスを起動する際に選択をすることでソフトウェアが導入された状態で起動します。
AMIにはAWSが提供をしているAmazonLinuxをはじめMicrosoft Windows Serverなどが提供されています。ここ最近ではアーキテクチャとしてx86とarmのAMIが選択できる場合があります。選択によりインスタンスタイプの選択肢が変わる場合があります。

AWS Marketplace とは

AWS Marketplace は企業や団体が開発したソフトウェアおよびサービスを簡単に検索、購入、デプロイをすることができるデジタルカタログです。CentOSやRedHat, Oracle Linuxなど取得する事ができます。

マイAMIとは

EC2を構築して必要なソフトをインストールした段階でイメージ化することでマイAMIを作成できます。同じソフトウェアがインストールされているインスタンスを複製する際に活用します。

インスタンスタイプ

インスタンスタイプは用途別にまとめられた インスタンスファミリー とCPUなどのスペックを表す「インスタンスサイズ」で構成されています。WebサーバやDBサーバなど用途に合わせてインスタンスタイプを選択します。またインスタンスファミリーに記載されている数字は世代を表し、数字が大きい物が新世代になります。

インスタンスタイプ

 

AWSの公式サイトでは用途別でファミリーを分けて掲載されています。
(参考資料)Amazon EC2 インスタンスタイプ

汎用 (M4, M5, M6g)

CPU、メモリ、ネットワークの性能がバランス良く設定されているファミリーになります。
Webサーバやどのような用途にも使えるようになっています。
特に制限がない場合は1度利用してみて負荷の状況を確認してから下記、コンピューティング最適化やメモリ最適化に切り替えるのも良いと考えます。

汎用バースト (T2, T3)

CPUクレジットを蓄積して一定以上の性能が必要な時にCPUクレジットを消費して高い性能を利用するサーバになります。
低価格な金額設定になっており、開発環境やスケジュールで決まった時間に処理が必要な用途に使います。

コンピューティング最適化 (C4, C5, C6g)

高性能なCPUが導入されているインスタンスファミリーになります。
CPUを利用した演算処理の用途に向いているためWebサーバやゲームサーバ、計算処理が必要なシステムに向いています。

メモリ最適化 (R4, R5, R6g, X1)

メモリ容量が多く設定されているインスタンスファミリーになります。
メモリに情報を入れて高い速度で処理する用途に向いているため DBサーバやキャッシュサーバの用途に向いています。

高速コンピューティング (P2, P3, G4, F1)

演算用にCUDAなどのハードウェアアクセラレーターが導入されたインスタンスファミリーになります。
浮動小数点演算など大量の計算処理に向いているため、研究やグラフィックス処理、AI処理に向いています。

ストレージ最適化 (I3, I3en, D2, H1)

大容量で高いI/O性能のストレージが導入されているインスタンスファミリーになります。
オンメモリ処理が難しく、高速なIO処理が求められる集計用のデータベースや分散ストレージなど用途に向いています。

ストレージ

インスタンスにはインスタンスストアまたはEBS(Elastic Block Store)を接続してストレージとして利用します。
インスタンスストアはホストコンピュータに内蔵されたディスクでインスタンスを停止/終了することでデータがクリアされる揮発性の特徴があります。
性能はインスタンス毎に決まっていて、費用は無料になっています。

EBSは内蔵型のストレージではなくNASと同じようにネットワーク接続型のストレージになります。EBSは容量、ボリュームタイプ、IOPS、暗号化の設定を利用者が設定する事ができます。インスタンスを停止/終了してもデータは残ります。

EBSには利用用途に合わせて下記のボリュームタイプが利用頂けます。

汎用 SSD (gp2)

さまざまなワークロードを想定して価格、パフォーマンスをバランス良く調整されているSSDボリュームです。

プロビジョンド IOPS SSD (io1)    

低レイテンシーまたは高スループットワークロードに適した、最高パフォーマンスの SSDボリュームです。データベースなどストレージの読み込み・書き込み速度が必要な用途に向いています。

プロビジョンド IOPS SSD (io2)    

2020年8月から利用可能になったストレージです。上記io1の時より耐久性が大幅に向上し最大IOPS値も10倍となりました。
詳細については下記記事をご覧ください。

スループット最適化 HDD (st1)

高いスループットを必要とするアクセス頻度の高いワークロード向けの低コストのHDDボリュームです。

Cold HDD (sc1)

アクセス頻度の低いワークロード用に設計された低コストのHDDボリュームです。

コスト最適化

EC2には利用した分だけ請求されるオンデマンドインスタンス以外に安価な価格で利用ができる選択肢が用意されています。

オンデマンドインスタンス

利用した仮想サーバの数に応じて料金を時間または秒単位で支払いします。
24時間稼働させるサービスでなく、毎日業務時間中だけ利用する用途ならインスタンスを起動・停止することでコスト最適化をすることができます。

リザーブドインスタンス

あらかじめ1年または3年の利用料を一定金額または全額支払うことで割引を受ける事ができます。
常時起動するサーバに利用する事でコスト最適化をすることができます。

(参考資料)AWS のコスト最適化 リザーブドインスタンス

スポットインスタンス

EC2の空いているリソースに対して利用者が入札する事で低価格で利用することができます。オークションの価格は常に変動するため「AWSが提示する金額 > 利用者が設定した価格」になった場合、強制的にインスタンスは停止されます。 決まった時間に分析する、短時間の処理などの用途に向いています。

(参考資料)AWS Black Belt Online Seminar Amazon EC2 スポットインスタンス

Savings Plans

1年、または3年間の期間で、1時間あたりの利用費をコミットする事により、 コミット分を割引価格で利用する事ができます。2019年11月に追加された新しい料金モデルです。詳細については下記記事をご覧ください。

インスタンス表の見方

EC2インスタンスを作成するときに色々なインスタンスタイプが掲載されている表から選択をします。表の中には性能の表示がありますので各項目簡単な説明をいたします。

インスタンス表

vCPU

vCPU (Virtual CPU) は仮想化されたコンピュータ上でのCPU(中央処理装置)の数を表します。仮想CPUですが、動作・振る舞いについては物理的なCPUと同等の動きになります。vCPUの数を2で割ると利用している物理CPUの数になります。

vCPUのイメージ

メモリ

メモリの使用容量になります。メモリも仮想化されていてvCPUと同じように割り当てされます。

インスタンスストレージ

インスタンスストレージは標準EBSとなっておりますが、一部インスタンスタイプではNVMe SSDを利用する事はできます。
NVMe SSDは最新の通信プロトコルを利用したSSDで従来のSATAやAHCIよりも効率が良いストレージです。

EBS最適化利用

EBSはネットワーク接続型のストレージで回線を経由してデータの送受信を行っています。
EBS最適化利用あり の場合はEBS専用の回線を利用してデータの送受信をおこなうため、回線の混雑状況に影響されません。
プロビジョンド IOPS SSDなど速度が速い設定を利用する場合は EBS最適化利用あり が設定されていないとボトルネックになる場合があります。

EBS最適化利用のイメージ

ネットワークパフォーマンス

ネットワークの帯域幅を表す項目で、容量の多い通信を多数取り扱う場合などに影響がある項目になります。表記には「最大」と表記されている場合がありバースト特性(クレジット消費で最大性能を得る)が設定されています。

詳細設定の各項目について

EC2インスタンスを作成する際に、細かい設定がございます。
普段利用する機会が少ない項目について説明いたします。

配置グループ (プレイスメントグループ)

プレイスメントグループはインスタンス間の通信を高速におこなうための設定になります。グループ化したインスタンス間の通信は低レイテンシーの 10 Gbps (ギガビット/秒) ネットワークに参加することができます。
この設定は同じアベイラビリティゾーンのインスタンスが対象になります。

テナンシー

通常EC2は基盤側のサーバを他の利用者と共有で利用します。
ただし、会社のセキュリティポリシーの対応やソフトウェアライセンスの問題でサーバを専有しないといけない場合があります。テナンシーを設定する事でサーバを専有する事ができます。詳細については下記資料を確認ください。

(参考資料) ハードウェア専有インスタンス

Elastic Inference

EC2インスタンスに機械学習用のGPU アクセラレーションをアタッチします。
GPU は高い演算能力を持つハードウェアで、CPUが2コアや4コアで処理をしているのに対してGPUは100コアや1000コアの単位で処理されるため単純計算など高速処理できるため機械学習に向いています。

T2/T3 無制限

バースト特性のあるインスタンス(T2, T3)で設定できる項目になります。
上記インスタンスはクレジットが枯渇した場合パフォーマンスが発揮できなくなります。万が一パフォーマンスが必要なケースが発生した場合、無制限の設定をすることで対応が可能です。
ただしコストが掛かるため常時必要な場合はバースト特性が無いインスタンスに変更することをおすすめいたします。

Metadata accessible / version

EC2にはインスタンスの情報が格納されているメタ情報あります。
メタ情報はアプリケーションを実行した際にどのインスタンスで動いたなどログに記録したりすることで処理を確認しやすくする用途に使えます。こちら便利な情報になりますが一部問題もございます。詳細については下記記事をご覧ください。

EC2を利用した構成例

AWSでは色々な用途にEC2を利用してインフラ構成を作る事ができます。
いくつか参考例を確認してみましょう。

DBサーバをEC2で対応

データベースサーバはEC2で構成したタイプになります。
一般的にはマネージドサービスのRDSやDynamoDBを利用する事が多いと思いますが、OSからチューニングするレアケースの場合、マネージド型のサービスでは対応できないためEC2を利用します。

構成例1

Auto Scalingの利用

Auto Scalingを利用する事で高い可用性の構築を作成する事ができます。
EC2はリソースを数分で確保利用した分従量課金ということでAuto Scalingと組み合わせることでメリットを有効に利用することができます。
負荷に応じてEC2をスケールアウト、障害発生時に対象インスタンスの削除、再起動がおこなわれます。

構成例2

その他必要な知識

EC2インスタンスを利用するときにいくつか知っておくと良い知識があります。
簡単に説明をさせていただきます。

リージョン

リージョンは全世界に存在するAWSデータセンターの物理的な場所になります。
日本には東京と大阪ローカルリージョンがあります。
大阪ローカルリージョンは通常利用できませんが 2021年春に大阪リージョンとして利用できるようになります。

(参考資料) AWS 大阪ローカルリージョンをフルリージョンへ拡張中

アベイラビリティゾーン

アベイラビリティゾーン(AZ)はリージョン内に2つ以上存在するデータセンターのことです。電源設備、ネットワーク回線などが独立して設置されているため設備の不具合が発生した場合にリージョン全体で無く、AZの範囲で障害を止めることができます。

VPC

VPC (Virtual Private Cloud) はAWS内にプライベートなネットワーク環境を構築します。ネットワーク内では利用者が独自にIP割り当て行いインスタンスを設置する事ができます。

サブネット

VPC内でさらに細かく分割したネットワークのことです。
サブネットの中にEC2インスタンスやRDSなどを配置できるようになっています。サブネットにインターネットゲートウェイを接続することで外部ネットワークと通信することができます。
外部ネットワークと通信できるサブネットはパブリックサブネットといい公開サーバやロードバランサーを配置します。
外部ネットワークと通信できないサブネットはプライベートサブネットといいデータベースサーバなどセキュリティを重視するものを配置します。

サブネットのイメージ

セキュリティグループ

仮想ファイアウォールを利用できるサービスになります。
インスタンスへの受信トラフィックを制御するインバウンドルールと、インスタンスからの送信トラフィックを制御するアウトバウンドルールを設定します。 指定のIPアドレスのみSSH接続を許可するなど可能になります。

キーペア

インスタンスへの接続時に利用するセキュリティ認証情報のセットになります。SSH接続を行う際にpemまたはpkkキーを利用して認証を行います。インスタンス設定にキーペアを指定する事で、起動したインスタンスへの接続に利用できます。

タグ

インスタンスの管理を簡易にするために独自のメタデータを割り当てることができます。リソースの目的別、所有者、環境など分類することができます。

Elastic IP

AWSではパブリックIPの割り当て設定がOnの場合、起動時にパブリックIPが割り当てられます。パブリックIPはインスタンスを停止して再起動すると変更されてしまいます。Elastic IPは前もってIPアドレスを取得してインスタンスにアタッチすることで利用する事ができます。この場合、停止して再起動をしてもIPアドレスは維持されるためDNSに設定してWebサーバ等に利用する事ができます。

実際に構築してみる

試しにEC2の構築をしてみたいと思われましたら下記記事をご参考ください。

まとめ

EC2はAmazon Web Servicesが公開された2006年から存在していて、ハードウェアの変遷やアーキテクチャの改良、独自Arm CPU(Graviton2)の導入など今現在も進化しているサービスになります。1度学んで終了では無く、定期的に見直すことで新しい可能性が発見できるサービスと考えております。

以上、『AWS 再入門ブログリレー 2020』の 17日目のエントリ『Amazon EC2』編でした。
明日 (8/27) は木村さんの「Amazon DynamoDB」の予定です。お楽しみに!!