• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
クラウドオーケストレーション「OpenStack Heat」に迫る!
 

クラウドオーケストレーション「OpenStack Heat」に迫る!

on

  • 4,743 views

 

Statistics

Views

Total Views
4,743
Views on SlideShare
4,691
Embed Views
52

Actions

Likes
10
Downloads
94
Comments
0

3 Embeds 52

https://twitter.com 39
http://www.slideee.com 9
http://s.deeeki.com 4

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    クラウドオーケストレーション「OpenStack Heat」に迫る! クラウドオーケストレーション「OpenStack Heat」に迫る! Presentation Transcript

    • オープンクラウド・キャンパス クラウドオーケストレーション 「OpenStack Heat」に迫る! ver1.1 中井悦司 Twitter @enakai00
    • クラウドオーケストレーション「OpenStack Heat」に迫る! 自己紹介  中井悦司(なかいえつじ) – Twitter @enakai00  日々の仕事 – Senior Solution Architect and 「Linux独習書の新定番」 書きました! Cloud Evangelist at Red Hat K.K. 企業システムでオープンソースの活用を希望される お客様を全力でご支援させていただきます。  昔とった杵柄 – 素粒子論の研究(超弦理論とか) – 予備校講師(物理担当) – インフラエンジニア(Unix/Linux専門) 読者の声より ―― 「今はインターネット上に情報が溢れているけど、質の高い入門書が少なく   なっているのは不幸なことだと思う。そんな中、この本はすごくいい」 「平易な言葉でありながら、決して足りなくはない。慎重に選ばれています。  脳みそに染みこんで来ます」 Open Cloud Campus
    • クラウドオーケストレーション「OpenStack Heat」に迫る! 日経LinuxでOpenStackの連載を書いてます! Open Cloud Campus
    • OpenStackの自動化機能
    • クラウドオーケストレーション「OpenStack Heat」に迫る! デプロイ自動化の現状  クラウド/仮想化環境での自動化3大パターン 1. 仮想アプライアンス(ゴールデンイメージ)方式 • アプリケーション導入済みの環境をマシンイメージ化して利用。 • 巨大なテンプレートファイルの保守管理、インフラ間の可搬性が 課題。 2. JEOS(Just Enough Operating System)方式 仮想化環境でよく 利用される方法 • 最小限のOS環境をマシンイメージ化して利用。アプリケーション の導入・設定は、別途、ツールで自動化。 3. 自動インストール方式 クラウドで主流に なりつつある手法 • OSのインストールからアプリケーションの導入・設定まで、すべ ての作業を自動化して適用。 Open Cloud Campus
    • クラウドオーケストレーション「OpenStack Heat」に迫る! カスタマイズ・スクリプト(User Data)による自動化  マシンインスタンス起動時に「カスタマイズ・スクリプト(User Data)」を与え ると任意のテキストをメタデータとしてゲストOSに受け渡すことができます。  Cloud-Initは、カスタマイズ・スクリプトを解釈して、自動化を実現します。 – 下図はシェルスクリプトを渡して、「/etc/motd」を設定しています。 – この他にもCloud-Init独自の構文で、処理内容を指示することができます。 http://cloudinit.readthedocs.org/en/latest/ Open Cloud Campus
    • クラウドオーケストレーション「OpenStack Heat」に迫る! Github/Puppetと連携するカスタマイズ・スクリプトの例  Githubとは? – Gitは、プログラムソースコードの分散バージョン管理システム。インターネット上に コードリポジトリを作成して無料で利用できるサービス「Github」の登場により、利用 者が増加しました。 – 下図のカスタマイズ・スクリプトでは、GithubにアップロードしておいたPuppet間に不 フェスとをダウンロードして適用しています。 Githubからマニフェストを取得して適用するスクリプトの例 #!/bin/sh -x yum -y install puppet git GitRepository=https://github.com/enakai00/pgsql_puppet ConfigTag=f19 RepoName=${GitRepository##*/} RepoName=${RepoName%.git} mkdir -p /tmp/gittmp cd /tmp/gittmp git clone $GitRepository cd $RepoName git checkout $ConfigTag export FACTER_manifest_dir="/tmp/gittmp/$RepoName" puppet apply main.pp Open Cloud Campus
    • クラウドオーケストレーション「OpenStack Heat」に迫る! カスタマイズ・スクリプトとGithub/Puppetの連携  カスタマイズ・スクリプトからGithub/Puppetを連携させて、仮想マシンインス タンスを自動構築することができます。 YUM リポジトリ ソフトウェア パッケージ pgsql VM アプリ設定情報 (Puppetマニフェスト) GitHub https://github.com/enakai00/pgsql_puppet カスタマイズ・スクリプト Open Cloud Campus
    • クラウドオーケストレーション「OpenStack Heat」に迫る! カスタマイズ・スクリプトの限界 カスタマイズ・スクリプトだけでは 複数VMの連携処理ができない・・・ Open Cloud Campus
    • クラウドオーケストレーション「OpenStack Heat」に迫る! 複数VMによる連携処理の例 DBの構築完了をどうやって 検知する・・・  VM#1を起動して、PostgreSQLサーバーを構築する。  PostgreSQLの構成が完了して、DBに接続可能になるのを待つ。  VM#2を起動して、 Railsアプリケーションをデプロイする。  Railsアプリケーションから、PostgreSQLのDBに接続する。 DBサーバのプライベートIPを どうやって知る・・・ やりたいこと Webアプリケーションには フローティングIPで接続 フローティングIP DBサーバには プライベートIPで接続 プライベートIP プライベートIP VM#2 VM#1 Open Cloud Campus
    • そこでHeatなわけですよ!
    • クラウドオーケストレーション「OpenStack Heat」に迫る! Heatのアーキテクチャー スタックを 自動構築 Heatエンジン Heatテンプレート HeatのAPIから テンプレート投入 ・リソース[VM#1]  カスタマイズスクリプトでDB構築  カスタマイズスクリプトから構築完了をHeatエンジンに通知 ・リソース[WaitHandle]  VM#1からの構築完了通知を受けとる ・リソース[WaitCondition]  WaitHandleが通知を受けとるまで待機 ・リソース[VM#2]  カスタマイズスクリプトでRailsアプリ構築  VM#1のプライベートIPをカスタマイズスクリプトに埋め込む このかたまりを1つの 「スタック」として テンプレートに記述 Open Cloud Campus
    • クラウドオーケストレーション「OpenStack Heat」に迫る! デモンストレーション # heat stack-create -f dengonban.template -P "KeyName=mykey" dengonban +--------------------------------------+------------+--------------------+----------------------+ | id | stack_name | stack_status | creation_time | +--------------------------------------+------------+--------------------+----------------------+ | 642c1678-8966-461c-bbfe-c75c17b75e95 | dengonban | CREATE_IN_PROGRESS | 2014-02-06T07:01:16Z | +--------------------------------------+------------+--------------------+----------------------+ # heat stack-list +--------------------------------------+------------+-----------------+----------------------+ | id | stack_name | stack_status | creation_time | +--------------------------------------+------------+-----------------+----------------------+ | 642c1678-8966-461c-bbfe-c75c17b75e95 | dengonban | CREATE_COMPLETE | 2014-02-06T07:01:16Z | +--------------------------------------+------------+-----------------+----------------------+ # nova list +--------------------------------------+--------------------------------------------++------------------------------------------+ | ID | Name || Networks | +--------------------------------------+--------------------------------------------++------------------------------------------+ | c7b48220-ea3c-4053-b699-d3bed8cde657 | dengonban-PgSQLDatabaseServer-wptgqlxdmbt6 || private01=192.168.101.3 | | 5896b645-a398-4827-9d76-306f7ec9c418 | dengonban-WebServer-s3n5y4wshlq2 || private01=192.168.101.4, 192.168.199.105 | +--------------------------------------+--------------------------------------------++------------------------------------------+ Open Cloud Campus
    • クラウドオーケストレーション「OpenStack Heat」に迫る! テンプレートの概要 (1/2) { "AWSTemplateFormatVersion" : "2010-09-09", "Description" : "A Database instance running a local PostgreSQL server", ・・・ "Resources" : { "PgSQLDatabaseServer": { "Type": "AWS::EC2::Instance", "Properties": { "SubnetId" : "013cd465-7e75-4edc-ae83-6476fcf9178b", "ImageId" : { "Ref" : "ImageName" }, "InstanceType" : { "Ref" : "InstanceType" }, "KeyName" : { "Ref" : "KeyName" }, "UserData" : { "Fn::Base64" : { "Fn::Join" : ["", [ "#!/bin/bash -xn", ・・・ VM#1のカスタマイズスクリプト "# All is well so signal successn", "/opt/aws/bin/cfn-signal -e 0 -r "PostgreSQL Database setup complete" '", { "Ref" : "PgSQLWaitHandle" }, "'n" ]]}} カスタマイズスクリプトの中から、 } 「WaitHandle」への完了通知コマンドを実行 }, "PgSQLWaitHandle" : { "Type" : "AWS::CloudFormation::WaitConditionHandle" }, "PgSQLWaitCondition" : { "Type" : "AWS::CloudFormation::WaitCondition", "DependsOn" : "PgSQLDatabaseServer", "Properties" : { "Handle" : {"Ref" : "PgSQLWaitHandle"}, "Timeout" : "6000" } }, WaitHandleが通知を受けるまで 待機するダミーリソース Open Cloud Campus
    • クラウドオーケストレーション「OpenStack Heat」に迫る! テンプレートの概要 (1/2) "WebServer": { "Type": "AWS::EC2::Instance", "DependsOn": "PgSQLWaitCondition", WaitConditionが完了してから構築開始 "Properties": { "SubnetId" : "013cd465-7e75-4edc-ae83-6476fcf9178b", VM#1のプライベートIPに置換される "ImageId" : { "Ref" : "ImageName" }, "InstanceType" : { "Ref" : "InstanceType" }, "KeyName" : { "Ref" : "KeyName" }, VM#2のカスタマイズスクリプト "UserData" : { "Fn::Base64" : { "Fn::Join" : ["", [ "#!/bin/bash -xn", "export DB_IP=", { "Fn::GetAtt" : [ "PgSQLDatabaseServer", "PublicIp" ] }, "n", ・・・ "sed -i "s/ username:.*/ username: rails/" /root/rails/dengonban/config/database.ymln", "sed -i "s/ password:.*/ password: pas4railsn host: $DB_IP/" /root/rails/dengonban/config/database.ymln", ・・・ ]]}} } }, } } "WebServerIPAssoc" : { "Type" : "AWS::EC2::EIPAssociation", "Properties" : { "InstanceId" : { "Ref" : "WebServer" }, "EIP" : "192.168.199.105" } } Open Cloud Campus
    • クラウドオーケストレーション「OpenStack Heat」に迫る! Heatのアーキテクチャー(詳細版) テンプレート 仮想マシンインスタンス起動 Cinder REST APIを提供 Neutron Nova カスタマイズ スクリプト カスタマイズ スクリプト Heat API Heat Engine 仮想マシン インスタンス 仮想マシン インスタンス cfntools cfntools シグナル送信 Open Cloud Campus
    • クラウドオーケストレーション「OpenStack Heat」に迫る! Heatの今後の展開  Heatは、構築済みスタックを後から構成変更することもできます。 – テンプレートを修正して、Heatエンジンに再投入すると差分を検出して、追加の構築/ 削除処理を実施します。  これを利用するとオートスケールを実現することができます。 – VMの負荷に応じてテンプレートにVMを追加/削除して、HeatからVMを追加構築/削除 します。 – 開発コミュニティでは、Ceilometerと連携する方向での実装が検討されています。  Baremetal Deployment(Ironic)を利用して、Heatからコンピュートノードを 追加構築するような試みもあります。 – 参考:Triple O / Tuskar – https://wiki.openstack.org/wiki/TripleO/Tuskar Open Cloud Campus
    • クラウドオーケストレーション「OpenStack Heat」に迫る! (参考)Tuskarのアーキテクチャー コンピュートノード コントローラーノード 物理サーバー ・・・ オーバークラウド アンダークラウド REST APIを提供 Tuskar API Tuskar Manager コントローラーノードや コンピュートノードを構築 Heat Nova Ironic Open Cloud Campus
    • クラウドオーケストレーション「OpenStack Heat」に迫る! 参考資料  本日のデモ環境の構築手順 – RDO(Havana)でHeatを試す – http://d.hatena.ne.jp/enakai00/20140205/1391604332  HeatとCloud-Initの連携の詳細を紹介 – OpenStack HeatがCloud-Init / cfntoolsと連携する様子を覗きこむ – http://d.hatena.ne.jp/enakai00/20131226/1388021566  Heatテンプレートは、AWS CloudFormation互換なので、CloudFormationの知識も有用 – CloudFormation 詳細 -ほぼ週刊AWSマイスターシリーズ第6回– http://www.slideshare.net/kentamagawa/cloudformation-aws5  PuppetとGitHubの連携は、日経Linux連載記事(2013年9月号〜2014年2月号)で解説 Open Cloud Campus
    • オープンクラウド・キャンパス これからもクラウドと自動化の 未来を一緒に考えましょう! 中井悦司 Twitter @enakai00