Download as pdf or txt
Download as pdf or txt
You are on page 1of 83

イントロダクション

日本電子専門学校
講義 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をインストール、起動する。

[ec2-user@ip-10-0-0-82 ~]$ sudo yum install –y httpd


[ec2-user@ip-10-0-0-82 ~]$ sudo systemctl start 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. セキュリティグループの作成・設定

• インバウンドルールおよび AWS Cloud

アウトバウンドルールの設定 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
構築した環境の問題点と解決策
障害全体に関わる解決策

Amazon CloudwatchやAmazon SNSを設定し、


AWSの障害やインスタンスなどの障害に
いち早く気づき、対応できるようにしておく。

障害対応

メトリクスの
通知の送信 監視

Amazon Simple Amazon


48
Notification Service CloudWatch
構築した環境の問題点と解決策
インスタンスに関わる問題点

インスタンスそのものに障害が起きた場合、
複数のインスタンスがないためサーバーがダウンし、
サービスが停止してしまう。

49
構築した環境の問題点と解決策
インスタンスに関わる解決策

複数インスタンスを稼働させ、ELBでロードバランス
を行う。

また、オートスケーリンググループを組むことでも
対処可能である。
オートスケーリングを組む場合、インスタンスはス
テートレスにしておくことが大事。

Elastic Load Balancing

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

Public subnet Public subnet

54
構築した環境の問題点と解決策
問題点とその解決策 まとめ

種別 障害全体 インスタンス ネットワーク EBS


問題点 障害を知る術がない インスタンス障害 AZ障害 データ損失
リージョン障害 人為的ミスによ
るデータ消失

解決策 Amazon Cloudwatch オートスケール 複数AZへの配置 Amazon


Amazon SNS Elastic マルチリージョ Backup
LoadBalance ン Snapshot
複数インスタンス マルチクラウド AMI化
の作成

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に任せておける。

種別 障害全体 インスタンス ネットワーク EBS


問題点 障害を知る術がない インスタンス障害 AZ障害 データ損失
リージョン障害 人為的ミスによ
るデータ消失

意識する 意識する
必要なし 必要なし
解決策 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

VPC CI/CD Tools


Internet gateway

Availability Zone Availability Zone


AWS CodeCommit
Application Load
Balancer

AWS CodeDeploy AWS CodeBuild


Auto Scaling group
Public subnet Public subnet

Amazon Elastic Compute Amazon Elastic Compute


Cloud (Amazon EC2) Cloud (Amazon EC2)
Amazon Simple Storage
Service (Amazon S3)

Amazon Relational Database


Service (Amazon RDS) Amazon CloudWatch
80
要件に応じたAWSの設計
構成の説明
AWS Cloud
LBで複数AZの
インスタンスにバランシング、
VPC CI/CD Tools
Internet gateway HTTPS終端
Availability Zone Availability Zone
AWS CodeCommit
Application Load
Balancer

AWS CodeDeploy AWS CodeBuild


Auto Scaling group
Public subnet
インスタンスの監視を行う
Public subnet

Amazon Elastic Compute Amazon Elastic Compute


Cloud (Amazon EC2) Cloud (Amazon EC2)
Amazon Simple Storage
Service (Amazon S3)
Public subnet

複数AZにインスタンスを配置、
Amazon Relational Database
AZ障害に耐えるようにService (Amazon RDS) Amazon CloudWatch
81
要件に応じたAWSの設計
本講義で作成した簡易環境との比較

種別 要件 簡易 構築
環境 システム
機能面 Webサーバーとしてレスポンスを返す ○ ○
ドメインでのアクセス × ○
https接続 × ○
性能面 性能アップのしやすさ × ○
運用面 24/365 ○ ○
検証・本番の2環境 × ×
障害発生時の通知 × ○
可用性 単一障害点 × ○
バックアップ × ○
セキュリティ 閉域網からの接続 × ×

82

You might also like