AWS Solution Architect Associate 試験対策 ch2
2-1 高可用性の定義
AWSでは、オンプレよりも低コストかつ多彩なレベルで可用性をシステムに組み込むことができる
一般的な可用性の定義
稼働率(%) | 年間停止時間 |
---|---|
99 | 3d15h36m |
99.9 | 8h46m |
99.95 | 4h23m |
99.99 | 52m34s |
AWSにおける可用性向上策
- 障害
- システム全体が使用不能になること
- システム動作結果の正しさを保証できなくなること
- Design For Failure (障害発生を前提としたシステム構築)
- SPOF: Single Point Of Failure (単一障害点)をなくせ
2-2 ネットワークにおける高可用性の実現
ネットワークサービス
@startuml class VPC class AZ class Subnet class PublicSubnet class PrivateSubnet VPC o-- AZ AZ o-- Subnet Subnet <|-- PublicSubnet Subnet <|-- PrivateSubnet @enduml
- Direct Connect
- Route 53
ルーティングポリシー | 説明 |
---|---|
simple | 設定されたレコードの情報にしたがって |
failover | ヘルスチェック結果に基づいて、利用できるリソースへ |
geolocation(位置情報) | ユーザーの位置に基づいて地理的に近くへ(リージョンをまたいでも) |
geoproximity(地理的近接性) | リソースの位置に基づいて |
latency | レイテンシ最小(近くても遅いことはあるので) |
multivalue answer(複数値回答) | 正常なレコードから乱択(最大8) |
weighted | 指定した比率で複数のリソースへ |
高可用ネットワークの構築
Direct Connect | インターネットVPN | |
---|---|---|
安定性 | 高 | 低 |
速度 | 高 | 低 |
安全性 | 優 | 劣 |
コスト | 高 | 低 |
即時利用 | 不可 開通に時間かかる |
可 |
2-3 コンピューティングにおける高可用性の実現
コンピューティングサービス
- EC2: Elastic Cloud Computing
- 高可用性のためにはマネージドサービスを使うのが普通
- ELB
- Auto Scaling
- DNS
- 高可用性のためにはマネージドサービスを使うのが普通
- Auto Scaling
- スケールアウト
- スケールイン
- クールダウン
- ライフサイクルフック
- 用例
- 起動時に特定のデータをロード
- 終了時にログ出力
- 用例
- CloudFront
- CDN
- エッジロケーションからコンテンツ配信
- これ自体の可用性を考慮する必要はない
- Lambda
VPCリソースにおける高可用性コンピューティング
TODO:暇な時にお絵描きする
- ELB: Elasting Load Balancing
- こいつ自体はSPOFにならない
- IP代わるので代わりにエンドポイント使う
- 一般的なWebアプリケーションにおける構成例
ELB --> * EC2
- 複数AZにEC2配置
- EC2をAutoScalingグループでまとめる
- 一般的なWebアプリケーションにおける障害発生時の挙動
- ヘルスチェック正常なEC2にのみトラフィック振り分けられる
- セッションは失うが稼働し続ける
- データベースを持つWebアプリケーションにおける構成例
- RDSインスタンス障害発生時の挙動
- インメモリデータベースを持つWebアプリケーションにおける構成例
- セッション情報管理等
- ElastiCache
- マルチAZ機能利用可能なRedisエンジン前提で高可用性実現
- RDSと同じような流れで自動フェイルオーバー
- スレーブがマスターに昇格
- エンドポイントは変わらない
グローバルサービスにおける高可用性コンピューティング
- Route 53を利用したWebアプリケーションにおける構成例
- CloudFrontを利用したWebアプリケーションにおける構成例
- ELBやAuto Scaliingで自動的にスケールすることは可能
- が、アクセスが急増すると、スケールアウトが間に合わず、システムが過負荷になるおそれあり
- キャッシュから応答することで予期できないアクセス集中にも対応できる
- CloudFrontのオリジンは複数指定できる
- L7でのルーティング
Route53 -> CloudFront -> ELB -> EC2 -> バックエンド
Route53 -> CloudFront -> S3
- L7でのルーティング
2-4 ストレージにおける高可用性の実現
ストレージサービス
- EBS: Elastic Block Storage
- インスタンスストア(=エフェメラルディスク)
- ホストコンピュータ内の領域を利用
- 揮発性
- 停止・起動は駄目(Instance Store-Backed Instanceではできない)
- 同一のホストコンピュータでの起動が担保されていない
- 再起動は大丈夫
- 停止・起動は駄目(Instance Store-Backed Instanceではできない)
- 無料・高パフォーマンス
- EFS: Elastic File System
- 共有ストレージ
- 自動的に複数のAZで冗長化される
- ユーザ側で可用性を考慮する必要なし
- スナップショット取れない
- S3
- 耐久性イレブンナイン
- 可用性は99.99%
- S3 Glacier
Glacierのデータ取り出しオプション
オプション | 取り出し時間 |
---|---|
迅速(expedited) | 1-5分 |
標準(standard) | 3-5時間 |
大容量(bulk) | 5-12時間 |
迅速(expedited)の実行タイプ
実行タイプ | 説明 |
---|---|
オンデマンド | 成功する保証なし |
プロビジョニング | リクエストはすぐ処理されるが高価 |
コンピューティングサービスにおけるストレージの選択
- EBS/EFS/インスタンスストア比較
EBS | EFS | インスタンスストア | |
---|---|---|---|
インスタンスとの接続 | N/W接続 | N/W接続 | ホストコンピュータ内 |
利用方法 | ボリューム作成後にマウント | ボリューム作成後にマウント | インスタンス起動時にマウント |
接続可能台数 | 1 | 複数 | 1 |
データ永続性 | 不揮発 | 不揮発 | 揮発 |
冗長化 | 単一AZ内冗長化 | 複数AZ | 冗長化なし |
拡張性 | 手動 | 自動 | 不可 |
パフォーマンス | 高 | 高 | 非常に高 |
料金体系 | 従量課金(安) | 従量課金(高) | 無料 |
- S3をコンピューティングサービスとして利用
- 静的Webサイトホスティング
- 特徴
- スケールする必要がなく、アクセス集中に強い
- 運用コスト低減
- 動的コンテンツは含められない
各ストレージのバックアップ
- EBSのバックアップとリストア
- EC2のバックアップとリストア
- AMI: Amazon Machine Image
- EBSスナップショット
- EC2の構成情報
- AMIはリージョン間コピー可能
- AMI: Amazon Machine Image
- S3の機能
- データは特定のリージョンの複数のAZに複製される
- データ整合性に注意
保存方法 | モデル | 説明 |
---|---|---|
PUT(新規追加) | 書込後の読込整合性 | HTTP 200 OK返却時点でデータ参照できる |
PUT(更新) | 結果整合性 | 更新直後に参照すると古いかも |
DELETE | 結果整合性 | 削除直後に参照すると削除前の見えるかも |