Copyright © CLASSMETHOD. 1
クラスメソッドブログ課外授業 3 日目
0から始める速習 Amazon VPC
クラスメソッド株式会社福田寅成
Copyright © CLASSMETHOD. 2
スピーカー紹介
•福田寅成•Twitter:@Cronoloves•AWS関連作業全般•技術記事執筆•技術コンサル
Copyright © CLASSMETHOD. 3
サンプル AWS環境構築の環境
• AWS管理コンソールアクセス端末 OS:Microsoft Windows 7• AWS管理コンソールアクセスブラウザ:Google Chrome• SSHアクセス端末 OS:Mac OS X 10.8• SSHアクセスツール:ターミナル
Copyright © CLASSMETHOD. 4
AWS Management Console概要
Copyright © CLASSMETHOD. 5
AWS管理コンソール:ログイン
Copyright © CLASSMETHOD. 6
AWS管理コンソール:ホーム
アカウント ID確認
Copyright © CLASSMETHOD. 7
AWS管理コンソール:メニューの編集
サンプルメニュー配置
Copyright © CLASSMETHOD. 8
AWS管理コンソール:サービスに直接アクセス
Copyright © CLASSMETHOD. 9
AWS管理コンソール: [重要 ]リージョンの確認
Copyright © CLASSMETHOD. 10
VPCの作成
Copyright © CLASSMETHOD. 11
VPCの作成
• VPCの一番基本となる VPC自身を作成します
Copyright © CLASSMETHOD. 12
VPCの作成: VPC画面を開く
Copyright © CLASSMETHOD. 13
VPCの作成: VPC一覧
Copyright © CLASSMETHOD. 14
VPCの作成: VPCを作成する
Copyright © CLASSMETHOD. 15
VPCの作成: Create VPCダイアログ
Tenancy:仮想サーバーを専有する場合は Dedicatedにする。
例: 10.0.0.0/16
Copyright © CLASSMETHOD. 16
VPCの作成: VPC一覧
Copyright © CLASSMETHOD. 17
Subnetの作成
Copyright © CLASSMETHOD. 18
Subnetの作成
• VPC内に Subnetを作成します• Public Subnet、 Private Subnetそれぞれに目的に応じた Subnetを作成し、 VPC内を区分けします• CIDRブロックに法則性を設けて分かりやすくしますPublic Subnet所属 Subnet : 10.0.偶数 .0/24
Private Subnet所属 Subnet : 10.0.奇数 .0/24
Copyright © CLASSMETHOD. 19
Subnetの作成:構成図における Public/Private
Public Subnet:水色のエリア、雲のアイコンPrivate Subnet:紫色のエリア、ルーターアイコン
Copyright © CLASSMETHOD. 20
Subnetの作成:構成図における Subnet
内側の実線が Subnet領域です。左上に鍵のマークが付いています。
Copyright © CLASSMETHOD. 21
Subnetの作成: Subnets画面を開く
Copyright © CLASSMETHOD. 22
Subnetの作成: Subnetを作成する
Copyright © CLASSMETHOD. 23
Subnetの作成: Create Subnetダイアログ
AZ: Availability Zone(リージョン内の地理的に異なる場所にあるサーバー群)
VPCと AZを選択する
Public Subnetの一つとしてSubnetを定義
Copyright © CLASSMETHOD. 24
Subnetの作成: Subnet一覧
Copyright © CLASSMETHOD. 25
Network ACLの作成
Copyright © CLASSMETHOD. 26
Network ACLの作成
• Subnetレベルのアクセス制御を行うNetwork ACLを作成します• Inbound/Outboundのアクセス制御を行います•ステートレスなので、 Inboundに対しての戻りを Outboundで制御する必要があります(逆も同様)• 複数の Subnetに共通の Network ACLを適用することができます
Copyright © CLASSMETHOD. 27
Security Groupと Network ACL
クラスメソッド開発ブログ http://dev.classmethod.jp/cloud/amazon-vpc-acl/
Copyright © CLASSMETHOD. 28
Network ACLの作成:構成図における Network ACL
外側の赤い点線が Network ACLです。
Copyright © CLASSMETHOD. 29
Network ACLの作成: Network ACL一覧
最初は、デフォルトの Network ACLにすべてのサブネットが登録されています。
Copyright © CLASSMETHOD. 30
Network ACLの作成: Network ACLを作成する
Copyright © CLASSMETHOD. 31
Network ACLの作成: Create Network ACLダイアログ
Copyright © CLASSMETHOD. 32
Network ACLの作成: Network ACL一覧
Copyright © CLASSMETHOD. 33
Network ACLの作成:サブネットの関連付け
上記では 10.0.1.0/24のサブネットを一番上の Network ACLに再関連付け( Associate)しています。
Copyright © CLASSMETHOD. 34
Network ACLの作成: Associate Network ACLダイアログ
Network ACLの関連付けが変更される旨の警告ダイアログ
Copyright © CLASSMETHOD. 35
Network ACLの作成: Network ACL一覧
Copyright © CLASSMETHOD. 36
Network ACLの作成:アクセス許可設定
新規作成した Network ACLは最初はフルオープンにしておきます。サンプル AWS環境では Security Groupにより詳細なアクセス制御を行うことにします。
すべてのトラフィック
ルールの番号を指定する。
Copyright © CLASSMETHOD. 37
Network ACLの作成:アクセス許可設定
Outboundも同様に設定する。
Copyright © CLASSMETHOD. 38
Internet Gatewayの作成
Copyright © CLASSMETHOD. 39
Internet Gatewayの作成
•パブリックサブネット用にインターネットとのやり取りの窓口となる Internet Gatewayを作成します
Copyright © CLASSMETHOD. 40
Internet Gatewayの作成: Internet Gateway一覧
Copyright © CLASSMETHOD. 41
Internet Gatewayの作成: Internet Gatewayを作成する
Copyright © CLASSMETHOD. 42
Internet Gatewayの作成: Create Internet Gatewayダイアログ
Copyright © CLASSMETHOD. 43
Internet Gatewayの作成: Internet Gateway一覧
リソースの IDが igwから始まっています。
Copyright © CLASSMETHOD. 44
Internet Gatewayの作成: VPCへの関連付け
Copyright © CLASSMETHOD. 45
Internet Gatewayの作成: Attach to VPCダイアログ
Copyright © CLASSMETHOD. 46
Route Tableの作成
Copyright © CLASSMETHOD. 47
Route Tableの作成
•ルーティングテーブルを作成します
Copyright © CLASSMETHOD. 48
Route Tableの作成: Route Table一覧
デフォルトのルーティングテーブル
Copyright © CLASSMETHOD. 49
Route Tableの作成: Internet Gatewayの追加
デフォルトの Route Tableを Public Subnet用のものに修正します
Internet Gatewayを追加する
Copyright © CLASSMETHOD. 50
Route Tableの作成: Create Routeダイアログ
Copyright © CLASSMETHOD. 51
Route Tableの作成: Subnetの関連付け
Subnetを追加する
Associate:関連付ける
Copyright © CLASSMETHOD. 52
Route Tableの作成: Associate Route Tableダイアログ
Copyright © CLASSMETHOD. 53
Route Tableの作成: Route Tableの作成
Copyright © CLASSMETHOD. 54
Route Tableの作成: Create Route Tableダイアログ
Copyright © CLASSMETHOD. 55
Route Tableの作成: Route Table一覧
Private Subnet用のルーティングテーブルには IGWを追加せずにサブネットを追加すれば OKです。
Network ACL同様目的別にルーティングテーブルを作成して、サブネットを関連付けておきます。
Copyright © CLASSMETHOD. 56
Route Tableの作成: NATと Virtual Private Gateway• Private Subnetからインターネットに出る際はNATを経由します。その設定は Route Tableに IGWを追加したのと同様に NATインスタンス(に割り当てられている ENI)を追加すれば OKですENI: Elastic Network Interface
• VPNで社内サーバーと接続する際もDestination=社内サーバーの IP、 Target=Virtual Private Gatewayのペアを追加していけば OKですVGW: VPN接続時の AWS側の入り口
Copyright © CLASSMETHOD. 57
Security Groupの作成
Copyright © CLASSMETHOD. 58
Security Groupの作成• EC2インスタンスへの Inbound/Outboundのアクセス制御を行うSecurity Groupを作成します。• ステートフルなので、 Inboudの戻りをOutboundで制御する必要はありません• 複数の EC2インスタンスに共通の Security Groupを適用することができます• 目的別に応じた Security Groupを EC2インスタンス作成より先に作成しますLoad Balancer用Webサーバー用SSHサーバー用NATサーバー用バックオフィスサーバー用
• Security Groupを SGと略す場合があります
Copyright © CLASSMETHOD. 59
Security Groupと Network ACL
クラスメソッド開発ブログ http://dev.classmethod.jp/cloud/amazon-vpc-acl/
Copyright © CLASSMETHOD. 60
Security Groupの作成:構成図における SG
内側の赤い点線が Security Groupです。
Copyright © CLASSMETHOD. 61
Security Groupの作成: Security Group一覧
default SGは使わないので放っておきます
Copyright © CLASSMETHOD. 62
Security Groupの作成: Security Groupを作成する
Copyright © CLASSMETHOD. 63
Security Groupの作成: Create Security Groupダイアログ
■cmプロジェクトの場合の Nameの命名規則例・ Load Balancer用 : cm-lb・Webサーバー用 : cm-web・ SSHサーバー用 : cm-ssh・ NATサーバー用 : cm-nat・バックオフィスサーバー用 : cm-bo
Copyright © CLASSMETHOD. 64
Security Groupの作成: Security Group一覧
Copyright © CLASSMETHOD. 65
Security Groupの作成
•アクセス制御の設定は後で行います後でも行えます!
• EC2インスタンスを作成する際に Security Groupを指定する必要があるので、先に作成しておきます。
これまでの手順で作成してきたものはすべて後続の手順で参照されるリソースです。
Copyright © CLASSMETHOD. 66
ここまでで VPC画面の作業を終え、これからは EC2画面での作業になります。
EC2画面での作業開始
Copyright © CLASSMETHOD. 67
Key Pairの作成
Copyright © CLASSMETHOD. 68
Key Pairの作成
• EC2インスタンスに SSH接続する際に用いるKey Pairを作成します• AWSでは PEMファイルを AWS管理コンソール上で作成することができます。
PEM: Base64エンコードされた X.509証明書X.509証明書:公開鍵証明書の規格の一つ
Copyright © CLASSMETHOD. 69
Key Pairの作成: Key Pair一覧
Copyright © CLASSMETHOD. 70
Key Pairの作成: Key Pairの作成
Copyright © CLASSMETHOD. 71
Key Pairの作成: Create Key Pairダイアログ
Copyright © CLASSMETHOD. 72
Key Pairの作成: PEMファイルのダウンロード
★Key Pairをダウンロードする機会はここのみで、再ダウンロードすることはできません!
Copyright © CLASSMETHOD. 73
Key Pairの作成: Key Pairのダウンロード
• Key Pairダウンロード作業が Firefoxでのみうまく動作するとの記述のあるブログがありますが、 2012/12/01現在下記のブラウザで正常に Key Pairがダウンロードできる事を確認しています。Microsoft Internet Explorer 9(Windows 7)Google Chrome 23 (Windows 7)Mozilla Firefox 17 (Windows 7)Apple Safari 6(Max OS X v10.8)
Copyright © CLASSMETHOD. 74
Key Pairの作成: Key Pair一覧
Copyright © CLASSMETHOD. 75
PEMファイル
Classmethod.pemの中身
-----BEGIN RSA PRIVATE KEY-----MIIEowIBAAKCAQEAqootWHZXdizAk6AZ6X8itPFGWdIDlPFMKTeuLYAAoOBarvKQg9ornNo3ZstdWeS+/ZpF9kMdQYG2La7SPNAbcQLMdqY26jO2Vb/IIMHakDhLMyALYVPz04bpWaC9CpV1njk2vr0W・・・(暗号化された本文)-----END RSA PRIVATE KEY-----
Copyright © CLASSMETHOD. 76
EC2インスタンスの作成
Copyright © CLASSMETHOD. 77
EC2インスタンスの作成
• EC2インスタンス作成し、これまで作成してきた VPCインフラ上に配置します。• 繰り返しになりますが、先に EC2インスタンスを配置するインフラ側を先に設計・実装しておくと良いです。
Copyright © CLASSMETHOD. 78
EC2インスタンスの作成:インスタンス一覧
Copyright © CLASSMETHOD. 79
EC2インスタンスの作成:インスタンスの作成
Copyright © CLASSMETHOD. 80
EC2インスタンスの作成: Create New Instanceダイアログ
AWS Marketplace: Amazon.comのようにカートにサーバー製品を入れて購入するサービス。
Copyright © CLASSMETHOD. 81
EC2インスタンスの作成: AMIの選択
★:無料枠が適用される OSMy AMI:自分で作成した AMIから起動Community AMI:他人が作成した AMIから起動
Copyright © CLASSMETHOD. 82
Amazon Linux
• AWSによって開発・提供されている Linux• Amazon EC2上での実行を考慮して設計されている• 起動校正ツール、 AWSライブラリ、ツールなど AWSでの開発を支援するパッケージが予め含まれている• AWSサポートによりサポートを受けられる
http://aws.amazon.com/jp/amazon-linux-ami/
Copyright © CLASSMETHOD. 83
EC2インスタンスの作成:インスタンスタイプと起動場所の指定
Copyright © CLASSMETHOD. 84
EC2のインスタンスタイプ• 仮想CPUの数、コア数、メモリ数により下記のようなインスタンスタイプがある。
マイクロインスタンス t1.micro
スタンダードインスタンス m1.small m1.medium m1.large
ハイメモリインスタンス m2.xlarge m2.2xlarge m2.4xlarge
ハイCPUインスタンス c1.medium c1.large
クラスタコンピュートインスタンス cc1.4xlarge cc2.8xlarge
クラスタGPUインスタンス cg1.4xlarge
ハイ I/Oインスタンス hi1.4xlarge
EBS 最適化インスタンス 上記のインスタンスタイプの中で追加料金を払ってEBSに最適化したバージョンのEC2インスタンスを起動することが可能です
VPCでは選べないインスタンスタイプがあります。
Copyright © CLASSMETHOD. 85
EC2インスタンスの作成:インスタンス詳細
Subnetで指定済み
CloudWatchで詳細監視するかどう
か
Network Interfaceを新規作成
Private IPを手で入力する。例だと
10.0.0.100
Copyright © CLASSMETHOD. 86
EC2インスタンスの作成: EBSボリューム設定
EBS: Elastic Block Storage。 EC2インスタンスにマウント可能なストレージ
Copyright © CLASSMETHOD. 87
EC2インスタンスの作成: EBSボリューム設定変更
ディスク容量通常のディスクタイプか Provisioned
IOPS
EC2インスタンスをTerminateした際に
EBSボリュームも一緒に削除するかどうか
Copyright © CLASSMETHOD. 88
EC2インスタンスの作成:タグの指定
サーバーに名前( Name)を付けま
す
Copyright © CLASSMETHOD. 89
EC2インスタンスの作成: Key Pairの指定
Copyright © CLASSMETHOD. 90
EC2インスタンスの作成: Security Groupの指定
予め作成してあるSecurity Groupをサーバーの目的に応じ
て指定します
Copyright © CLASSMETHOD. 91
EC2インスタンスの作成:確認画面
Copyright © CLASSMETHOD. 92
EC2インスタンスの作成: EC2インスタンスの起動
Copyright © CLASSMETHOD. 93
EC2インスタンスの作成:ライフサイクル
Pending
Stopped
Running
Stopping
ShuttingDown
Terminated
Copyright © CLASSMETHOD. 94
EC2インスタンスの調達方法
• On Demand Instance:デフォルト。その場で購入。一番高価• Spot Instance:オークションで購入。一番安い。 APIがあるので、自動落札のシステムを構築したりできる。• Researved Instance:長期契約。初期費用がかかるが長期に使用していると最終的に費用が安い。
Copyright © CLASSMETHOD. 95
EIPの作成
Copyright © CLASSMETHOD. 96
EIPの作成
• AWSでは固定の IPアドレスであるEIP( Elastic IP)を EC2インスタンスに付与することができる。•この EIPはつけ外しが容易で、 EC2インスタンスに障害があった場合、 EIPを取り外し、別の新しいインスタンスにその EIPを付与することにより瞬時にサーバーの更新が可能になる。• EIPの課金に関して
EC2インスタンスに割り当てた場合は無料EC2インスタンスに割り当てられていない場合は課金される
Copyright © CLASSMETHOD. 97
EIPの作成: EIP一覧
Copyright © CLASSMETHOD. 98
EIPの作成: EIPの Allocate
Copyright © CLASSMETHOD. 99
EIPの作成: Allocate New Addressダイアログ
EIPを EC2で使うかVPCで使うか選択
Copyright © CLASSMETHOD. 100
EIPの作成: EIP一覧
ここが空だと課金されています!
Copyright © CLASSMETHOD. 101
EIPの作成: EIPの Associate
Copyright © CLASSMETHOD. 102
EIPの作成: Associate Addressダイアログ
インスタンスの選択。名前がリストに表示されているので、
選択しやすいです。
Copyright © CLASSMETHOD. 103
EIPの作成: EIP一覧
ここが空だと課金されています!
ここが空でないので無料!
Copyright © CLASSMETHOD. 104
Security Groupの設定
Copyright © CLASSMETHOD. 105
Security Groupの設定
• Security Groupを設定することにより、ネットワークのアクセス制御を行うことができます。•ここでは例としてロードバランサとWebサーバーのアクセスを許可を実装しています。
Copyright © CLASSMETHOD. 106
Security Groupの設定:Web - SSHの許可
アクセス元の指定。今回は 0.0.0.0/0にする
Copyright © CLASSMETHOD. 107
Security Groupの設定:Web - HTTPの許可
アクセス元の指定。 LBの Security Groupの ID
Webサーバーは LBからのみ HTTPアクセスを受け付ければよいので、 LBの Security Groupを HTTPアクセスの許可ソースとして指定しています。
Copyright © CLASSMETHOD. 108
Security Groupの設定:Web – 変更の確定
最後に Apply Rule Changesボタンを押下して変更を確定します。
Copyright © CLASSMETHOD. 109
Security Groupの設定: lb - HTTPの許可
Webサーバー用Security Group cm-
webの ID
Copyright © CLASSMETHOD. 110
ロードバランサーの作成
Copyright © CLASSMETHOD. 111
ロードバランサーの作成
• ELB画面でロードバランサーを作成する• 作成したロードバランサー配下に、 EC2インスタンスを配置する•ロードバランサーを LBと記述する場合があります
Copyright © CLASSMETHOD. 112
ロードバランサーの作成: LB一覧
Copyright © CLASSMETHOD. 113
ロードバランサーの作成: LBの作成
Copyright © CLASSMETHOD. 114
LBの作成: Create a New Load Balancerダイアログ
VPCを選択
Copyright © CLASSMETHOD. 115
ロードバランサーの作成:死活監視設定
LBから EC2インスタンスが死活監視されます。その際の監視方法の指定
Copyright © CLASSMETHOD. 116
ロードバランサーの作成:サブネットの指定
Webサーバーの所属するSubnetを選択する
Copyright © CLASSMETHOD. 117
ロードバランサーの作成: Security Groupの指定
ロードバランサー用のSecurity Groupを指定します。
Copyright © CLASSMETHOD. 118
ロードバランサーの作成:インスタンスの追加
Copyright © CLASSMETHOD. 119
ロードバランサーの作成:確認画面
Copyright © CLASSMETHOD. 120
ロードバランサーの作成: LB一覧
Copyright © CLASSMETHOD. 121
ロードバランサーの作成:詳細の確認
稼働中のサーバー数が表示されます。
Copyright © CLASSMETHOD. 122
ロードバランサーの作成:詳細の確認
サーバーの死活状況が表示されます
配下の EC2インスタンスがすべて Healthyかどう
か
サーバー追加ボタン
Webサーバーの Apacheがまだ起動していない状態での詳細になります
Copyright © CLASSMETHOD. 123
( HTTPサーバーの起動)
Copyright © CLASSMETHOD. 124
HTTPサーバーの起動
• ELB経由でWebサーバーの稼働を確認したい• 手順
SSHでWebサーバーへログインApacheをインストールindex.htmlを書き換えるロードバランサーのステータスを確認ブラウザでロードバランサーのアドレスにアクセスしてみる
同様の作業をもう一つのWebサーバーに行う
Copyright © CLASSMETHOD. 125
HTTPサーバーの起動: SSHでログインする
• PEMファイルの権限を修正する
• SSHでWebサーバーへアクセスする
$ chmod 400 <pemファイル名 >
ssh -i <pemファイル名 >ec2-user@<Webサーバーへ割り当てた EIPのアドレス >
__| __|_ ) _| ( / Amazon Linux AMI ___|\___|___|
https://aws.amazon.com/amazon-linux-ami/2012.09-release-notes/[ec2-user@ip-10-0-0-100 ~]$
Copyright © CLASSMETHOD. 126
Apacheの起動: OSの更新と Apacheのインストール• OSの更新を行う
• Apacheをインストールする
• HTTPサーバーの設定
• HTTPサーバーの起動
$ sudo yum update -y
$ sudo yum install -y httpd-devel
$ sudo vi /etc/httpd/conf/httpd.conf
Listen 0.0.0.0:80ServerName localhost:80
$ sudo chkconfig httpd on$ sudo service httpd start
Copyright © CLASSMETHOD. 127
Apacheの起動: index.htmlを書き換える
• index.htmlを書き換える$ sudo vi /var/www/html/index.html
Web1
※Web2サーバー用にはテキストを「Web2」にします。
Copyright © CLASSMETHOD. 128
Apacheの起動: LBのステータスを確認する
稼働中のサーバー数が表示されます。
Copyright © CLASSMETHOD. 129
Apacheの起動: LBのステータスを確認する
Web1が Healthyであると判定されています!
Copyright © CLASSMETHOD. 130
Apache の起動:ロードバランサーにアクセスしてみる
※Security Groupの設定でWebサーバーの EIPにブラウザからアクセスしてもアクセス出来ません!
Copyright © CLASSMETHOD. 131