Professional Documents
Culture Documents
02 イントロダクション
02 イントロダクション
日本電子専門学校
講義 2回目
0
目次
• 講義2回目の目的
• ハンズオン①:Webサーバの構築
• 内部構造の把握
• 構築した環境の問題点
• ハンズオン②:フルマネージドサービスの体験
• 要件に応じたAWSの設計
1
講義2回目の目的
• クラウドの利便性を学ぶとともに、
利便性だけを享受してるだけではシステムごとに
異なる様々な要件に答えられないことを学ぶ。
• 要求仕様に足りないのは良くないが、その逆の過
剰な設備投資(無駄に高スペック)もまた、コストの
観点から望ましくない。
要件にあった適切なサービス/スペックのシステム
を作るためにはクラウドの仕様をはじめ、インフ
ラ(ネットワーク/サーバ/ストレージ)の基礎知識も
必要不可欠であることを理解する。
2
ハンズオン①
Webサーバーの構築
3
Webサーバーの構築
構成図
VPC
Availability Zone
Internet
端末
Amazon EC2 gateway
AMI
4
Webサーバーの構築
構築の流れ
• Amazonが提供しているLinuxの
AMI(Amazon Machine Image)を使い
EC2を起動、httpdをインストールして
アクセスする。
5
Webサーバーの構築
AMIとは
• Amazon Machine Imageの略。
EC2の起動イメージ。
• AWSが提供している公式イメージや、
企業がそれぞれのソフトウェアをプリインストー
ルしているAMIを使うことも可能。
また、自分でカスタマイズした
AMIを作ることもできる。
バックアップや、
オートスケール用の
ゴールデンイメージ
(基となるイメージ)として
利用する。
公式AMIの一例 6
Webサーバーの構築
構築の流れ
VPC
Availability Zone
Internet
端末
① EC2の Amazon EC2 gateway
作成
まずは元になる
AMI
AMIを選択する
7
Webサーバーの構築
AMIの選択
• AWSコンソールトップ画面から、EC2の画面へ遷移
「サービス」→「コンピューティング」「EC2」を
クリック
8
Webサーバーの構築
AMIの選択
• EC2ダッシュボードより、「インスタンスを起動」を
クリック
9
Webサーバーの構築
AMIの選択
• 作成するEC2の名前「ec2-intro」を入力する。
10
Webサーバーの構築
AMIの選択
• 作成するEC2にインストールするOSを選択する。
今回はAmazon Linuxがすでに選択されているため
そのまま次の手順へ移行する。
11
Webサーバーの構築
構築の流れ
VPC
Availability Zone
Internet
端末
① EC2の Amazon EC2 gateway
作成 (ec2-intro)
EC2へ接続するための
AMI
SSH鍵を作成
12
Webサーバーの構築
キーペアの作成
• 「新しいキーペアの作成」をクリック。
13
Webサーバーの構築
キーペアの作成
• キーペア名「ec2-intro-key」を入力し、
「キーペアを作成」をクリックする。
14
Webサーバーの構築
キーペアの作成
• 作成したキーペアが自動的にダウンロードされる。
15
Webサーバーの構築
キーペアの作成
• 作成したキーペアが自動的に選択される。
16
Webサーバーの構築
構築の流れ
VPC
Availability Zone
Internet
端末
① EC2の Amazon EC2 gateway
作成 (ec2-intro)
ssh(TCP 22番ポート)許可
http(TCP 80番ポート)許可
AMI 外部からEC2へ通信するための
ポートを許可する 17
Webサーバーの構築
セキュリティグループの設定
• 「からのSSHトラフィックを許可する」に
「自分のIP」を設定する。
18
Webサーバーの構築
セキュリティグループの設定
• 「インターネットからのHTTPトラフィックを
許可する」にチェックを入れる。
19
Webサーバーの構築
構築の流れ
VPC
Availability Zone
Internet
端末
① EC2の Amazon EC2 gateway
作成
AMI EC2を起動する
20
Webサーバーの構築
インスタンスの起動
• 画面右の概要の
「インスタンスを起動」を
クリックする。
21
Webサーバーの構築
インスタンスの起動
• インスタンスの作成ステータスが表示される。
インスタンスIDが表示されているので、
インスタンスIDをクリックする。
22
Webサーバーの構築
起動したインスタンスへのアクセス
• インスタンスの表示が「実行中」になるまで待ち、
実行中になったら「パブリックIPv4アドレス」を
メモする。
23
Webサーバーの構築
構築の流れ
VPC
x.x.x.x.
Availability Zone
Internet
端末
① EC2の Amazon EC2 gateway
作成 (ec2-intro)
EC2に付与されたパブリックIPに
AMI 対してssh接続を実施する
24
Webサーバーの構築
起動したインスタンスへのアクセス
• teratermを起動、先程メモしたIPを入力し、
「OK」をクリックする。
25
Webサーバーの構築
起動したインスタンスへのアクセス
• ホスト鍵をknown hostsに追加する。
「続行」をクリックする。
26
Webサーバーの構築
起動したインスタンスへのアクセス
• ユーザ名「ec2-user」を入力、
RSA/DSA/ECDSA/ED25519鍵を使う」に
チェックを入れ、「...」をクリックする。
27
Webサーバーの構築
起動したインスタンスへのアクセス
• 先程ダウンロードした「ec2-intro-key.pem」を
選択し、「開く」をクリック。
28
Webサーバーの構築
起動したインスタンスへのアクセス
• 「OK」をクリックする。
29
Webサーバーの構築
起動したインスタンスへのアクセス
ターミナルが表示される。
__| __|_ )
_| ( / Amazon Linux 2 AMI
___|¥___|___|
https://aws.amazon.com/amazon-linux-2/
6 package(s) needed for security, out of 14 available
Run "sudo yum update" to apply all updates.
[ec2-user@ip-10-0-0-82 ~]$
[ec2-user@ip-10-0-0-82 ~]$
30
Webサーバーの構築
httpdのインストール
コマンドを入力し、httpdをインストール、起動する。
31
Webサーバーの構築
httpdの動作確認
ブラウザを開き、インスタンスのIPを入力する。
「It works!」が表示されれば成功。
32
Webサーバーの構築
使用したインスタンスの削除
• 使い終わったインスタンスを終了する。
• WebGUIより、
インスタンスを
右クリックして
「インスタンスを終了」を
クリックする。
33
Webサーバーの構築
使用したインスタンスの削除
• 確認ダイアログが表示される。
「終了」をクリックする。
34
Webサーバーの構築
使用したインスタンスの削除
• 「正常に終了しました」の表記を確認する。
35
内部構造の把握
36
内部構造の把握
前節では、予め用意されたAMIを起動するだけで
ほしい環境が手に入るクラウドの利点を体験した。
実際には裏でいくつものコンポーネントが絡み合って
EC2が起動している。
裏で動いているコンポーネントを一通り確認していく。
37
内部構造の把握
EC2が起動するまでに起こっていたこと
1. AMI, インスタンスの選択
AWS Cloud
2. ネットワークの設定 ②
VPC
Public subnet
3. セキュリティグループの Internet
作成・設定 gateway
③
4. EBSの作成・アタッチ Security group
④
①
5. ENIの作成・アタッチ
AMI
Amazon EC2 Amazon Elastic Block Store
大きくわけてこの5つの工程を ⑤
経てEC2が起動した。
Elastic network
interface
一つずつ詳しく内容をみていく。 38
内部構造の把握
1.AMI, インスタンスの選択
AWS Cloud
• ベースイメージの決定 VPC
Public subnet
• インストールするOSの決定 Internet
gateway
Security group
①
• インスタンスタイプの設定
• インスタンスタイプによって
得意分野や性能が決まっていく AMI
Amazon EC2 Amazon Elastic Block Store
例)p4d.24xlarge
Elastic network
GPUベースインスタンス。 interface
機械学習などに特化。
https://aws.amazon.com/jp/ec2/instance-types/
39
内部構造の把握
2.ネットワークの設定
• 稼働するVPCの決定
AWS Cloud
• 今回はデフォルトVPC VPC
②
Public subnet
Internet
• サブネット(AZ)の決定 gateway
• 今回はデフォルトのサブネット
Security group
• ExternalIPの設定
• これがないと外部から AMI
Amazon EC2 Amazon Elastic Block Store
インスタンスに接続できない
Elastic network
interface
40
内部構造の把握
3. セキュリティグループの作成・設定
アウトバウンドルールの設定 VPC
Public subnet
Internet
gateway
• どのIP範囲、どのプロトコル、
どのポートからの ③
Security group
通信を許可するか
• 今回は22,80/TCPを AMI
Amazon EC2 Amazon Elastic Block Store
自IPの範囲で許可
Elastic network
interface
41
内部構造の把握
4. EBSの作成・アタッチ
• 容量の設定
• デフォルトは8GB AWS Cloud
OSによってはもっと少ない VPC
Public subnet
Internet
gateway
• ボリュームタイプの設定
Security group
• 用途によってはここも気にする ④
• 保存に適したボリュームや AMI
Amazon EC2 Amazon Elastic Block Store
IOPSに特化したボリュームなど
が存在する
Elastic network
interface
42
内部構造の把握
5. ENIの作成・アタッチ
• プライベートIPアドレスの設定
AWS Cloud
• 所属サブネットの設定 VPC
Public subnet
• 今回は1つ。ENIを2つつけ、 Internet
それぞれ別AZに所属させて gateway
冗長化させることもできる
Security group
• EC2へのアタッチ
AMI
Amazon EC2 Amazon Elastic Block Store
Elastic network
interface
43
内部構造の把握
使用コンポーネント一覧
EC2を一つ立ち上げるだけでも
• Security Group
• EBS
• ENI
• AMI
• VPC
• Subnet
といった概念が登場してくる。
※もちろん、これ以上に追加できるものはありますが、ここでは割愛します
作成したリソースに追従して何が作成されているかを
正しく把握しておくことは、AWSを使っていく上で
とても重要である。
44
構築した環境の問題点と解決策
45
構築した環境の問題点と解決策
構築した環境で実際のサービスを運用しようとすると
いくつもの脆弱な点が浮かび上がってくる。
その弱点をどのように克服するかをクラウドの機能を
もって設計の例を追う。
46
構築した環境の問題点と解決策
障害全体に関わる問題点
プロセスやインスタンスが落ちた時や、
AWSそのものの障害時に知る手段がない。
自動で復旧するような設定もないため、
ユーザーからの通報をもって知ることになるか、
知らずにサービスが落ちたままである。
47
構築した環境の問題点と解決策
障害全体に関わる解決策
障害対応
メトリクスの
通知の送信 監視
インスタンスそのものに障害が起きた場合、
複数のインスタンスがないためサーバーがダウンし、
サービスが停止してしまう。
49
構築した環境の問題点と解決策
インスタンスに関わる解決策
複数インスタンスを稼働させ、ELBでロードバランス
を行う。
また、オートスケーリンググループを組むことでも
対処可能である。
オートスケーリングを組む場合、インスタンスはス
テートレスにしておくことが大事。
50
構築した環境の問題点と解決策
EBSに関わる問題点
EBSに障害が起き、ディスクが使用できなく
なった場合、データの復旧が困難になり
サービス継続に大きな支障が出てしまう。
データの保全は我々利用者側の責任範囲です。
51
構築した環境の問題点と解決策
EBSに関わる解決策
EBSのAMI化や定期的なバックアップの取得を行うこと
で、データ保全を行う。
バックアップはSnapshotの取得や、AWS Backupを利
用する。
障害によるデータ破損だけではなく、
人為的なミスからもデータを守るためには
バックアップが必要不可欠です。
AWS Backup
52
AMI
構築した環境の問題点と解決策
ネットワークに関わる問題点
リージョンやAZに障害が起きた場合、
単一リージョンや単一AZのみに配置しているリソー
スは
影響を受けます。
インスタンスやデータは無事ですが、ネットワークが
通じなくなるためサービスが停止してしまいます。
AWS Cloud
VPC
Public subnet
53
構築した環境の問題点と解決策
ネットワークに関わる解決策
複数のAZにインスタンスをそれぞれ構築します。
その際接続はELBでロードバランスします。
リージョン障害の対策は、別リージョンや
別のクラウドに同様のサービスを構築します。
AWS Cloud
VPC
54
構築した環境の問題点と解決策
問題点とその解決策 まとめ
55
構築した環境の問題点と解決策
イントロダクションでは、障害への対策は事例紹介にとどめます。
今後の講義ではどのような構成を取れば障害への対策になるかを
考えながらシステムを作っていきます。
また、AWSには運用面をAWSに任せたフルマネージドな
サービスもあります。
フルマネージドサービスのうちの1つ、Lambdaを紹介します。
実際にフルマネージドでサービスを作ってみましょう。
56
ハンズオン②
フルマネージドサービスの体験
57
フルマネージドサービスの体験
• Lambda
フルマネージドの関数実行環境。
様々な言語の実行環境をインスタントに利用できる。
58
フルマネージドサービスの体験
• 構成図
AWS Cloud
AWS Lambda 端末
59
フルマネージドサービスの体験
• 構築の流れ
AWS Cloud
AWS Lambda 端末
Lambda関数の作成
60
フルマネージドサービスの体験
Lambdaの作成
• AWSコンソールトップ画面から、Lambdaの
画面へ遷移する。「サービス」→
「コンピューティング」→「Lambda」をクリック。
61
フルマネージドサービスの体験
Lambdaの作成
• Lambdaトップ画面の「関数の作成」をクリック。
62
フルマネージドサービスの体験
Lambdaの作成
• 関数名「intro-function」を入力する。
63
フルマネージドサービスの体験
Lambdaの作成
• 「デフォルトの実行ロールの変更」をクリック、
「既存のロールを使用する」にチェックを入れ、
「LabRole」を選択する。
64
フルマネージドサービスの体験
• 構築の流れ
AWS Cloud
AWS Lambda 端末
端末からLambda関数にアクセス
するためのエンドポイントを作成する
65
フルマネージドサービスの体験
Lambdaの作成
• 「詳細設定」をクリックし、
「関数URLを有効化」にチェックを入れる。
66
フルマネージドサービスの体験
Lambdaの作成
• 認証タイプの「NONE」にチェックを入れ、
「関数の作成」をクリックする。
67
フルマネージドサービスの体験
Lambdaの作成
• 「関数 intro-function を正常に作成しました。」の
表示を確認する。
68
フルマネージドサービスの体験
• 構築の流れ
AWS Cloud
AWS Lambda 端末
端末からLambda関数にアクセスする
69
フルマネージドサービスの体験
Lambdaの作成
• 関数の概要の横にある「関数URL」をクリックする。
70
フルマネージドサービスの体験
Lambdaの作成
• 「”Hello from Lambda!”」が表示されることを確認。
71
フルマネージドサービスの体験
Lambdaの画面より、作成した関数を選択し、アクション
から「削除」をクリックする。
72
フルマネージドサービスの体験
「削除」をクリックし、関数を削除する。
73
フルマネージドサービスの体験
• Lambdaはフルマネージドサービスであり、
冗長性や運用を意識する必要がない。
前述した簡易構築の問題点を、
ある程度AWSに担保した上で作れる強みがある。
• ただし、リージョンやサービスそのものの
障害には耐えられない。
SLAをみて障害を許容するか、マルチリージョン
構成にするかを検討する必要がある。
74
フルマネージドサービスの体験
非マネージドサービスとの意識の違い
フルマネージドでも障害通知は必要である。
また、どのリージョンに所属しているかは把握しておく必要があるが、
それ以外はすべてAWSに任せておける。
意識する 意識する
必要なし 必要なし
解決策 Amazon オートスケール 複数AZへの配置 Amazon
Cloudwatch Elastic マルチリージョ Backup
Amazon SNS LoadBalance ン Snapshot
複数インスタンス マルチクラウド AMI化
の作成
75
要件に応じたAWSの設計
76
要件に応じたAWSの設計
• 実際のシステム構築では作りたいシステムの
「要件」に応じて作られる。
• 今後の授業では、
簡単な要件の例に沿ってシステム構築を行う。
77
要件に応じたAWSの設計
授業で構築を行うシステムの要件
• 機能面
• ECサイトとして使うのでWebサーバーとしてレスポンスを返す
• https接続を必須とする
• ドメインでWebサーバーにアクセスする
• 性能面
• アクセスが増えてきたときのための性能アップを迅速に行いたい
• 運用面
• 24時間365日で稼働
• 検証環境・本番環境の2環境ほしい
• 障害発生時にはオペレーターに通知を
• 可用性
• 単一障害でのシステムダウンは許容しない
• 復旧困難な障害の対策のためのバックアップの準備
• セキュリティ面
• メンテナンスのためのサーバー接続は閉域網から行いたい
78
要件に応じたAWSの設計
授業で構築を行うシステムの要件
• 機能面
• ECサイトとして使うのでWebサーバーとしてレスポンスを返す
• https接続を必須とする
• ドメインでWebサーバーにアクセスする
• 性能面
• アクセスが増えてきたときのための性能アップを迅速に行いたい
• 運用面
• 24時間365日で稼働
• 検証環境・本番環境の2環境ほしい
• 障害発生時にはオペレーターに通知を
• 可用性
• 単一障害でのシステムダウンは許容しない コストの関係上
コストの
• 復旧困難な障害の対策のためのバックアップの準備 本講義では割愛
関係上割愛
• セキュリティ面
• メンテナンスのためのサーバー接続は閉域網から行いたい
79
要件に応じたAWSの設計
構成図
AWS Cloud
複数AZにインスタンスを配置、
Amazon Relational Database
AZ障害に耐えるようにService (Amazon RDS) Amazon CloudWatch
81
要件に応じたAWSの設計
本講義で作成した簡易環境との比較
種別 要件 簡易 構築
環境 システム
機能面 Webサーバーとしてレスポンスを返す ○ ○
ドメインでのアクセス × ○
https接続 × ○
性能面 性能アップのしやすさ × ○
運用面 24/365 ○ ○
検証・本番の2環境 × ×
障害発生時の通知 × ○
可用性 単一障害点 × ○
バックアップ × ○
セキュリティ 閉域網からの接続 × ×
82