SlideShare une entreprise Scribd logo
1  sur  18
Télécharger pour lire hors ligne
supervisordによるnode.jsの運用


                監視ツール勉強会 第2回
               プロセス自動再起動ツール編
                    2012年7月18日
                      @yut148

12年7月19日木曜日
自己紹介

              @yut148 ←ワイユーティーでお願いします。
                他特にこだわりはありません。
                   ユーザーですがフォロー歓迎です。

              職業 ゲーム会社 (sap とか CPとかです。)
                        or
               エンターテイメント会社に勤めています。

                現在は仕事でコードを書いてません。
                今の仕事はどちらかと言えば運用系
                多分インフラエンジニアに属します。
          前職含め、ゲーム会社にてサーバ管理の仕事が多い。
12年7月19日木曜日
お断り

              本スライドはプロダクション環境による動作
              確認をしておりません。

              いかなる保証をするものではありません。




12年7月19日木曜日
node.jsの特徴
       動作するコードでも例外で停止する。
       例: 5回目のアクセスで停止。
          var n = 0;

          var http = require('http');

          http.createServer(function (req, res) {

              if (++n > 4) { a }

              res.writeHead(200, {'Content-Type': 'text/plain'});

              res.end("result:" + n);

          }).listen(1337, "127.0.0.1");

          console.log('Server running at http://127.0.0.1:1337/');




                                                                http://gihyo.jp/dev/serial/01/nodejs/0002
                                                                     技術評論社様 gihyo.jpより引用


12年7月19日木曜日
node.jsスクリプト起動方法のおさらい



              # node JavaScriptefilename
              基本これだけ。

              bugがあった場合、例外による停止や、

              ループが発生しがち。




12年7月19日木曜日
どの様なnode.jsのプロセス管理が、
       一般的なのか?

              例えばzabbixでnode.jsのプロセス管理?
              →一つのnode.jsプロセスを管理するには大げさ

              そもそも大規模な運用事例があっても管理方までは開示され
              ていないnode.js

              そこで、dotcloudの設定を参考にしてみた。

              dotcloudでのnode.js管理手法は?




12年7月19日木曜日
supervisord
       http://supervisord.org

              supervisordとは?

              言わずとしれた、daemontools的なもんで
              す。(ざっくり)
              less /usr/lib/python2.6/site-packages/supervisor/supervisorctl.py

              # Copyright (c) 2001, 2002 Zope Corporation and Contributors.

              # All Rights Reserved.



              昨今、国内で聞かれないがZope Corporation成果物の様です。



12年7月19日木曜日
supervisordの特徴

       python製
       操作方法は
        CLI → supervisorctl
        Web Server
        XML-RPC Interface の3通りの管理方法
       ※windowsでは動作しない。
       ※python3では動作しない。
        
                 http://supervisord.org/introduction.html#overview
                                                              より



12年7月19日木曜日
インストール方法
       ネット越しならpythonらしく
                          easy_install supervisor
       でインストール可能。3.0a12(最新?)がインストール
       される。
       rpmの場合少し古い2.1系がepelにある。
       rpm -ivh ./python-meld3-0.6.7-1.el6.x86_64.rpm noarch/ ¥

       supervisor-2.1-8.el6.noarch.rpm



       rpm付属のスクリプトは便利
       /etc/logrotate.d/supervisor
       /etc/rc.d/init.d/supervisord
       /etc/supervisord.conf

12年7月19日木曜日
主に使うコマンドは3種

       /usr/bin/supervisord
        →daemonそのもの

       /usr/bin/supervisorctl
       → supervisord管理用コマンド+対話shell

       /usr/bin/echo_supervisord_conf
       →設定ファイルの雛形を出力
       (リダイレクトして/etc/supervisord.confを
       作成)




12年7月19日木曜日
supervisordでnode.jsを管理する利点
       node.jsでExceptionを起こしてもプロセスを再起動して
       くれる。
              (開発の段階でも自動再起動すれば便利。)
       nodeのprocess起動後もfgでエラーを確認しやすい。
       javascriptを更新する場合、nodeを都度killしなくて
       済む
                                     等々。




12年7月19日木曜日
検証
              デモ


12年7月19日木曜日
デモで確認した事
        
       supervisordの設定ファイル確認

       supervisord起動後のsupervisorctlコマンドの
       利用方法

       supervisordによるnode.jsの再起動




12年7月19日木曜日
supervisordでnode.jsを管理する欠点

        他のsubprocessを再起動させにくい
        例えばapacheを合わせて管理した場合
        4ステップ
       $ sudo supervisorctl update apache2
       $ sudo supervisorctl stop apache2
       $ sudo supervisorctl remove apache2
       $ sudo supervisorctl add apache2
                                
               複数のprocess管理には向かない。
              反面supervisord管理下のprocess管理は
                   一括起動、停止が容易


12年7月19日木曜日
よくnode.jsと併用されるforeverによる、
       スクリプトのdeamon化(永続化)は管理の面
       でつらい。

               npm install forever -g

       foreverなりのメリットは有るかも知れないが、foreverで
       の他プロセス管理は容易では無い。


       npmで全てのパッケージ管理を提供している訳ではない。




12年7月19日木曜日
最後に

       supervisordを使えば、
       node.jsの自動起動設定が容易になる。
       各node.jsファイル毎の起動スクリプトを書くよ
       り効率的
        →プログラマーに/etc/rc.localを書かれても困
         る。
        
        起動時の[OK]とか書いてくれない(はず)
        pidファイルとか多分書かない(はず)

              そこそこの性能で再起動してくれる
12年7月19日木曜日
余談

       ・PaaSで行われている監視方法は一目に値
        する。
        




12年7月19日木曜日
御視聴ありがとう御座いました。




12年7月19日木曜日

Contenu connexe

Tendances

俺とコーディング規約とツール
俺とコーディング規約とツール俺とコーディング規約とツール
俺とコーディング規約とツールMasayuki KaToH
 
PHP7を実際に動かしてみた@第96回PHP勉強会 #phpstudy
PHP7を実際に動かしてみた@第96回PHP勉強会 #phpstudyPHP7を実際に動かしてみた@第96回PHP勉強会 #phpstudy
PHP7を実際に動かしてみた@第96回PHP勉強会 #phpstudyHikari Fukasawa
 
ぼくのかんがえたさいきょうのうぇぶあぷりけーしょんふれーむわーく - YAPC Asia 2011
ぼくのかんがえたさいきょうのうぇぶあぷりけーしょんふれーむわーく - YAPC Asia 2011ぼくのかんがえたさいきょうのうぇぶあぷりけーしょんふれーむわーく - YAPC Asia 2011
ぼくのかんがえたさいきょうのうぇぶあぷりけーしょんふれーむわーく - YAPC Asia 2011Hiroh Satoh
 
映画にでてくるハッカーになりたい - YAPC Asia 2010
映画にでてくるハッカーになりたい - YAPC Asia 2010映画にでてくるハッカーになりたい - YAPC Asia 2010
映画にでてくるハッカーになりたい - YAPC Asia 2010Hiroh Satoh
 
株式会社インタースペース 清水様 登壇資料
株式会社インタースペース 清水様 登壇資料株式会社インタースペース 清水様 登壇資料
株式会社インタースペース 清水様 登壇資料leverages_event
 
Task Spooler を試した
Task Spooler を試したTask Spooler を試した
Task Spooler を試したy-uti
 
ありえるえりあ勉強会@五反田~テスト編~ Part3
ありえるえりあ勉強会@五反田~テスト編~ Part3ありえるえりあ勉強会@五反田~テスト編~ Part3
ありえるえりあ勉強会@五反田~テスト編~ Part3Tomoyuki Sato
 
Osc10do linux nextstep
Osc10do linux nextstepOsc10do linux nextstep
Osc10do linux nextstepsmokey monkey
 
Djangoフレームワークの紹介
Djangoフレームワークの紹介Djangoフレームワークの紹介
Djangoフレームワークの紹介Shinya Okano
 
20130412 titanium meetupvol7
20130412 titanium meetupvol720130412 titanium meetupvol7
20130412 titanium meetupvol7Hiroshi Oyamada
 
Introduction for Browser Side MVC
Introduction for Browser Side MVCIntroduction for Browser Side MVC
Introduction for Browser Side MVCRyunosuke SATO
 
Leap の初のメジャーアップデート! openSUSE Leap 15.0 リリース
Leap の初のメジャーアップデート! openSUSE Leap 15.0 リリースLeap の初のメジャーアップデート! openSUSE Leap 15.0 リリース
Leap の初のメジャーアップデート! openSUSE Leap 15.0 リリースFuminobu Takeyama
 
Do not use document.write
Do not use document.writeDo not use document.write
Do not use document.writeHaruki Okada
 
Hudson初心者向けデモ
Hudson初心者向けデモHudson初心者向けデモ
Hudson初心者向けデモcactusman
 
HTML5-pronama-study
HTML5-pronama-studyHTML5-pronama-study
HTML5-pronama-studyNaoya Inada
 
Dexcs2021 of install2
Dexcs2021 of install2Dexcs2021 of install2
Dexcs2021 of install2Etsuji Nomura
 
AsyncTask アンチパターン
AsyncTask アンチパターンAsyncTask アンチパターン
AsyncTask アンチパターンHiroshi Kurokawa
 

Tendances (20)

Jenkins と groovy
Jenkins と groovyJenkins と groovy
Jenkins と groovy
 
俺とコーディング規約とツール
俺とコーディング規約とツール俺とコーディング規約とツール
俺とコーディング規約とツール
 
Nodejs
NodejsNodejs
Nodejs
 
PHP7を実際に動かしてみた@第96回PHP勉強会 #phpstudy
PHP7を実際に動かしてみた@第96回PHP勉強会 #phpstudyPHP7を実際に動かしてみた@第96回PHP勉強会 #phpstudy
PHP7を実際に動かしてみた@第96回PHP勉強会 #phpstudy
 
ぼくのかんがえたさいきょうのうぇぶあぷりけーしょんふれーむわーく - YAPC Asia 2011
ぼくのかんがえたさいきょうのうぇぶあぷりけーしょんふれーむわーく - YAPC Asia 2011ぼくのかんがえたさいきょうのうぇぶあぷりけーしょんふれーむわーく - YAPC Asia 2011
ぼくのかんがえたさいきょうのうぇぶあぷりけーしょんふれーむわーく - YAPC Asia 2011
 
映画にでてくるハッカーになりたい - YAPC Asia 2010
映画にでてくるハッカーになりたい - YAPC Asia 2010映画にでてくるハッカーになりたい - YAPC Asia 2010
映画にでてくるハッカーになりたい - YAPC Asia 2010
 
株式会社インタースペース 清水様 登壇資料
株式会社インタースペース 清水様 登壇資料株式会社インタースペース 清水様 登壇資料
株式会社インタースペース 清水様 登壇資料
 
Task Spooler を試した
Task Spooler を試したTask Spooler を試した
Task Spooler を試した
 
ありえるえりあ勉強会@五反田~テスト編~ Part3
ありえるえりあ勉強会@五反田~テスト編~ Part3ありえるえりあ勉強会@五反田~テスト編~ Part3
ありえるえりあ勉強会@五反田~テスト編~ Part3
 
Osc10do linux nextstep
Osc10do linux nextstepOsc10do linux nextstep
Osc10do linux nextstep
 
Djangoフレームワークの紹介
Djangoフレームワークの紹介Djangoフレームワークの紹介
Djangoフレームワークの紹介
 
Outputz.vim
Outputz.vimOutputz.vim
Outputz.vim
 
20130412 titanium meetupvol7
20130412 titanium meetupvol720130412 titanium meetupvol7
20130412 titanium meetupvol7
 
Introduction for Browser Side MVC
Introduction for Browser Side MVCIntroduction for Browser Side MVC
Introduction for Browser Side MVC
 
Leap の初のメジャーアップデート! openSUSE Leap 15.0 リリース
Leap の初のメジャーアップデート! openSUSE Leap 15.0 リリースLeap の初のメジャーアップデート! openSUSE Leap 15.0 リリース
Leap の初のメジャーアップデート! openSUSE Leap 15.0 リリース
 
Do not use document.write
Do not use document.writeDo not use document.write
Do not use document.write
 
Hudson初心者向けデモ
Hudson初心者向けデモHudson初心者向けデモ
Hudson初心者向けデモ
 
HTML5-pronama-study
HTML5-pronama-studyHTML5-pronama-study
HTML5-pronama-study
 
Dexcs2021 of install2
Dexcs2021 of install2Dexcs2021 of install2
Dexcs2021 of install2
 
AsyncTask アンチパターン
AsyncTask アンチパターンAsyncTask アンチパターン
AsyncTask アンチパターン
 

Similaire à 配布用Supervisordによるnode.jsの運用

Djangoとweb2pyをapacheに組込む
Djangoとweb2pyをapacheに組込むDjangoとweb2pyをapacheに組込む
Djangoとweb2pyをapacheに組込む2bo 2bo
 
Serviceability Toolsの裏側
Serviceability Toolsの裏側Serviceability Toolsの裏側
Serviceability Toolsの裏側Yasumasa Suenaga
 
明日から使えるgradle
明日から使えるgradle明日から使えるgradle
明日から使えるgradlekimukou_26 Kimukou
 
今流行りのウェブアプリ開発環境Yeoman
今流行りのウェブアプリ開発環境Yeoman今流行りのウェブアプリ開発環境Yeoman
今流行りのウェブアプリ開発環境Yeomantomo_masakura
 
RでGPU使ってみた
RでGPU使ってみたRでGPU使ってみた
RでGPU使ってみたKazuya Wada
 
第1回『いまさら聞けない!システム運用・管理のコツ』 『クラウド管理・運用サービス「E.C.O」のご紹介』
第1回『いまさら聞けない!システム運用・管理のコツ』 『クラウド管理・運用サービス「E.C.O」のご紹介』第1回『いまさら聞けない!システム運用・管理のコツ』 『クラウド管理・運用サービス「E.C.O」のご紹介』
第1回『いまさら聞けない!システム運用・管理のコツ』 『クラウド管理・運用サービス「E.C.O」のご紹介』Naoya Hashimoto
 
俺のRails開発環境
俺のRails開発環境俺のRails開発環境
俺のRails開発環境joker1007
 
Nseg20120825
Nseg20120825Nseg20120825
Nseg20120825hiro345
 
Gws 20120521 gradle
Gws 20120521 gradleGws 20120521 gradle
Gws 20120521 gradleNobuhiro Sue
 
Google IO 2012 つまみ食い(1) ADT r20 の新機能
Google IO 2012 つまみ食い(1) ADT r20 の新機能Google IO 2012 つまみ食い(1) ADT r20 の新機能
Google IO 2012 つまみ食い(1) ADT r20 の新機能Takuya Fujimura
 
griffon plugin を 実際に作ってみよう #jggug
griffon plugin を 実際に作ってみよう #jgguggriffon plugin を 実際に作ってみよう #jggug
griffon plugin を 実際に作ってみよう #jggugkimukou_26 Kimukou
 
Gruntでjava script前作業の自動化!
Gruntでjava script前作業の自動化!Gruntでjava script前作業の自動化!
Gruntでjava script前作業の自動化!Tanaka Yuichi
 
Node予備校 vol.1 名古屋
Node予備校 vol.1 名古屋Node予備校 vol.1 名古屋
Node予備校 vol.1 名古屋Mori Shingo
 
そろそろRStudioの話
そろそろRStudioの話そろそろRStudioの話
そろそろRStudioの話Kazuya Wada
 
Aerospike v3 install
Aerospike v3 installAerospike v3 install
Aerospike v3 installMakoto Uehara
 
Appsody でnodejsのアプリを立ち上げよう!
Appsody でnodejsのアプリを立ち上げよう!Appsody でnodejsのアプリを立ち上げよう!
Appsody でnodejsのアプリを立ち上げよう!Daisuke Hiraoka
 

Similaire à 配布用Supervisordによるnode.jsの運用 (20)

Djangoとweb2pyをapacheに組込む
Djangoとweb2pyをapacheに組込むDjangoとweb2pyをapacheに組込む
Djangoとweb2pyをapacheに組込む
 
Serviceability Toolsの裏側
Serviceability Toolsの裏側Serviceability Toolsの裏側
Serviceability Toolsの裏側
 
明日から使えるgradle
明日から使えるgradle明日から使えるgradle
明日から使えるgradle
 
今流行りのウェブアプリ開発環境Yeoman
今流行りのウェブアプリ開発環境Yeoman今流行りのウェブアプリ開発環境Yeoman
今流行りのウェブアプリ開発環境Yeoman
 
RでGPU使ってみた
RでGPU使ってみたRでGPU使ってみた
RでGPU使ってみた
 
第1回『いまさら聞けない!システム運用・管理のコツ』 『クラウド管理・運用サービス「E.C.O」のご紹介』
第1回『いまさら聞けない!システム運用・管理のコツ』 『クラウド管理・運用サービス「E.C.O」のご紹介』第1回『いまさら聞けない!システム運用・管理のコツ』 『クラウド管理・運用サービス「E.C.O」のご紹介』
第1回『いまさら聞けない!システム運用・管理のコツ』 『クラウド管理・運用サービス「E.C.O」のご紹介』
 
俺のRails開発環境
俺のRails開発環境俺のRails開発環境
俺のRails開発環境
 
Bp study39 nodejs
Bp study39 nodejsBp study39 nodejs
Bp study39 nodejs
 
Nseg20120825
Nseg20120825Nseg20120825
Nseg20120825
 
Gws 20120521 gradle
Gws 20120521 gradleGws 20120521 gradle
Gws 20120521 gradle
 
Google IO 2012 つまみ食い(1) ADT r20 の新機能
Google IO 2012 つまみ食い(1) ADT r20 の新機能Google IO 2012 つまみ食い(1) ADT r20 の新機能
Google IO 2012 つまみ食い(1) ADT r20 の新機能
 
ドリコムJenkins勉強会資料
ドリコムJenkins勉強会資料ドリコムJenkins勉強会資料
ドリコムJenkins勉強会資料
 
griffon plugin を 実際に作ってみよう #jggug
griffon plugin を 実際に作ってみよう #jgguggriffon plugin を 実際に作ってみよう #jggug
griffon plugin を 実際に作ってみよう #jggug
 
Gruntでjava script前作業の自動化!
Gruntでjava script前作業の自動化!Gruntでjava script前作業の自動化!
Gruntでjava script前作業の自動化!
 
Node予備校 vol.1 名古屋
Node予備校 vol.1 名古屋Node予備校 vol.1 名古屋
Node予備校 vol.1 名古屋
 
そろそろRStudioの話
そろそろRStudioの話そろそろRStudioの話
そろそろRStudioの話
 
Aerospike v3 install
Aerospike v3 installAerospike v3 install
Aerospike v3 install
 
Djangoのススメ
DjangoのススメDjangoのススメ
Djangoのススメ
 
Appsody でnodejsのアプリを立ち上げよう!
Appsody でnodejsのアプリを立ち上げよう!Appsody でnodejsのアプリを立ち上げよう!
Appsody でnodejsのアプリを立ち上げよう!
 
Grunt入門
Grunt入門Grunt入門
Grunt入門
 

Plus de yut148atgmaildotcom

Confluence4.3でgoogleカレンダーを表示する
Confluence4.3でgoogleカレンダーを表示するConfluence4.3でgoogleカレンダーを表示する
Confluence4.3でgoogleカレンダーを表示するyut148atgmaildotcom
 
配布用稼動中の4 uサーバを36uまで一人で上げた技術
配布用稼動中の4 uサーバを36uまで一人で上げた技術配布用稼動中の4 uサーバを36uまで一人で上げた技術
配布用稼動中の4 uサーバを36uまで一人で上げた技術yut148atgmaildotcom
 
配布用Cacti running with cherokee
配布用Cacti running with cherokee配布用Cacti running with cherokee
配布用Cacti running with cherokeeyut148atgmaildotcom
 
配布用Beginnerならきっと役立つmaster slave環境
配布用Beginnerならきっと役立つmaster slave環境配布用Beginnerならきっと役立つmaster slave環境
配布用Beginnerならきっと役立つmaster slave環境yut148atgmaildotcom
 
配布用Dotcloudによるすぐ始めるtwitterwebアプリ開発#twtr hack
配布用Dotcloudによるすぐ始めるtwitterwebアプリ開発#twtr hack配布用Dotcloudによるすぐ始めるtwitterwebアプリ開発#twtr hack
配布用Dotcloudによるすぐ始めるtwitterwebアプリ開発#twtr hackyut148atgmaildotcom
 
Webサーバ勉強会#5mod sedについて
Webサーバ勉強会#5mod sedについてWebサーバ勉強会#5mod sedについて
Webサーバ勉強会#5mod sedについてyut148atgmaildotcom
 

Plus de yut148atgmaildotcom (6)

Confluence4.3でgoogleカレンダーを表示する
Confluence4.3でgoogleカレンダーを表示するConfluence4.3でgoogleカレンダーを表示する
Confluence4.3でgoogleカレンダーを表示する
 
配布用稼動中の4 uサーバを36uまで一人で上げた技術
配布用稼動中の4 uサーバを36uまで一人で上げた技術配布用稼動中の4 uサーバを36uまで一人で上げた技術
配布用稼動中の4 uサーバを36uまで一人で上げた技術
 
配布用Cacti running with cherokee
配布用Cacti running with cherokee配布用Cacti running with cherokee
配布用Cacti running with cherokee
 
配布用Beginnerならきっと役立つmaster slave環境
配布用Beginnerならきっと役立つmaster slave環境配布用Beginnerならきっと役立つmaster slave環境
配布用Beginnerならきっと役立つmaster slave環境
 
配布用Dotcloudによるすぐ始めるtwitterwebアプリ開発#twtr hack
配布用Dotcloudによるすぐ始めるtwitterwebアプリ開発#twtr hack配布用Dotcloudによるすぐ始めるtwitterwebアプリ開発#twtr hack
配布用Dotcloudによるすぐ始めるtwitterwebアプリ開発#twtr hack
 
Webサーバ勉強会#5mod sedについて
Webサーバ勉強会#5mod sedについてWebサーバ勉強会#5mod sedについて
Webサーバ勉強会#5mod sedについて
 

配布用Supervisordによるnode.jsの運用

  • 1. supervisordによるnode.jsの運用 監視ツール勉強会 第2回 プロセス自動再起動ツール編 2012年7月18日 @yut148 12年7月19日木曜日
  • 2. 自己紹介 @yut148 ←ワイユーティーでお願いします。          他特にこだわりはありません。   ユーザーですがフォロー歓迎です。 職業 ゲーム会社 (sap とか CPとかです。) or エンターテイメント会社に勤めています。 現在は仕事でコードを書いてません。 今の仕事はどちらかと言えば運用系 多分インフラエンジニアに属します。 前職含め、ゲーム会社にてサーバ管理の仕事が多い。 12年7月19日木曜日
  • 3. お断り 本スライドはプロダクション環境による動作 確認をしておりません。 いかなる保証をするものではありません。 12年7月19日木曜日
  • 4. node.jsの特徴 動作するコードでも例外で停止する。 例: 5回目のアクセスで停止。 var n = 0; var http = require('http'); http.createServer(function (req, res) { if (++n > 4) { a } res.writeHead(200, {'Content-Type': 'text/plain'}); res.end("result:" + n); }).listen(1337, "127.0.0.1"); console.log('Server running at http://127.0.0.1:1337/'); http://gihyo.jp/dev/serial/01/nodejs/0002 技術評論社様 gihyo.jpより引用 12年7月19日木曜日
  • 5. node.jsスクリプト起動方法のおさらい # node JavaScriptefilename 基本これだけ。 bugがあった場合、例外による停止や、 ループが発生しがち。 12年7月19日木曜日
  • 6. どの様なnode.jsのプロセス管理が、 一般的なのか? 例えばzabbixでnode.jsのプロセス管理? →一つのnode.jsプロセスを管理するには大げさ そもそも大規模な運用事例があっても管理方までは開示され ていないnode.js そこで、dotcloudの設定を参考にしてみた。 dotcloudでのnode.js管理手法は? 12年7月19日木曜日
  • 7. supervisord http://supervisord.org supervisordとは? 言わずとしれた、daemontools的なもんで す。(ざっくり) less /usr/lib/python2.6/site-packages/supervisor/supervisorctl.py # Copyright (c) 2001, 2002 Zope Corporation and Contributors. # All Rights Reserved. 昨今、国内で聞かれないがZope Corporation成果物の様です。 12年7月19日木曜日
  • 8. supervisordの特徴 python製 操作方法は  CLI → supervisorctl  Web Server  XML-RPC Interface の3通りの管理方法 ※windowsでは動作しない。 ※python3では動作しない。   http://supervisord.org/introduction.html#overview より 12年7月19日木曜日
  • 9. インストール方法 ネット越しならpythonらしく easy_install supervisor でインストール可能。3.0a12(最新?)がインストール される。 rpmの場合少し古い2.1系がepelにある。 rpm -ivh ./python-meld3-0.6.7-1.el6.x86_64.rpm noarch/ ¥ supervisor-2.1-8.el6.noarch.rpm rpm付属のスクリプトは便利 /etc/logrotate.d/supervisor /etc/rc.d/init.d/supervisord /etc/supervisord.conf 12年7月19日木曜日
  • 10. 主に使うコマンドは3種 /usr/bin/supervisord →daemonそのもの /usr/bin/supervisorctl → supervisord管理用コマンド+対話shell /usr/bin/echo_supervisord_conf →設定ファイルの雛形を出力 (リダイレクトして/etc/supervisord.confを 作成) 12年7月19日木曜日
  • 11. supervisordでnode.jsを管理する利点 node.jsでExceptionを起こしてもプロセスを再起動して くれる。 (開発の段階でも自動再起動すれば便利。) nodeのprocess起動後もfgでエラーを確認しやすい。 javascriptを更新する場合、nodeを都度killしなくて 済む    等々。 12年7月19日木曜日
  • 12. 検証 デモ 12年7月19日木曜日
  • 13. デモで確認した事   supervisordの設定ファイル確認 supervisord起動後のsupervisorctlコマンドの 利用方法 supervisordによるnode.jsの再起動 12年7月19日木曜日
  • 14. supervisordでnode.jsを管理する欠点  他のsubprocessを再起動させにくい  例えばapacheを合わせて管理した場合  4ステップ $ sudo supervisorctl update apache2 $ sudo supervisorctl stop apache2 $ sudo supervisorctl remove apache2 $ sudo supervisorctl add apache2   複数のprocess管理には向かない。 反面supervisord管理下のprocess管理は 一括起動、停止が容易 12年7月19日木曜日
  • 15. よくnode.jsと併用されるforeverによる、 スクリプトのdeamon化(永続化)は管理の面 でつらい。 npm install forever -g foreverなりのメリットは有るかも知れないが、foreverで の他プロセス管理は容易では無い。 npmで全てのパッケージ管理を提供している訳ではない。 12年7月19日木曜日
  • 16. 最後に supervisordを使えば、 node.jsの自動起動設定が容易になる。 各node.jsファイル毎の起動スクリプトを書くよ り効率的  →プログラマーに/etc/rc.localを書かれても困   る。    起動時の[OK]とか書いてくれない(はず)  pidファイルとか多分書かない(はず) そこそこの性能で再起動してくれる 12年7月19日木曜日
  • 17. 余談 ・PaaSで行われている監視方法は一目に値  する。   12年7月19日木曜日