どうも、cloudpackかっぱ@inokara)です。

はじめに

AWS Black Belt Tech シリーズ Amazon Elastic Compute Cloud (Amazon EC2) を読んで自分なりに要点を纏めてみます。(結果として写経になりました…)


参考

以下、「今日の Agenda」に従って纏めていきます。


Amazon EC2 とは?

Amazon EC2

  • コンピュータ処理に分類される AWS の各種サービスの一つ
  • コンピュータ処理には EC2 以外に EMR や AutoScaling が含まれる(※ Workspaces は含まれる??)
  • 仮想化されたサーバー

リジョンとエッジロケーション

  • リージョン(世界で 8 + 2 拠点)とエッジロケーション(36 都市+ 51 箇所)
  • リージョン(バージニア、GovCloud、カリフォルニア、オレゴン、サンパウロ、ダブリン、シンガポール、シドニー、北京、東京)

アベイラビリティゾーン(AZ)

  • データセンター群
  • 各リージョン内に複数の AZ が存在
  • 各 AZ はお互いの影響を受け難いように「地理」「電源」「ネットワーク」を分離して設計
  • AZ 間は高速専用線で接続
  • リージョン間はインターネットを使用している

VPC と EC2-Classic

  • 現状の標準環境は VPC(Virtual Private Cloud)
  • VPC はユーザー毎の IP アドレス領域でインスタンスを利用可能
  • EC2-Classic は全ユーザーで共通の 10.0.0.0/8 の IP アドレスを利用する

EC2-VPC の Default VPC

  • Default VPC では 172.31.0.0/16 の IP アドレスが利用される
  • 各 AZ に Default Subnet(public) が自動作成される(CIDR は /20 => 4096 IPs)
  • 選択した AZ の Default Subnet にインスタンスがデプロイされる
  • EC2 インスタンスには Public IP アドレス(動的割当の Global IP)がアサインされる

Amazon Elastic Block Store(EBS)

  • EBS とは EC2 に仮想外付けされるプロックレベルのストレージサービス
  • 1G 〜 1TB サイズ
  • 各 EC2 で複数の EBS を利用することが出来る
  • データは永続的に保存される
  • いつでもバックアップ(スナップショット)が取得出来る
  • スナップショットから EBS を作成可能(他の AZ に作成出来る)
  • Provisioned IOPS でパフォーマンス指定が可能(2014/3 時点で最大 4000IOPS)
  • 他の EC2 インスタンスに付け替えが可能

Instance Storage と EBS

  • Instance Storage は内蔵ディスク
  • EC2 を Stop or Terminate するとクリアされる(注意!)
  • 性能、容量はインスタンスタイプ毎に決められている
  • 追加コスト無し
  • EBS はネットワークで接続
  • EC2 とは独立管理で EC2 を Terminate しても EBS は保持可能
  • Volume 毎に性能、容量を定義可能
  • EBS の費用が発生

EC2 に関連する主要コンポーネント

  • AMI(☆)
  • CloudWatch
  • Elastic IP
  • VPC
  • Auto Scaling
  • ELB
  • Management Console
  • Key Pairs(☆)
  • Security Groups(☆)
  • EBS -> Snapshot(☆)
  • VM Import/Export

Amazon EC2 の基本

EC2 の起動

  1. AMI 選択
  2. 台数、インスタンスタイプ、AZ の指定
  3. EBS の設定
  4. Key Pair の選択
  5. Security Groups の選択

Amazon Machine Image(AMI)

  • インスタンスの作成に使用するイメージテンプレート
  • 公式、サードパーティも AMI を提供している
  • EC2 インスタンスから任意のタイミングでカスタム AMI を作成出来る

EC2 インスタンスのライフサイクル

  • Running -> 実行中、課金される
  • Stopped -> 停止中、課金されない
  • Terminated -> 終了(Stop / Start が出来ない)

EC2 インスタンスのタイプ変更

  • Stop していると、いつでもタイプを変更出来る

EBS ボリュームのアタッチ

  • EC2 インスタンスと同じゾーンに作ること
  • スナップショットから複製可能

EC2 インスタンスのアドレス

  • Private IP(VPC 内のサブネットから割り当てる)
  • Pribate DNS(*.internal)
  • Public DNS 名(*.amazonaws.com)
  • Public IP アドレスをオプションで付けられる
  • 固定された Public IP Addresses を EIP と呼ぶ
  • EIP は稼働中の EC2 インスタンスに瞬時に取付け、取り外しが可能
  • インスタンスにアサインしている時には料金はかからない

EIP の使いどころ

  • 通常は EIP は不要で EC2 の Public DNS 名を用いて CNAME で名前変換を行う(Route 53 で Public DNS を用いる)
  • 固定 IP アドレスが必要な時に限り EIP を用いる(メールサーバーの送信制限解除、逆引き申請等が必要)

リージョン間のコピー

  • AMI と EBS はリージョン間のコピーがkanou

Amazon EC2 関連サービスと関連情報

用途 / 役割 サービス 備考
監視 CloudWatch
負荷分散 ELB
自動スケール AutoScaling
閉域網での利用、仮想ネットワーキング Amazon VPC 社内ネットワークから VPN 接続 / ルーティング、イントラ IP アドレス、仮想 NIC 等
専有サーバー Amazon Dedicated Instance
専用線接続 Amazon Direct Connect
Windows Windows インスタンス
スパコン HPC インスタンス
アクセス管理 IAM
料金関係 Consolidated Billing

Amazon EC3 のセキュリティモデル

AWS のセキュリティの考え方

  • シェアード・レスポンシビリティ・モデル(責任共有モデル)
  • Web サイトとアプリケーションのセキュリティはお客様、SI にて実現可能
  • インフラ(ファシリティ、データセンター、電源、ネットワーク冗長化)はよりハイレベルのセキュリティを AWS が提供

EC2 の責任共有モデル

  • ファイアウォールとインスタンスはユーザーが管理する
  • 物理インターフェースとハイパーバイザーは AWS が管理する

ファイアウォールを実現する Security Group

  • インスタンスの IN/OUT トラフィックを制限するファイアウォール
  • デフォルトで IN 向けは全てのトライフィックを閉じている
  • 必要な受信アクセスに対してアクセスルールを定義する(プロトコル、宛先ポート、アクセス元 IP / Security Group)
  • ルールをひとまとめにしたテンプレートを Security Group と呼ぶ

Security Group の使い方

  • インスタンスの用途に応じた Security Group を用意する
  • アクセス元に Security Group を設定して限定可能

セキュリティ証明書

  • EC2 インスタンスへのアクセス -> 鍵認証
  • Web コンソールへのアクセス -> パスワード認証 / 他要素認証 / IAM
  • API へのアクセス -> アクセスキー / X.509 証明書 / IAM

キーペアを用いた鍵認証

  • 鍵認証はユーザー名、パスワードの認証よりも安全な認証方式

EC2 の SLA

  • EC2 の可用性が 99.95%
  • SLA が満たされない場合にはサービスクレジットを返還する

最新アップデート

追加された機能

  • VM Import for Linux
  • IAM に EC2 Resource Permissions
  • リザーブドインスタンスの変更可能に
  • SR-IOV ネットワークドライバを採用してネットワーク性性能向上(C3 / I2 / R3 インスタンスで対応)

インスタンスのさらなる追加(目的別のインスタンスタイプ)

  • 一般的な目的なら M3
  • Compute Optimized なら C3
  • Memory Optimized なら R3
  • GPU が必要なら G2
  • IOPS 重視なら I2
  • Disk Based Storage なら HS1

Intel Processor Features

  • m3 / c3 / cc2 / g2 / cr1 / i2 / r3 の全てが対応
  • AES New Insturactions(AES-NI) -> c1 / cg1 / m2 でも対応
  • Advanced Vector Extensions(Intel AVX)
  • Turbo Boost Technology

利用における TIPS

故障の為の設計(Design for Failure)

  • 故障に備えた設計(故障するものと考えてシステム全体で保守的な設計)
  • SPOF の排除
  • 障害からの復旧(対応品質)を重視する
  • 他の冗長性の高いサービスとの組み合わせ

EC2 における故障の為の設計

  • AMI を常にとっておく
  • EBS のスナップショットでバックアップ
  • 複数の AZ への分散
  • ELB でサーバーを冗長化、Auto Scaling で自動復帰
  • Reserved Instance でキャパシティ保証

定期的なバックアップ

  • EC2 の AMI を定期的に作成する
  • データボリュームとしての EBS の場合、EBS のスナップショットを定期的に作成

Instance Storage に SSD を積んだインスタンスが増えてきた

  • 第三世代のインスタンス(m3 とか c3 とか…)から?
  • cr1 とか hi1 とか i2 にも…

Instance Storage を使うべきなのは…

  • 高 IOPS や高帯域なストレージが必要
  • 消えても良い一次データの置き場
  • ストレージ冗長化を準備でいる場合

EC2 へのファイル転送

  • SCP
  • S3 経由で共有
  • FTP サーバーを立ち上げる
  • 高速に送信したい場合には Tsunami UDP や Aspera 等のソリューションを利用

VM Import / Export

  • 複数のプラットフォームの VM イメージを Amazon EC2 に移行することが出来る
  • VMWare ESX VMDK
  • Citrix XenServer VHD
  • Microsoft Hyper-V VHD

稼働 EC2 インスタンスからメタデータ取得

  • curl http://169.254.169.254/latest/meta-data
  • 色々と取得できまっせ
  • 詳細はこちら

起動時にパラメーターを渡す

  • 起動時に 16KB 以内で任意のものを渡せる
  • Chef や Puppet 等を利用して、自己構成出来る AMI に

EC2コマンドラインツール & AWS SDKs

  • コマンドラインから EC2 の API にアクセス出来るツール(ツールをインストールしてセキュリティ証明書を配置)
  • マネジメントコンソールだけではなく API からプログラマブルにアクセス

EC2 のスケジュールイベント表示機能

  • EC2 インスタンスが稼働していているハードのメンテナンスが必要な場合に情報を提供するする仕組み
  • インスタンスリブート、システムリブート、リタイヤ

EC2 のステータスチェック機能

  • Status Check タブ
  • システムステータスチェックとインスタンスステータスチェックを自動テストを実行して情報掲示する
  • システムステータスチェック(EC2 インスタンスにネットワーク疎通があるかチェック)
  • インスタンスステータスチェック(EC2 上の OS へのネットワーク疎通があるかチェック)
  • 状況に乖離がある場合にはレポートすることが出来る

AWS 制限増加申請

  • EC2 を誤って大量に作成しないように、最大インスタンス数の上限を 20 に制限している
  • 制限増加申請フォームで各種制限の増加を行える

既存 EBS ボリュームのサイズ変更

  1. EBS をデタッチ
  2. EBS から S3 にスナップショットを作成
  3. 新たなボリュームサイズを指定して EBS を作成する
  4. EBS をアタッチする
  5. マウントしてリサイズする

EBS と S3

  • EBS は複数の EC2 にアタッチすることは出来ない
  • 単独の EC2 インスタンスのブロックデバイスとしての使い方
  • NFS のような使い方をしたい場合には GlusterFS 等のミドルウェアを導入する
  • S3 は複数の EC2 からアクセス可能
  • Write Once Read A Lot
  • S3 の耐久性は 99.999999999% で非常に高い

EIP 使用時の注意点

  • EIP を用いた場合にはインターネット経由のアクセスとなり課金が発生するケースがある
  • 名前解決したいサーバーに固定 IP を付与
  • 各サーバーは固定グローバル IP を元に AWS の DNS に名前を問い合わせ
  • 問い合わせ結果、返ってくる外部 DNS 名でサーバーにアクセス
  • EC2 内部で外部 DNS 名を使ってアクセスするとプライベート IP アドレスに返還される為に目的のサーバーにプライベート IP でアクセス出来る

料金モデル

AWS 課金の仕組み

  • データ転送量
  • ELB 利用料、データ処理量
  • インスタンスタイプ別利用料
  • EBS の利用料
  • S3 の利用料

Simple Monthly Calculator

複数の価格モデル

  • 選べる課金モデル
  • 時間課金(オンデマンド・インスタンス)
  • EC2 リザーブドインスタンス(ある程度継続して EC2 を利用する→ 1 年 or 3 年)
  • EC2 スポットインスタンス(入札を利用してより安く使う)

AWS 無料試用枠

  • お世話になりました

俺のまとめ

  • インスタンスタイプの m とか c とかそんな意味やったんやー
  • EC2 の可用性は 99.95%
  • S3 の耐久性は 99.999999999%
  • UserData は 16KB まで
  • Amazon Dedicated Instance って初耳
  • あと二回位は読む

元記事は、「AWS 白帯シリーズ(16) AWS Black Belt Tech シリーズ Amazon Elastic Compute Cloud (Amazon EC2) を写経する」です。