AWS Elastic Beanstalk(初心者向け 超速マスター編)JAWSUG大阪

20,172 views
19,441 views

Published on

Published in: Technology
0 Comments
76 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
20,172
On SlideShare
0
From Embeds
0
Number of Embeds
1,246
Actions
Shares
0
Downloads
3
Comments
0
Likes
76
Embeds 0
No embeds

No notes for slide

AWS Elastic Beanstalk(初心者向け 超速マスター編)JAWSUG大阪

  1. 1. しみず @shimy_net2013 / 6 / 22AWS Elastic Beanstalk!初心者向け 超速マスター編
  2. 2. 自己紹介しみず @shimy_netWebアーキテクトアマゾン芸人無駄に技術を使って面白いことをする
  3. 3. 本を執筆しましたhttp://goo.gl/QtaK6
  4. 4. アプリケーションを動かすには実行環境が必要□ 2つの方法・EC2 や ELB を利用して実行環境を構築する →手間がかかる  自由度が高い・AWS Elastic Beanstalk を利用する →スケールできる環境を即構築  バージョン・環境の管理が簡単
  5. 5. AWS Elastic Beanstalk とは□ Webアプリの実行環境を構築・管理するサービスAuto scaling GroupInstanceInstanceAmazonRDSElastic LoadBalancingCloudWatchデプロイAWS Elastic BeanstalkS3war zipAmazonSNSInternet
  6. 6. AWS Elastic Beanstalk とは□ サポートする言語とスタック・Apache Tomcat for Java・Apache HTTP Server for PHP・Apache HTTP Server for Python・Nginx or Apache HTTP Server for Node.js・Passenger for Ruby・Microsoft IIS 7.5 for .NET
  7. 7. AWS Elastic Beanstalk とは□ アプリをアップロードするだけで自動的にデプロイ・容量のプロビジョニング・負荷分散・Auto-Scaling・アプリケーション状態モニタリング□ 実行環境の設定・サーバースペック・40項目以上の設定が可能□ 利用できる API の制約・処理時間の制約はない
  8. 8. AWS Elastic Beanstalk とは□ アプリのバージョン管理・WAR や ZIP の世代管理が可能・アプリのロールバック・ロールフォワードが容易□ 複数環境の構築・本番、テストなど目的によって構築できる□ 料金・Elastic Beanstalk 自体の追加料金は無し・EC2 インスタンスなど利用したリソースの実費のみ
  9. 9. AWS Elastic Beanstalk とは□ Application の論理構成URLApplicationEnvironmentEnvironmentConfigurationURLEnvironmentEnvironmentConfigurationVersionwar / zipwar / zipwar / zipwar / zip
  10. 10. 開発・管理ツール  AWS Management Console(Webブラウザ)  AWS Elastic Beanstalk Command Line Tools→http://aws.amazon.com/code/6752709412171743  AWS Toolkit for Eclipse(Java)→http://aws.amazon.com/eclipse・AWS SDK for Java・AWS Explorer・AWS Elastic Beanstalk
  11. 11. やること□ Management Console から利用する・アプリと環境を作成・デプロイ方法・バージョン管理・新しい環境を作成する□ 設定を変更する・Auto Scaling・ELB・Container・RDS・セーブ&ロード□ Eclipse から利用する(Java)・デモンストレーション
  12. 12. Management Console から利用① ここからスタート② Elastic Beanstalk を選択
  13. 13. アプリと環境を作成□ まずは、手順にそってデフォルト構成で構築URLApplicationEnvironmentEnvironmentConfigurationVersionwar / zip
  14. 14. アプリと環境を作成③ Create New Application をクリック⑤ コンテナ を選択⑥ サンプルアプリを選択④ アプリケーション名 を指定
  15. 15. アプリと環境を作成⑧ URL を指定⑦ 環境名 を指定
  16. 16. アプリと環境を作成⑨ インスタンスタイプ を指定EC2インスタンスにSSHアクセスする場合はキーペアを指定通知を受ける場合はメールアドレスを指定
  17. 17. アプリと環境を作成⑩ 完了
  18. 18. アプリと環境を作成数分でサンプルアプリが起動① URLにアクセス
  19. 19. 出来上がった論理構成は□ サンプルアプリが起動URLApplicationEnvironmentEnvironmentConfigurationVersionwar / zipサンプルアプリhttp://XXXXX.elasticbeanstalk.com/
  20. 20. 新しいアプリをデプロイ□ アプリを切り替えるURLApplicationEnvironmentEnvironmentConfigurationVersionwar / ziphttp://XXXXX.elasticbeanstalk.com/war / zip新しいアプリサンプルアプリ
  21. 21. マネコンからアプリをデプロイ□ 2つの方法 ・AWS Management Console から ・git からURLApplicationEnvironmentEnvironmentConfigurationVersionwar / zipwar / zipURLApplicationEnvironmentEnvironmentConfigurationVersionwar / zipwar / zip$ git aws.configAWS Access Key: AKIXXXXAWS Secret Key: XXXXXXXAWS Region: ap-northeast-1AWS Elastic BeanstalkEnvironment: XXXXXX
  22. 22. マネコンからアプリをデプロイ□別のアプリをデプロイするには① Deploy a Different Versionをクリック② ラベル をつける③ アプリ を選択④ 完了
  23. 23. Gitからアプリをデプロイ□ 2つの方法 ・AWS Management Console から ・git からURLApplicationEnvironmentEnvironmentConfigurationVersionwar / zipwar / zipURLApplicationEnvironmentEnvironmentConfigurationVersionwar / zipwar / zip$ git aws.configAWS Access Key: AKIXXXXAWS Secret Key: XXXXXXXAWS Region: ap-northeast-1AWS Elastic BeanstalkEnvironment: XXXXXX
  24. 24. Gitからアプリをデプロイ□ 必要なもの・AWS Elastic Beanstalk Command Line Tool  →http://aws.amazon.com/code/6752709412171743・Git 1.6.6 or later  →http://git-scm.com/・Ruby version 1.8.7 or later  →http://www.ruby-lang.org/en/・Python 2.7 or 3.0
  25. 25. Gitからアプリをデプロイ□ プロジェクトを作成□ ソースコードを開発$ mkdir helloworld$ cd helloworld$ git initvar http = require("http");http.createServer(function(request, response) {response.writeHead(200, {"Content-Type": "text/plain"});response.write("Hello World");response.end();}).listen(process.env.PORT || 8888);$ vi server.jsNode.jsの例
  26. 26. Gitからアプリをデプロイ□ 拡張コマンドのセットアップ□ AWSの設定$ git aws.configAWS Access Key: AKIXXXXXXXXXXXXXXXXAWS Secret Key: XXXXXXXXXXXXXXXXXXXAWS Region [default to us-east-1]: ap-northeast-1AWS Elastic Beanstalk Application: XXXXXXXXXXAWS Elastic Beanstalk Environment: XXXXXXXXXX$ ~/AWS-ElasticBeanstalk-CLI-2.4.0/AWSDevTools/Linux/AWSDevTools-RepositorySetup.sh→http://aws.amazon.com/code/6752709412171743Security Credentials
  27. 27. Gitからアプリをデプロイ□ ローカルリポジトリにコミット□ AWS Elastic Beanstalk へデプロイ$ git add server.js$ git commit –m “initial commit”$ git aws.push
  28. 28. Gitからアプリをデプロイ□ 新しいアプリがデプロイされる新しいアプリに切り替わる
  29. 29. アプリのバージョンを管理① Versions をクリック一覧が表示される
  30. 30. 新しい環境を追加□ Environmentを追加URLApplicationEnvironmentEnvironmentConfigurationVersionwar / zipwar / zipテスト環境
  31. 31. 新しい環境を追加□ Environmentを追加URLApplicationEnvironmentEnvironmentConfigurationVersionwar / zipwar / zipURLNew EnvironmentEnvironmentConfigurationテスト環境本番環境
  32. 32. 新しい環境を追加① Launch New Environment をクリック③ URL を指定② 環境名称 を指定④ アプリ を指定⑤ コンテナ を選択
  33. 33. 新しい環境を追加⑥ インスタンスタイプ を選択
  34. 34. 新しい環境を追加⑦ 完了
  35. 35. 新しい環境を追加本番環境の出来上がり
  36. 36. 環境のスワッピングDNS切り替えによって環境を移行できる例えば、テスト環境 → 本番環境① Swap EnvironmentURL をクリック
  37. 37. やること□ Management Console から利用する・アプリと環境を作成・デプロイ方法・バージョン管理・新しい環境を作成する□ 設定を変更する・Auto Scaling・ELB・Container・RDS・セーブ&ロード□ Eclipse から利用する(Java)・デモンストレーション
  38. 38. Auto Scaling を設定する□ デフォルトの構成だとAuto scaling GroupInstanceElastic LoadBalancingCloudWatchAWS Elastic BeanstalkS3AmazonSNS
  39. 39. Auto Scaling を設定する□ Multi-AZ を有効にするAuto scaling GroupInstanceInstanceElastic LoadBalancingCloudWatchAWS Elastic BeanstalkS3AmazonSNSAvailability ZoneAvailability Zone
  40. 40. Auto Scaling を設定する③ 2 に変更④ Any2 を選択① Edit/Load Configurationをクリック② Auto Scaling タブをクリック
  41. 41. Auto Scaling を設定する⑤ CPU Utillization を選択⑥ Percent を選択⑦ 70 を指定(適宜)⑧ 30 を指定(適宜)デフォルトはNetworkOutとなっており、実際に稼働させていない現状では絶対値でのスケールインアウトの判断ができない。そこで、CPUUtillization による相対値を利用する⑨ 完了
  42. 42. ELB を設定する□ デフォルトの構成だとAuto scaling GroupInstanceInstanceElastic LoadBalancingCloudWatchAWS Elastic BeanstalkS3AmazonSNSAvailability ZoneAvailability Zone
  43. 43. ELB を設定する□ Session Stickiness を有効にするAuto scaling GroupInstanceInstanceElastic LoadBalancingCloudWatchAWS Elastic BeanstalkS3AmazonSNSAvailability ZoneAvailability Zone
  44. 44. ELB を設定する① Load Balancerをクリック② Enable Session Stickinessをチェック③ Cookie Expiration Periodを指定 ④ 完了
  45. 45. ELB を設定する□ HTTPS を有効にするAuto scaling GroupInstanceInstanceElastic LoadBalancingCloudWatchAWS Elastic BeanstalkS3AmazonSNSAvailability ZoneAvailability Zone
  46. 46. ELB を設定する□ HTTPS を有効にする取得した証明書IDを指定することでELBにHTTPSのトラフィックをルーティングさせることができる$ iam-servercertupload -b www_abc_com.crt -c www_abc_com.ca-bundle -k www_abc_com.key -s www_abc_com$ iam-servercertlistbypatharn:aws:iam::999999999:server-certificate/www_abc_com
  47. 47. Container を設定する (Java)① Container をクリック② 環境変数を指定③ S3へログファイルをローテーション④ 完了インスタンスタイプ(メモリ量)を変えても、この設定が動的に変わるわけではない
  48. 48. RDS を設定する□ ここまで設定した構成はAuto scaling GroupInstanceInstanceElastic LoadBalancingCloudWatchAWS Elastic BeanstalkS3AmazonSNSAvailability ZoneAvailability Zone
  49. 49. RDS を設定する□ RDS ( Multi-AZ ) を設定するAuto scaling GroupInstanceInstanceElastic LoadBalancingCloudWatchAWS Elastic BeanstalkS3AmazonSNSAvailability ZoneAvailability ZoneRDS DBInstanceRDS DB InstanceStandby
  50. 50. RDS を設定する① Database をクリック② Create an RDS DB Instanceをチェック⑥ Username, Password を指定⑦ Multi-AZ をチェック③ DB Engine を選択(MySQL, Oracle, SQLServer)④ Instance Class を選択⑤ ストレージサイズ を指定⑧ 完了
  51. 51. 設定のセーブ① Save Configurationをクリック② Configuration Nameを指定⑧ 完了
  52. 52. 設定のロード② ロードしたい設定を選択① Edit/Load Configurationをクリック
  53. 53. やること□ Management Console から利用する・アプリと環境を作成・デプロイ方法・バージョン管理・新しい環境を作成する□ 設定を変更する・Auto Scaling・ELB・Container・RDS・セーブ&ロード□ Eclipse から利用する(Java)・デモンストレーション
  54. 54. デモンストレーション□ 利用ツール・Eclipse 4.2・Seasar2  http://eclipse.seasar.org/updates/3.3/・AWS Toolkit for Eclipse  http://aws.amazon.com/jp/eclipse/・Sequel Pro 1.0.2デモ動画をアップしましたhttp://youtu.be/ZR6zp1lVzCE
  55. 55. デモンストレーション□ 構成図Auto scaling GroupInstanceElastic LoadBalancingCloudWatchAWS Elastic BeanstalkS3AmazonSNSAvailability ZoneRDS DBInstanceInstancewarEclipseデプロイxxxx.elasticbeanstalk.com?id=11, YAMADAパラメータで渡したidに対応するレコードを表示するID NAME1  YAMADA2  SUZUKI3  MIZUNO
  56. 56. !    以上!ありがとうございました!

×