AmazonEC2 Hands-on
                     第2回 JAWS-UG 横浜(2012/12/17)
                            株式会社サーバーワークス
                                           千葉 哲也

                                 twitter : @kachina_t
事前準備

• AWSアカウントの開設


• インターネットアクセス


• Webブラウザ


• ターミナル(Windows→TeraTerm、Mac→Terminal…)
アジェンダ

• EC2の紹介


• インスタンスの起動


• sshでインスタンスに接続


• PHP-SDKを使ってインスタンス情報を取得


• ELBを使って分散構成を実現


  • 新機能『IAM Roles for EC2』をつかって簡単に


• かたづけ
1. EC2の紹介(1/13)

• 仮想サーバサービスです。


• 必要な時に何百台でも数分で調達できます。


• 完全従量課金をベースに様々な料金モデルが用意されています。


• Webコンソールの他、APIでもコントールができます。


• 特定OS、言語、フレームワークに縛られません。


 • Windows,Linux等、多種多様なマシンイメージが用意されています。
1. EC2の紹介(2/13)
http://aws.amazon.com/jp/→AWS Management Console
1. EC2の紹介(3/13)
サインイン
1. EC2の紹介(4/13)
サービス一覧
1. EC2の紹介(5/13)
Dashboard
1. EC2の紹介(6/13)
INCETANCES::Instances


           利用中のサーバ一を管理する【インスタンス】
1. EC2の紹介(7/13)
IMAGES::AMIs



           インスタンスをマシンイメージ
           として取得し管理する【AMI】
1. EC2の紹介(8/13)
ELASTIC BLOCK STORE::Volume




            ハードディスク【EBS】
1. EC2の紹介(9/13)
ELASTIC BLOCK STORE::Snapshots




          EBSのスナップショットを管理する
            【EBSスナップショット】
1. EC2の紹介(10/13)
NETWORK & SECURITY::Security Groups




              ファイアウォール
            【セキュリティグループ】
1. EC2の紹介(11/13)
NETWORK & SECURITY::Elastic IPs




               固定グローバルIP
                 【EIP】
1. EC2の紹介(12/13)
NETWORK & SECURITY::Load Balancers




               ロードバランサ
                【ELB】
1. EC2の紹介(13/13)
NETWORK & SECURITY::Key Pairs




             インスタンスに設定する
          SSH公開 を管理する【キーペア】
【今日の目標】
ELBにおける分散処理の動作を確認する
2. インスタンスの起動(1/17)




 【ベース環境】
                     【Goal】
2. インスタンスの起動(2/17)
キーペアの作成
2. インスタンスの起動(3/17)
キーペアの作成
2. インスタンスの起動(4/17)
キーペアの作成
2. インスタンスの起動(5/17)
キーペアの作成
2. インスタンスの起動(6/17)
インスタンスの起動
2. インスタンスの起動(7/17)
インスタンスの起動
2. インスタンスの起動(8/17)
インスタンスの起動
2. インスタンスの起動(9/17)
インスタンスの起動
2. インスタンスの起動(10/17)
インスタンスの起動
2. インスタンスの起動(11/17)
インスタンスの起動
2. インスタンスの起動(12/17)
インスタンスの起動
2. インスタンスの起動(13/17)
インスタンスの起動
2. インスタンスの起動(14/17)
インスタンスの起動




                  ssh,httpを選択
2. インスタンスの起動(15/17)
インスタンスの起動
2. インスタンスの起動(16/17)
インスタンスの起動
2. インスタンスの起動(17/17)
起動中
3. sshでインスタンスに接続(1/4)
Public DNSの確認(コピー)




                        Mac→cmd + c
                        Windows→ctrl + c
3. sshでインスタンスに接続(2/4)
  ターミナルの起動→ssh接続
 【Mac::Terminal】


                                                                          cmd + v

chmod 600 ~/Downloads/example.pem
ssh -i ~/Downloads/example.pem ec2-user@ec2-xxx-xxx-xxx-xxx.ap-northeast-1.compute.amazonaws.com



 【Windows::TeraTerm】
                               ctrl + v




                                              →
3. sshでインスタンスに接続(3/4)
今日のハンズオンに必要なパッケージのインストール




                 sudo yum install -y git httpd php php-amazon-sdk
3. sshでインスタンスに接続(4/4)
httpdの起動、自動起動の設定
【httpdの起動】sudo /etc/init.d/httpd start




   【自動起動の設定】sudo chkconfig httpd on



                                          【httpdの起動の確認】ps -ef | grep httpd




                                         【自動起動の設定確認】sudo chkconfig | grep httpd
4. PHP-SDKを使ってインスタンス情報を取得(1/5)
準備

     【ファイルの作成】sudo touch /var/www/html/index.php




【オーナーの変更】sudo chown ec2-user:ec2-user /var/www/html/index.php




【githubからファイルの取得】
cd /tmp/
git clone https://github.com/kachina/20121217-jawsug-yokohama.git
4. PHP-SDKを使ってインスタンス情報を取得(2/5)
ファイルの設置、アクセスキーの編集

【ファイルの設置】cp /tmp/20121217-jawsug-yokohama/sample_1.php /var/www/html/index.php




【ファイルの編集】vi /var/www/html/index.php
4. PHP-SDKを使ってインスタンス情報を取得(3/5)
ファイルの設置、アクセスキーの編集
4. PHP-SDKを使ってインスタンス情報を取得(4/5)
ファイルの設置、アクセスキーの編集




                         EC2::Public DNS
                         Mac→cmd + v
                         Windows→ctrl + v
4. PHP-SDKを使ってインスタンス情報を取得(5/5)
ベース環境が完成!




 【ベース環境】
                       【Goal】
5. ELBを使って分散構成を実現(1/41)




            【Goal】
5. ELBを使って分散構成を実現(2/41)
これまでの分散構成を構築する手順

• 【ベース環境】を構築


• 【ベース環境】のAMIを作成


• AMIから、アベイラビリティゾーンにインスタンスを起動


• ELBを作成


• ELB配下に、インスタンスを設置
5. ELBを使って分散構成を実現(2/41)
これまでの分散構成を構築する手順

• 【ベース環境】を構築


• 【ベース環境】のAMIを作成


• AMIから、アベイラビリティゾーンにインスタンスを起動


• ELBを作成


• ELB配下に、インスタンスを設置
5. ELBを使って分散構成を実現(2/41)
これまでの分散構成を構築する手順

• 【ベース環境】を構築


• 【ベース環境】のAMIを作成


• AMIから、アベイラビリティゾーンにインスタンスを起動


• ELBを作成


• ELB配下に、インスタンスを設置
5. ELBを使って分散構成を実現(2/41)
これまでの分散構成を構築する手順

• 【ベース環境】を構築


• 【ベース環境】のAMIを作成


• AMIから、アベイラビリティゾーンにインスタンスを起動


• ELBを作成


• ELB配下に、インスタンスを設置
5. ELBを使って分散構成を実現(2/41)
これまでの分散構成を構築する手順

• 【ベース環境】を構築


• 【ベース環境】のAMIを作成


• AMIから、アベイラビリティゾーンにインスタンスを起動


• ELBを作成
               AccessKey,SecretAccessKey
•   ELB配下に、インスタンスを設置
                     はどうする?
5. ELBを使って分散構成を実現(2/41)
これまでの分散構成を構築する手順

• 【ベース環境】を構築


• 【ベース環境】のAMIを作成
           新機能の『IAM Roles for EC2』で解決!
• AMIから、アベイラビリティゾーンにインスタンスを起動


• ELBを作成
               AccessKey,SecretAccessKey
•   ELB配下に、インスタンスを設置
                     はどうする?
5. ELBを使って分散構成を実現(3/41)
『IAM Roles for EC2』について

• インスタンス起動時にIAM Roleと紐付けることで、対象Roleを適用したインスタン
 スを起動することが可能


 • 全てのEC2インスタンスタイプで利用可能


 • 全てのAMIに対応


 • VPCに対応


 • 北米、南米、ヨーロッパ、アジア太平洋リージョンで対応
5. ELBを使って分散構成を実現(4/41)
IAM Roleの作成
5. ELBを使って分散構成を実現(5/41)
IAM Roleの作成
5. ELBを使って分散構成を実現(6/41)
IAM Roleの作成
5. ELBを使って分散構成を実現(7/41)
IAM Roleの作成
5. ELBを使って分散構成を実現(8/41)
IAM Roleの作成
5. ELBを使って分散構成を実現(9/41)
IAM Roleの作成
5. ELBを使って分散構成を実現(10/41)
IAM Roleの作成
5. ELBを使って分散構成を実現(11/41)
IAM Roleの作成
5. ELBを使って分散構成を実現(12/41)
IAM Roleの作成
5. ELBを使って分散構成を実現(13/41)
 AMIの作成

【ファイルの上書き】cp /tmp/20121217-jawsug-yokohama/sample_2.php /var/www/html/index.php
5. ELBを使って分散構成を実現(14/41)
AMIの作成
5. ELBを使って分散構成を実現(15/41)
AMIの作成
5. ELBを使って分散構成を実現(16/41)
AMIの作成
5. ELBを使って分散構成を実現(17/41)
AMIの作成
5. ELBを使って分散構成を実現(18/41)
AMIの作成
5. ELBを使って分散構成を実現(19/41)
AMIの作成
5. ELBを使って分散構成を実現(20/41)
AMIの作成
5. ELBを使って分散構成を実現(21/41)
AMIの作成
5. ELBを使って分散構成を実現(22/41)
インスタンスの起動(1a,1b,1c合計で3台起動)




                   ←問題なく進んだ人はこちら




                             ami-62c87363



               途中で詰まってしまった人はこちら↑
5. ELBを使って分散構成を実現(23/41)
インスタンスの起動(1a,1b,1c合計で3台起動)




                           対象リージョンを選択
5. ELBを使って分散構成を実現(24/41)
インスタンスの起動(1a,1b,1c合計で3台起動)
5. ELBを使って分散構成を実現(25/41)
インスタンスの起動(1a,1b,1c合計で3台起動)
5. ELBを使って分散構成を実現(26/41)
インスタンスの起動(1a,1b,1c合計で3台起動)




                      対象リージョン毎に名前を変更
                      1a = elb_example_1a
                      1b = elb_example_1b
                      1c = elb_example_1c
5. ELBを使って分散構成を実現(27/41)
インスタンスの起動(1a,1b,1c合計で3台起動)
5. ELBを使って分散構成を実現(28/41)
インスタンスの起動(1a,1b,1c合計で3台起動)
5. ELBを使って分散構成を実現(29/41)
インスタンスの起動(1a,1b,1c合計で3台起動)
5. ELBを使って分散構成を実現(30/41)
インスタンスの起動(1a,1b,1c合計で3台起動)




                      ここまでを1セットとして
                      AZ毎に1台インスタンス起動
5. ELBを使って分散構成を実現(31/41)
インスタンスの起動(1a,1b,1c合計で3台起動)
5. ELBを使って分散構成を実現(32/41)
ELBの構築
5. ELBを使って分散構成を実現(33/41)
ELBの構築
5. ELBを使って分散構成を実現(34/41)
ELBの構築
5. ELBを使って分散構成を実現(35/41)
ELBの構築
5. ELBを使って分散構成を実現(36/41)
ELBの構築
5. ELBを使って分散構成を実現(37/41)
ELBの構築
5. ELBを使って分散構成を実現(38/41)
ELBの構築
5. ELBを使って分散構成を実現(39/41)
ELBの構築




                           Mac→cmd+c
                           Windows→ctrl+c
5. ELBを使って分散構成を実現(40/41)
ELBの構築
5. ELBを使って分散構成を実現(41/41)
完成!




  【ベース環境】
                           【Goal】
動作確認
動作確認
動作確認
6. かたづけ(1/8)
ELBの削除
6. かたづけ(2/8)
EC2の削除
6. かたづけ(3/8)
AMIの削除
6. かたづけ(4/8)
Snapshotの削除
6. かたづけ(5/8)
Security Groupの削除
6. かたづけ(6/8)
Key Pairの削除
6. かたづけ(7/8)
IAM Roleの削除
6. かたづけ(8/8)
IAM Roleの削除
おしまい

20121217 jawsug-yokohama