Enviar pesquisa
Carregar
10分で作る Node.js Auto Scale 環境 with CloudFormation
•
19 gostaram
•
4,023 visualizações
Kazuyuki Honda
Seguir
東京Node学園 6時限目で発表した資料です。 http://connpass.com/event/611/
Leia menos
Leia mais
Tecnologia
Denunciar
Compartilhar
Denunciar
Compartilhar
1 de 30
Baixar agora
Baixar para ler offline
Recomendados
『How to build a High Performance PSGI/Plack Server』のその後と ISUCON3を受けての話題
『How to build a High Performance PSGI/Plack Server』のその後と ISUCON3を受けての話題
Masahiro Nagano
Tottoruby 20110903
Tottoruby 20110903
Takashi SAKAGUCHI
Webサーバ勉強会03
Webサーバ勉強会03
oranie Narut
Puppetのススメ
Puppetのススメ
Gosuke Miyashita
Development app-with-elixir
Development app-with-elixir
k1complete
Scala on Hadoop
Scala on Hadoop
Shinji Tanaka
Ansible 入門 #01 (初心者向け)
Ansible 入門 #01 (初心者向け)
Taro Hirose
Em synchrony について
Em synchrony について
Tomoya Kawanishi
Recomendados
『How to build a High Performance PSGI/Plack Server』のその後と ISUCON3を受けての話題
『How to build a High Performance PSGI/Plack Server』のその後と ISUCON3を受けての話題
Masahiro Nagano
Tottoruby 20110903
Tottoruby 20110903
Takashi SAKAGUCHI
Webサーバ勉強会03
Webサーバ勉強会03
oranie Narut
Puppetのススメ
Puppetのススメ
Gosuke Miyashita
Development app-with-elixir
Development app-with-elixir
k1complete
Scala on Hadoop
Scala on Hadoop
Shinji Tanaka
Ansible 入門 #01 (初心者向け)
Ansible 入門 #01 (初心者向け)
Taro Hirose
Em synchrony について
Em synchrony について
Tomoya Kawanishi
Zabbix API
Zabbix API
Shuhei Hayashibara
Ansible quickstart
Ansible quickstart
Hideki Saito
omoon.org の裏側 〜FuelPHP の task 活用例〜
omoon.org の裏側 〜FuelPHP の task 活用例〜
Sotaro Omura
Perl 非同期プログラミング
Perl 非同期プログラミング
lestrrat
15分でCakePHPを始める方法(Nseg 2013-11-09 )
15分でCakePHPを始める方法(Nseg 2013-11-09 )
hiro345
ChefとPuppetの比較
ChefとPuppetの比較
Sugawara Genki
CMSとPerlで遊ぼう
CMSとPerlで遊ぼう
Daiki Ichinose
Ansibleで始めるサーバ管理勉強会(2014年10月1日)
Ansibleで始めるサーバ管理勉強会(2014年10月1日)
CLARA ONLINE, Inc.
Using Windows Azure
Using Windows Azure
Shinji Tanaka
Docker+CoreOS+GCEで自動スケール分散レイトレ
Docker+CoreOS+GCEで自動スケール分散レイトレ
peryaudo
Norikraで作るPHPの例外検知システム YAPC::Asia Tokyo 2015 LT
Norikraで作るPHPの例外検知システム YAPC::Asia Tokyo 2015 LT
Masahiro Nagano
Ansible入門
Ansible入門
Daiki Hayakawa
Webサーバのチューニング
Webサーバのチューニング
Yu Komiya
Web技術勉強会23回目
Web技術勉強会23回目
龍一 田中
成長を加速する minne の技術基盤戦略
成長を加速する minne の技術基盤戦略
Hiroshi SHIBATA
Ansible 2.0を使って組む kubernetesクラスタ vol.1
Ansible 2.0を使って組む kubernetesクラスタ vol.1
Hidetoshi Hirokawa
今日から使い始めるChef
今日から使い始めるChef
Masahiro NAKAYAMA
AWSとGCPを使用したインフラ環境
AWSとGCPを使用したインフラ環境
Katsutoshi Nagaoka
Ansible入門...?
Ansible入門...?
shirou wakayama
Ansible handson
Ansible handson
Hideki Saito
Exifの画像方向情報
Exifの画像方向情報
Atsushi Matsuo
INTER-Mediator 5.0
INTER-Mediator 5.0
Atsushi Matsuo
Mais conteúdo relacionado
Mais procurados
Zabbix API
Zabbix API
Shuhei Hayashibara
Ansible quickstart
Ansible quickstart
Hideki Saito
omoon.org の裏側 〜FuelPHP の task 活用例〜
omoon.org の裏側 〜FuelPHP の task 活用例〜
Sotaro Omura
Perl 非同期プログラミング
Perl 非同期プログラミング
lestrrat
15分でCakePHPを始める方法(Nseg 2013-11-09 )
15分でCakePHPを始める方法(Nseg 2013-11-09 )
hiro345
ChefとPuppetの比較
ChefとPuppetの比較
Sugawara Genki
CMSとPerlで遊ぼう
CMSとPerlで遊ぼう
Daiki Ichinose
Ansibleで始めるサーバ管理勉強会(2014年10月1日)
Ansibleで始めるサーバ管理勉強会(2014年10月1日)
CLARA ONLINE, Inc.
Using Windows Azure
Using Windows Azure
Shinji Tanaka
Docker+CoreOS+GCEで自動スケール分散レイトレ
Docker+CoreOS+GCEで自動スケール分散レイトレ
peryaudo
Norikraで作るPHPの例外検知システム YAPC::Asia Tokyo 2015 LT
Norikraで作るPHPの例外検知システム YAPC::Asia Tokyo 2015 LT
Masahiro Nagano
Ansible入門
Ansible入門
Daiki Hayakawa
Webサーバのチューニング
Webサーバのチューニング
Yu Komiya
Web技術勉強会23回目
Web技術勉強会23回目
龍一 田中
成長を加速する minne の技術基盤戦略
成長を加速する minne の技術基盤戦略
Hiroshi SHIBATA
Ansible 2.0を使って組む kubernetesクラスタ vol.1
Ansible 2.0を使って組む kubernetesクラスタ vol.1
Hidetoshi Hirokawa
今日から使い始めるChef
今日から使い始めるChef
Masahiro NAKAYAMA
AWSとGCPを使用したインフラ環境
AWSとGCPを使用したインフラ環境
Katsutoshi Nagaoka
Ansible入門...?
Ansible入門...?
shirou wakayama
Ansible handson
Ansible handson
Hideki Saito
Mais procurados
(20)
Zabbix API
Zabbix API
Ansible quickstart
Ansible quickstart
omoon.org の裏側 〜FuelPHP の task 活用例〜
omoon.org の裏側 〜FuelPHP の task 活用例〜
Perl 非同期プログラミング
Perl 非同期プログラミング
15分でCakePHPを始める方法(Nseg 2013-11-09 )
15分でCakePHPを始める方法(Nseg 2013-11-09 )
ChefとPuppetの比較
ChefとPuppetの比較
CMSとPerlで遊ぼう
CMSとPerlで遊ぼう
Ansibleで始めるサーバ管理勉強会(2014年10月1日)
Ansibleで始めるサーバ管理勉強会(2014年10月1日)
Using Windows Azure
Using Windows Azure
Docker+CoreOS+GCEで自動スケール分散レイトレ
Docker+CoreOS+GCEで自動スケール分散レイトレ
Norikraで作るPHPの例外検知システム YAPC::Asia Tokyo 2015 LT
Norikraで作るPHPの例外検知システム YAPC::Asia Tokyo 2015 LT
Ansible入門
Ansible入門
Webサーバのチューニング
Webサーバのチューニング
Web技術勉強会23回目
Web技術勉強会23回目
成長を加速する minne の技術基盤戦略
成長を加速する minne の技術基盤戦略
Ansible 2.0を使って組む kubernetesクラスタ vol.1
Ansible 2.0を使って組む kubernetesクラスタ vol.1
今日から使い始めるChef
今日から使い始めるChef
AWSとGCPを使用したインフラ環境
AWSとGCPを使用したインフラ環境
Ansible入門...?
Ansible入門...?
Ansible handson
Ansible handson
Destaque
Exifの画像方向情報
Exifの画像方向情報
Atsushi Matsuo
INTER-Mediator 5.0
INTER-Mediator 5.0
Atsushi Matsuo
INTER-Mediator 5.1の新機能
INTER-Mediator 5.1の新機能
Atsushi Matsuo
INTER-Mediatorのポータルアクセスモード
INTER-Mediatorのポータルアクセスモード
Atsushi Matsuo
IMCakeの現状と今後
IMCakeの現状と今後
Atsushi Matsuo
INTER-MediatorによるWebアプリケーション開発入門
INTER-MediatorによるWebアプリケーション開発入門
Atsushi Matsuo
INTER-MediatorによるWebアプリケーション開発入門(2014年版)
INTER-MediatorによるWebアプリケーション開発入門(2014年版)
Atsushi Matsuo
FMPress Publisher 3
FMPress Publisher 3
Atsushi Matsuo
FileMaker Server 15の新機能と改善点
FileMaker Server 15の新機能と改善点
Atsushi Matsuo
Destaque
(9)
Exifの画像方向情報
Exifの画像方向情報
INTER-Mediator 5.0
INTER-Mediator 5.0
INTER-Mediator 5.1の新機能
INTER-Mediator 5.1の新機能
INTER-Mediatorのポータルアクセスモード
INTER-Mediatorのポータルアクセスモード
IMCakeの現状と今後
IMCakeの現状と今後
INTER-MediatorによるWebアプリケーション開発入門
INTER-MediatorによるWebアプリケーション開発入門
INTER-MediatorによるWebアプリケーション開発入門(2014年版)
INTER-MediatorによるWebアプリケーション開発入門(2014年版)
FMPress Publisher 3
FMPress Publisher 3
FileMaker Server 15の新機能と改善点
FileMaker Server 15の新機能と改善点
Semelhante a 10分で作る Node.js Auto Scale 環境 with CloudFormation
AWSとAnsibleで実践!プロビジョニング入門‐Lamp+Laravel-
AWSとAnsibleで実践!プロビジョニング入門‐Lamp+Laravel-
靖 小田島
densan2014-late01
densan2014-late01
Takenori Nakagawa
13016 n分で作るtype scriptでnodejs
13016 n分で作るtype scriptでnodejs
Takayoshi Tanaka
BCPに活かせ!一撃 CloudFormation
BCPに活かせ!一撃 CloudFormation
真吾 吉田
Nginx
Nginx
Yoshikazu Torimoto
OpenStack + Common Lisp
OpenStack + Common Lisp
irix_jp
Azure で Serverless 初心者向けタッチ&トライ
Azure で Serverless 初心者向けタッチ&トライ
Masanobu Sato
Nodejs
Nodejs
Masanobu Masuda
AWS Black Belt Tech シリーズ 2015 - AWS Elastic Beanstalk
AWS Black Belt Tech シリーズ 2015 - AWS Elastic Beanstalk
Amazon Web Services Japan
自作node.jsフレームワークとnginxを使ってラジオサイトを作ってみた
自作node.jsフレームワークとnginxを使ってラジオサイトを作ってみた
Yuki Takei
当社のawsへの取組
当社のawsへの取組
Mercari Inc.
SmartPhone development guide with CoffeeScript + Node + HTML5 Technology, for...
SmartPhone development guide with CoffeeScript + Node + HTML5 Technology, for...
Naoya Ito
Cinnamon - simple deploy tool
Cinnamon - simple deploy tool
Yuki Shibazaki
ネットワークエンジニアのための Puppet / Chef
ネットワークエンジニアのための Puppet / Chef
npsg
現場的!AWSとオンプレの違い(赤べこバージョン)
現場的!AWSとオンプレの違い(赤べこバージョン)
真吾 吉田
恋に落ちるデプロイツール
恋に落ちるデプロイツール
totty jp
OpenStack API
OpenStack API
Akira Yoshiyama
社内勉強会資料(Varnish Module)
社内勉強会資料(Varnish Module)
Iwana Chan
EWD 3トレーニング・コース #4 ewd-xpressのインストールと構成
EWD 3トレーニング・コース #4 ewd-xpressのインストールと構成
Kiyoshi Sawada
WDD2012_SC-004
WDD2012_SC-004
Kuninobu SaSaki
Semelhante a 10分で作る Node.js Auto Scale 環境 with CloudFormation
(20)
AWSとAnsibleで実践!プロビジョニング入門‐Lamp+Laravel-
AWSとAnsibleで実践!プロビジョニング入門‐Lamp+Laravel-
densan2014-late01
densan2014-late01
13016 n分で作るtype scriptでnodejs
13016 n分で作るtype scriptでnodejs
BCPに活かせ!一撃 CloudFormation
BCPに活かせ!一撃 CloudFormation
Nginx
Nginx
OpenStack + Common Lisp
OpenStack + Common Lisp
Azure で Serverless 初心者向けタッチ&トライ
Azure で Serverless 初心者向けタッチ&トライ
Nodejs
Nodejs
AWS Black Belt Tech シリーズ 2015 - AWS Elastic Beanstalk
AWS Black Belt Tech シリーズ 2015 - AWS Elastic Beanstalk
自作node.jsフレームワークとnginxを使ってラジオサイトを作ってみた
自作node.jsフレームワークとnginxを使ってラジオサイトを作ってみた
当社のawsへの取組
当社のawsへの取組
SmartPhone development guide with CoffeeScript + Node + HTML5 Technology, for...
SmartPhone development guide with CoffeeScript + Node + HTML5 Technology, for...
Cinnamon - simple deploy tool
Cinnamon - simple deploy tool
ネットワークエンジニアのための Puppet / Chef
ネットワークエンジニアのための Puppet / Chef
現場的!AWSとオンプレの違い(赤べこバージョン)
現場的!AWSとオンプレの違い(赤べこバージョン)
恋に落ちるデプロイツール
恋に落ちるデプロイツール
OpenStack API
OpenStack API
社内勉強会資料(Varnish Module)
社内勉強会資料(Varnish Module)
EWD 3トレーニング・コース #4 ewd-xpressのインストールと構成
EWD 3トレーニング・コース #4 ewd-xpressのインストールと構成
WDD2012_SC-004
WDD2012_SC-004
Mais de Kazuyuki Honda
5分でできる ebfly
5分でできる ebfly
Kazuyuki Honda
東の方からきました@鹿駆動勉強会
東の方からきました@鹿駆動勉強会
Kazuyuki Honda
Run Multi Version of Node.js on Heroku
Run Multi Version of Node.js on Heroku
Kazuyuki Honda
Noder が Titanium Mobile で 作ってみた
Noder が Titanium Mobile で 作ってみた
Kazuyuki Honda
初心者の初心者による初心者のための JavaScript ゲーム開発入門
初心者の初心者による初心者のための JavaScript ゲーム開発入門
Kazuyuki Honda
enchant.js source reading
enchant.js source reading
Kazuyuki Honda
Kinect de-theremin
Kinect de-theremin
Kazuyuki Honda
Mais de Kazuyuki Honda
(7)
5分でできる ebfly
5分でできる ebfly
東の方からきました@鹿駆動勉強会
東の方からきました@鹿駆動勉強会
Run Multi Version of Node.js on Heroku
Run Multi Version of Node.js on Heroku
Noder が Titanium Mobile で 作ってみた
Noder が Titanium Mobile で 作ってみた
初心者の初心者による初心者のための JavaScript ゲーム開発入門
初心者の初心者による初心者のための JavaScript ゲーム開発入門
enchant.js source reading
enchant.js source reading
Kinect de-theremin
Kinect de-theremin
Último
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
iPride Co., Ltd.
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
Ryo Sasaki
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Yuma Ohgami
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
Hiroki Ichikura
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Daniel
danielhu54
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
Toru Tamaki
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
Toru Tamaki
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
taisei2219
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
Toru Tamaki
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
sugiuralab
Último
(10)
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Daniel
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
10分で作る Node.js Auto Scale 環境 with CloudFormation
1.
Node.js Auto Scaling
in 10 minutes with AWS CloudFormation 2012/6/28 東京Node学園 6時限目 @hakobera
2.
Question AWSでNode.jsを何ノードま で動かしたことありますか?
3.
Node.jsで1億リクエスト/日 1億リクエスト/日 =>
417万リクエスト/時 => 7万リクエスト/分 => 1200リクエスト/秒
4.
AWS なら簡単
5.
AWS なら簡単 EC2
AMI (VMイメージ)の作成 Node.js 、依存パッケージのインストール セキュリティグループ ポート番号や接続制限 ELB プロトコルとポート番号 Auto Scale CloudWatch の設定 Auto Scale Group ポリシーの設定 アプリケーションのDeployとUpdate
6.
AWS なら簡単 EC2
AMI (VMイメージ)の作成 Node.js 、依存パッケージのインストール セキュリティグループ ポート番号や接続制限 ELB じゃなかった orz プロトコルとポート番号 Auto Scale CloudWatch の設定 Auto Scale Group ポリシーの設定 アプリケーションのDeployとUpdate
7.
そこで AWS CloudFormation
の出番 http://aws.amazon.com/jp/cloudformation/ AWS インフラ構成のテンプレート 設定の一部をパラメータ化できる JSON 形式 (Noder にはお馴染み) DynamoDBとCloudFront の先週からサポート開始 詳細はこちらを参照
8.
自分だけの PaaS が
簡単に作れる
9.
とりあえずやってみる Tempalte: https://cf-templates-for-nodejs.s3.amazonaws.com/cf-node-autoscale-tmpl.json App: https://github.com/hakobera/tng6_sample/zipball/master GitHub:
https://github.com/hakobera/tng6_sample
10.
Node.js と CloudFormation
の勘所 Node.js の AutoScale インストール Elastic Load アプリの Balancer と Deploy と Update WebSocket
11.
Node.js のインストール
12.
Node.jsのインストール バイナリパッケージを使おう
∵ micro インスタンスで Node.js のビルドが遅い Installing Node.js via package manager https://github.com/joyent/node/wiki/Installing-Node.js- via-package-manager $ sudo yum localinstall --nogpgcheck http://nodejs.tchol.org/repocfg/amzn1/nodejs-stable-release.noarch.rpm $ sudo yum install nodejs-compat-symlinks npm 残念ながら v0.8 はまだない
13.
Node.jsのインストール Cloud Init でパッケージ指定 "AppServerLaunchConfig":
{ "Type" : "AWS::AutoScaling::LaunchConfiguration", "Metadata": { "AWS::CloudFormation::Init": { "config": { "packages": { "rpm" : { "nodejs" : "http://nodejs.tchol.org/repocfg/amzn1/nodejs-stable-release.noarch.rpm" }, "yum": { "gcc-c++": [], "make": [], "git" : [], "nodejs-compat-symlinks": [], "npm": [] } }, "sources" : { "/var/opt/app" : { "Ref": "AppURL" } } }, ...
14.
Node.jsのインストール
Cloud Init の起動設定 "Properties": { (省略) "UserData": { "Fn::Base64": { "Fn::Base64": { "Fn::Join": ["", [ "#!/bin/bash -vn", "yum update -y aws-cfn-bootstrapn", "# Helper functionn", "function error_exitn", "{n", " /opt/aws/bin/cfn-signal -e 1 -r "$1" '", { "Ref": "WaitHandle" }, "'n", " exit 1n", "}n", "# Install packagesn", "/opt/aws/bin/cfn-init -s ", { "Ref": "AWS::StackName" }, " -r AppServerLaunchConfig ", " --access-key ", { "Ref": "HostKeys" }, " --secret-key ", { "Fn::GetAtt": ["HostKeys", "SecretAccessKey"] }, " --region ", { "Ref": "AWS::Region" }, " || error_exit 'Failed to run cfn-init'n",
15.
Auto Scale
16.
Cloud Watch
http://aws.amazon.com/jp/cloudwatch/ http://aws.amazon.com/jp/autoscaling/ Auto Scale の条件(拡張・縮小のトリガー)は、 Cloud Watch のアラームで実現している アプリの特性の応じて、チェックする対象を変更 CPUUtilization, DiskReadBytes, DiskReadOps, DiskWriteBytes, DiskWriteOps, NetworkIn, NetworkOut Node.js だと、CPUUtilization か NetworkOut のどちらかで大体OK
17.
設定例: CPUUtilization
"AppServerScaleUpPolicy" : { "Type" : "AWS::AutoScaling::ScalingPolicy", "Properties" : { "AdjustmentType" : "ChangeInCapacity", "AutoScalingGroupName" : { "Ref" : "AppServerGroup" }, "Cooldown" : "60", "ScalingAdjustment" : "2" } }, "CPUAlarmHigh": { "Type": "AWS::CloudWatch::Alarm", "Properties": { "AlarmDescription": "Scale-up if CPU > 90% for 10 minutes", "MetricName": "CPUUtilization", "Namespace": "AWS/EC2", "Statistic": "Average", "Period": "300", "EvaluationPeriods": "2", "Threshold": "90", "AlarmActions": [ { "Ref": "AppServerScaleUpPolicy" } ], "Dimensions": [ { "Name": "AutoScalingGroupName", "Value": { "Ref": "AppServerGroup" } } ],
18.
アプリの Deploy と
Update
19.
アプリのDeploy
"AppServerLaunchConfig": { "Type" : "AWS::AutoScaling::LaunchConfiguration", "Metadata": { "AWS::CloudFormation::Init": { "sources" : { "/var/opt/app" : { "Ref": "AppURL" } } }, ... 指定したフォルダにダウンロード、展開してくれる } }, "Properties": { "UserData": { zipball または tarball のURL "Fn::Base64": { "Fn::Base64": { "Fn::Join": ["", [ "# Start applicationn", "cd /var/opt/appn", "npm config set PORT ", { "Ref": "AppServerPort" }, "n", "npm install --productionn", "NODE_ENV=production npm start > app.log 2>&1 &n", npm start で起動できるアプリならなんでもOK
20.
環境変数の取得 /**
NPM package config * Returns a value related by given key. * This method search following priority. NPM config (global) * process.env * 1. NPM package config * 2. NPM config の順で環境変数を解決する * 3. process.env * * @param {String} key Environment key * @param {String} [defaultValue] Default value if key not found. * @return {String} */ module.exports = function (key, defaultValue) { var NPM_PACKAGE_PREFIX = 'npm_package_config_'; var NPM_PREFIX = 'npm_config_'; var value = process.env[NPM_PACKAGE_PREFIX + key]; if (!value) { value = process.env[NPM_PREFIX + key]; if (!value) { value = process.env[key]; } } value = (!value && defaultValue) ? defaultValue : value; return value; };
21.
環境変数の取得
開発時は package.json を参照 { var http = require('http'), "name": "harite", env = require(‘./env’); "version": "0.1.0", "scripts": { var server = http.createServer(function (req, res) { "start": "node app.js", res.writeHead(200, { 'Content-Type': 'text/plain' }); "test": "make test" res.end('hello'); }, }); "config": { server.listen(env(‘PORT’), function () { "PORT": 5100, console.log('Server is running on port %d', server.address().port); "REDIS_URL": "redis://localhost" }); } } "npm config set harite:HOST_NAME `curl http://169.254.169.254/latest/meta-data/public-hostname`", "n", "npm config set harite:PORT ", { "Ref": "HariteServerPort" }, "n", "npm config set harite:REDIS_URL ", { "Fn::Join" : [ "", [ "redis://", { "Fn::GetAtt" : [ "RedisServer", "PrivateIp" ]}, n", "npm install --productionn", AWS ではCloudInit で指定 "NODE_ENV=production npm start > harite.log 2>&1 &n", 参考資料: http://d.hatena.ne.jp/sugyan/20110909/1315575343 http://d.hatena.ne.jp/Jxck/20120410/1334071898
22.
Github の場合 Branch 単位で
zipball が取得できる https://github.com/hakobera/tng6_sample/zipball/master リポジトリ ブランチ名
23.
アプリのUpdate Update Stack =>
LoadBalancer から現行バージョン のサーバを徐々に切り離す AutoScale の最低サーバ数以下に なると、新規サーバが起動 新規サーバは新しいアプリが zipball または tarball のURLを更新 デプロイされた状態で起動する (今回のテンプレートはなっていな いが)タグにアプリケーションの バージョンを仕込んでおいて、API 経由で判定 => 停止などやれば自動 化できるかも
24.
WebSocket
25.
ELBと相性が悪い プロトコルでHTTPを選択すると、HTTP1.1 のUpdate リクエストが通らないので、WebSocket がつながらな い プロトコルをTCPを選択すれば接続はできるが、接続先 サーバを固定できない
(Socket.IO で苦労する) 60秒で必ずタイムアウトする(設定の変更はできない) 参考: Socket.IO or WebSocket を AmazonELB でバランスする検証 http://d.hatena.ne.jp/Jxck/20120228/1330444857
26.
AutoScaleと相性が悪い AutoScale は WebSocket
がつながっていても縮退し てしまう クライアント側での再接続処理が必要 ただし、普通に再接続すると、EC2インスタンス自体が 落ちているので、つながらない
27.
回避策 WebSocket の URL
を返す API に ELB 経由でアクセス (HTTPヘッダで返すのでも良い) EC2 の Public DNS名は curl http://169.254.169.254/latest/meta-data/public-hostname で取得可能 クライアントは各EC2インスタンスと直接接続する 再接続時には、また ELB 経由で新しい WebSocket サーバのURLを取得 これを実現するクライアントライブラリ(WebSocketラッパー)を作成する
28.
閑話休題
29.
Pusher クローン作ってます https://github.com/hakobera/tuppari
来週公開予定 https://github.com/hakobera/tuppari-servers CloudFormation のテンプレートも配布
30.
Any Question ?
Baixar agora