Se ha denunciado esta presentación.
Utilizamos tu perfil de LinkedIn y tus datos de actividad para personalizar los anuncios y mostrarte publicidad más relevante. Puedes cambiar tus preferencias de publicidad en cualquier momento.

よくわかるAWS OpsWorks: AWS OpsWorksの概要&アップデート紹介

2015/3/26に開催したよくわかるAWS OpsWorksセミナーで活用した資料です。

  • Inicia sesión para ver los comentarios

よくわかるAWS OpsWorks: AWS OpsWorksの概要&アップデート紹介

  1. 1. よくわかるAWS OpsWorks AWS OpsWorks概要&アップデート紹介 2015/03/26 アマゾン データ サービス ジャパン株式会社 ソリューションアーキテクト 舟崎 健治
  2. 2. 自己紹介 • 名前:舟崎 健治(ふなさき けんじ) • 所属:アマゾン データ サービスジャパン • 職種:ソリューションアーキテクト • 好きなAWSのサービス:AWS OpsWorks AWS初心者向けWebinarの活動に取り組んでい ます!
  3. 3. Introduction ~よく頂くご要望~ デプロイを 自動化したい。 運用負荷を 軽減したい。 開発者、または システム管理者
  4. 4. AWS OpsWorksとは  アプリケーションのライフサイクル管理サービス  デプロイを頻繁に、早く、セキュアに実行可能  スケーラブルで複雑なインフラストラクチャを管理、モデル化、自動化 することが可能  ビルトイン構成を使って簡単に開始可能  追加コストは不要
  5. 5. なぜAWS OpsWorksを使うと良いのでしょうか? 自動化できる領域が多くなる デプロイ自動化 運用タスクの自動化 運用負荷を軽減できる
  6. 6. EC2インスタンスの構築例 インスタンス起動 ソフトウェアインストール・構 成用のスクリプトを実行 アプリケーションのデプロイ EC2のAPIで自動化が可能 ユーザー側でインスタンス内部 で起動スクリプト等を使って、 自動化が可能
  7. 7. OpsWorksインスタンスの構築例 インスタンス起動 ソフトウェアインストール・構 成用のChefレシピを実行 アプリケーションのデプロイ用 のChefレシピを実行 OpsWorksのAPIで 自動化が可能
  8. 8. なぜ、OpsWorksでインスタンス内部のChefレシピをリ モートからOpsWorks APIで実行可能か? OpsWorksインスタンス内で、 OpsWorksエージェントがインストール・動作 しているため
  9. 9. OpsWorksの基本的な仕組み(1) EC2インスタンス上の OpsWorksエージェント OpsWorks talks with OpsWorks エージェントから OpsWorks エンドポイントに対し てPolling(アウトバウンド通信)
  10. 10. OpsWorksの基本的な仕組み(2) OpsWorksによって発行された一連の コマンドを取得 AgentがChef solo(Chef Zero)で レシピを実行 EC2インスタンス上の OpsWorks Agent Chef 11.10ではChef Client のlocal modeにて動作
  11. 11. OpsWorksの動作要件 • Amazon LinuxまたはUbuntu 12.04LTS,14.04LTS ベース – AMIをカスタマイズ可能 • Chefバージョン0.9, 11.4, 11.10に対応 • VPC対応 – デフォルトVPC, 自作VPC共に利用可能 • ELB、RDS、CloudFormation、CloudTrailに対応 • 起動したインスタンスからOpsWorksサービスエンドポ イントへアウトバウンド通信が可能であること
  12. 12. OpsWorks利用の流れ User AWS Management Console
  13. 13. Stack OpsWorks利用の流れ User AWS Management Console 構成情報 (JSON) ①スタックの作成
  14. 14. Stack OpsWorks利用の流れ User AWS Management Console Load Balancerレイヤー App Serverレイヤー Databaseレイヤー 構成情報 (JSON) ①スタックの作成 ②レイヤーの作成
  15. 15. Stack OpsWorks利用の流れ User AWS Management Console Load Balancerレイヤー App Serverレイヤー Databaseレイヤー レシピ レシピ レシピ 構成情報 (JSON) ①スタックの作成 ②レイヤーの作成 ③レシピの設定(Appの設定)
  16. 16. Stack OpsWorks利用の流れ User AWS Management Console Load Balancerレイヤー App Serverレイヤー Databaseレイヤー レシピ レシピ レシピ 構成情報 (JSON) ①スタックの作成 ②レイヤーの作成 ③レシピの設定(Appの設定) ④レイヤーに インスタンス追加・起動
  17. 17. Stack OpsWorks利用の流れ User AWS Management Console Load Balancerレイヤー App Serverレイヤー Databaseレイヤー レシピ レシピ レシピ DB Web /App LB ①スタックの作成 ②レイヤーの作成 ③レシピの設定(Appの設定) ④レイヤーに インスタンス追加・起動 ⑤ライフサイクルイベントによ り、レシピが自動実行される 構成情報 (JSON) Web /App
  18. 18. スタックとは • OpsWorksのトップエンティティ • 属する全インスタンスの構成を管理 – OSの種類、リージョン、インスタンスのIPアドレスなど • カスタムレシピを保存する任意のリポジトリを指定可能 • VPC内部に作成可能 • スタックをコピー可能 – リージョン間でも可能
  19. 19. レイヤーとは • インスタンス構築のための青写真(設計図) レシピを指定して、パッケージインストール などの必要な処理を定義 カスタムレシピも定義可能 追加のEBSボリュームの指 定。RAID指定も可能
  20. 20. ビルトインレイヤーの種類 • Load Balancer – HAProxy – ELB(各レイヤーに個別 にアタッチ可能) • App Server – Static Web Server – Rails App Server – PHP App Server – Node.js App Server • DB – MySQL – RDS • Other – Memcached – Ganglia – Custom • ビルトインレイヤー以外にもカスタムレイヤーを使って任意 の役割を持つレイヤーを作成可能(Jenkinsレイヤーなど)
  21. 21. インスタンスとは • アプリケーションを提供するためのEC2 インスタンスのこと • 起動時にインスタンスサイズやAZ(VPC 内の場合はサブネット)を指定 • インスタンス内部にOpsWorks Agentが 動作している
  22. 22. インスタンスのスケーリングタイプ • インスタンスを(自動)追加起動・終了する方法として 以下の3パターンがある – 24/7 インスタンス • 常時稼働 – 負荷ベースのインスタンス – 時間ベースのインスタンス
  23. 23. Appとは • アプリケーションサーバーにデプロイする アプリケーションのこと • 利用可能なアプリケーションの種類(標準 のアプリケーションサーバーレイヤーに相 当する) – Ruby on Rails / PHP / Node.js(JavaScript) / Static(HTML) / Java / AWS Flow(Ruby) / Other • サポートするリポジトリ – Git / Subversion / HTTP archive / S3 Archive / Other – GithubやBitBucketも使用可能
  24. 24. OpsWorksの 5 つのライフサイクルイベント Setup Configure Deploy Undeploy Shutdown
  25. 25. どのタイミングで ライフサイクルイベントが 実行されるか?
  26. 26. 最初のインスタンスを追加 App サーバー Setup Deploy Configure Execute Recipe Shutdown
  27. 27. 最初のインスタンスを起動すると、Setupが 自動実行されるAppサーバー の起動 App サーバー Setup Deploy Configure Execute Recipe Shutdown
  28. 28. Setupが実行された後にDeployが自動実行 されるAppサーバー の起動 App サーバー Setup Deploy Configure Execute Recipe Shutdown
  29. 29. インスタンスがonlineになるとConfigure が自動実行されるAppサーバー の起動 App サーバー Setup Deploy Configure Execute Recipe Shutdown
  30. 30. データベースインスタンスの追加 Appサーバー の起動 App サーバー DB サーバー Setup Deploy Configure Execute Recipe Shutdown
  31. 31. Setup, Deployが自動実行される Appサーバー の起動 App サーバー DB サーバー DBサーバー の起動 Setup Deploy Configure Execute Recipe Shutdown
  32. 32. DBサーバーがonlineになるとスタック内の全イン スタンスでConfigureが自動実行される Appサーバー の起動 App サーバー DB サーバー DBサーバー の起動 Setup Deploy Configure Execute Recipe Shutdown
  33. 33. さらにインスタンスを追加 Appサーバー の起動 App サーバー DB サーバー App サーバー DBサーバー の起動 Setup Deploy Configure Execute Recipe Shutdown
  34. 34. Setup、Deployが自動実行される Appサーバー の起動 App サーバー DB サーバー App サーバー DBサーバー の起動 Setup Deploy Configure Execute Recipe Shutdown Appサーバー の起動
  35. 35. インスタンスがonlineになるとスタック内の全イ ンスタンスでconfigureが自動実行される Appサーバー の起動 App サーバー DB サーバー App サーバー DBサーバー の起動 Setup Deploy Configure Execute Recipe Shutdown Appサーバー の起動
  36. 36. 手動でデプロイを実行 Appサーバー の起動 App サーバー DB サーバー App サーバー DBサーバー の起動 Setup Deploy Configure Execute Recipe Shutdown Appサーバー の起動 手動で デプロイを 実行
  37. 37. レシピを手動で実行 Appサーバー の起動 App サーバー DB サーバー App サーバー DBサーバー の起動 Setup Deploy Configure Execute Recipe Shutdown Appサーバー の起動 手動で デプロイを 実行 レシピ単体を 実行
  38. 38. インスタンスを停止 Appサーバー の起動 App サーバー DB サーバー App サーバー DBサーバー の起動 Setup Deploy Configure Execute Recipe Shutdown Appサーバー の起動 手動で デプロイを 実行 レシピ単体を 実行 Appサーバーの シャットダウン
  39. 39. インスタンスがonlineでなくなると、Configure が自動実行される Appサーバー の起動 App サーバー DB サーバー App サーバー DBサーバー の起動 Setup Deploy Configure Execute Recipe Shutdown Appサーバー の起動 手動で デプロイを 実行 レシピ単体を 実行 Appサーバーの シャットダウン
  40. 40. ライフサイクルイベントに登録するレシピの 例(レイヤー別) Setup Configure Deploy Undeploy Shutdown ロードバラン サーレイヤー ロードバラ ンサーをイ ンストール アプリケーショ ンサーバーのIP をアップデート コネクション をDrainする アプリケー ションサー バーレイヤー アプリケー ションサー バーをイン ストール DB接続先をアッ プデートしてリ スタート アプリケー ションコード をアップデー トしてリス タート アプリケー ションを削 除してリス タート ログを保存 データベース レイヤー データベー スをインス トール アプリケーショ ンサーバーのIP のACLをアップ デート スナップ ショットの作 成
  41. 41. AWS OpsWorks アップデート
  42. 42. AWS OpsWorksアップデート内容 • 2015/12/8 既存のEC2インスタンスとオンプレミスサーバの サポート • 2014/12/15 カスタムシャットダウンとELBのコネクションドレイン機能のサポート • 2015/3/2 Ruby 2.2サポート
  43. 43. AWSとオンプレミスのハイブリッド構成 • オンプレミス環境の仮想サーバ、あるい は物理サーバにOpsWorksエージェント をインストールして、管理可能 • サーバ1台あたり $0.02/hour Instance A Instance B Instance C Instance D オンプレミス環境 AWS Cloud オンプレミス環境での対応 オペレーティングシステム • Ubuntu 12.04 LTS • Ubuntu 14.04 LTS 2015/3/22現在
  44. 44. register an instanceを選択
  45. 45. インスタンスタイプを選択
  46. 46. AWS CLIのインストール
  47. 47. AWS CLIでインスタンス登録コマンドを実行
  48. 48. 登録されたインスタンスをレイヤーにアサインする
  49. 49. レイヤーへのアサインを確認 オンプレミスのサーバ の追加完了
  50. 50. まとめ
  51. 51. まとめ • AWS OpsWorksを使って、デプロイ・運用タスクを自 動化可能 • ライフサイクルイベントにより、適切なタイミングで Chefレシピを自動実行可能 • オンプレとAWSのハイブリッド構成が可能 新しいDevOpsソリューションをお試しください!
  52. 52. ご清聴頂きありがとうございました!
  53. 53. Appendix
  54. 54. OpsWorksで実行可能なコマンド  以下の2種類がある  スタックコマンド  スタック全体の構成を変更・管理するためのコマンド  AWSマネージメントコンソール、AWS SDK、AWS CLIでリモートから実 行可能  エージェントコマンド  デバッグやトラブルシューティングのために利用するコマンド  それ以外の用途の場合は、スタックコマンドの利用を推奨  インスタンス内部にログインして実行可能。  sudoもしくはroot権限が必要
  55. 55. OpsWorksインスタンスに対して リモートからChefレシピ実行コマンドを発行 実行するスタックコマンドを 選択 実行するCookbook/レシピ名 を選択 実行するインスタンスを選択
  56. 56. スタックコマンドを使ってリモートから任意のタイミング でインスタンスにコマンドを実行可能 スタックコマンド 内容 Install Dependencies 全てのパッケージをインストールする Update Dependencies 全てのパッケージをアップデートする Update Custom Cookbooks リポジトリにある更新されたCookbookをそれぞれのインスタンスに展開する Execute Recipes 指定したレシピを指定したインスタンス上で実行する Setup Setupのレシピを実行する(Setupを実行するとDeployもその後で実行される) Configure Configureのレシピを実行する。 AWS Management Console 管理者 Instances インスタンスからの Pollingのタイミング でExecute Recipes を実行 OpsWorksエージェ ントがChefレシピを 実行Execute Recipes 実行リクエスト
  57. 57. レシピを自動で実行させるには? • Execute Recipesのスタックコマンドをcron等のタスク スケジューラを使って自動実行 • OpsWorksのライフサイクルイベントにレシピを登録し て、適切なタイミングで自動実行
  58. 58. さらに、AWS OpsWorksでは 継続的な構成管理が可能です。
  59. 59. 構成情報の管理 (途中省略) "instance": { "id": "b29e44ed-6245-40a6-9575-eaa97a3a3d49", "hostname": "custom12", "instance_type": "t2.micro", "public_dns_name": "ec2-54-65-253-240.ap-northeast-1.co "private_dns_name": "ip-10-0-0-15.ap-northeast-1.comput "ip": "54.65.253.240", "private_ip": "10.0.0.15", "architecture": "x86_64", "layers": [ "custom1", "php-app" ], (以下省略) OpsWorks 構成情報をキャッシュ として保持 構成情報 (JSON) スタック内の インスタンス 構成情報をJSON形式で保持 ホスト名 IP レイヤー等
  60. 60. 構成情報(JSON)内のパラメータをChefレシピから 取得する例 "deploy": { “appname": { (途中省略) "database": { "host": “xxx.ap-northeast-1.rds.amazonaws.com", "database": "test", "port": 3306, "username": "awsuser", "password": "mypassword", "reconnect": true, "data_source_provider": "rds", "type": "mysql" }, (以下省略) dbname = node[:deploy][:appname][:database][:database] dbuser = node[:deploy][:appname][:database][:username] dbpass = node[:deploy][:appname][:database][:password] dbhost = node[:deploy][:appname][:database][:host] deploy JSONの例 Chefレシピから取得する例 取得した値をApp Serverインスタンスのローカル にDB接続用の設定ファイルとして保持しておく。 configureが実行されるたびに上記値を更新する
  61. 61. ElastiCacheとの連携例 スタック App Serverレイヤー ElastiCache Redis 構成情報 (JSON) { "deploy": { "elasticacheredisexample": { "redis": { "host": "mycluster.XXX.amazonaws.com", "port": "6379" } } } } ElastiCache Redisを事前 に作成 Chefレシピから上記パラメータを取得する 詳細 http://aws.amazon.com/blogs/aws/using-aws- elasticache-for-redis-with-aws-opsworks/ ElastiCache以外のデータストアを利用する場合も 上記方法と同様に連携が可能 • OpsWorksではElastiCacheは未サポートだが、スタック JSONに接続情報を追加することで連携可能
  62. 62. プライベートサブネット内にOpsWorksインスタンス を配置可能 VPC Public Subnet VPC Private Subnet Internet Gateway NAT App Code Repository • OpsWorksにより起動された インスタンスはOpsWorks サービスエンドポイントと接 続が必須 (Privateサブネット利用時は NAT必須) • プライベートサブネット内の コードリポジトリを利用可能 OpsWorks instances アウトバウンド 通信が必要

×