Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

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

3,059 views

Published on

2012年7月18日に行われた、第2回 プロセス自動再起動ツール編での発表資料です。

  • Be the first to comment

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

  1. 1. supervisordによるnode.jsの運用 監視ツール勉強会 第2回 プロセス自動再起動ツール編 2012年7月18日 @yut14812年7月19日木曜日
  2. 2. 自己紹介 @yut148 ←ワイユーティーでお願いします。          他特にこだわりはありません。   ユーザーですがフォロー歓迎です。 職業 ゲーム会社 (sap とか CPとかです。) or エンターテイメント会社に勤めています。 現在は仕事でコードを書いてません。 今の仕事はどちらかと言えば運用系 多分インフラエンジニアに属します。 前職含め、ゲーム会社にてサーバ管理の仕事が多い。12年7月19日木曜日
  3. 3. お断り 本スライドはプロダクション環境による動作 確認をしておりません。 いかなる保証をするものではありません。12年7月19日木曜日
  4. 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. 5. node.jsスクリプト起動方法のおさらい # node JavaScriptefilename 基本これだけ。 bugがあった場合、例外による停止や、 ループが発生しがち。12年7月19日木曜日
  6. 6. どの様なnode.jsのプロセス管理が、 一般的なのか? 例えばzabbixでnode.jsのプロセス管理? →一つのnode.jsプロセスを管理するには大げさ そもそも大規模な運用事例があっても管理方までは開示され ていないnode.js そこで、dotcloudの設定を参考にしてみた。 dotcloudでのnode.js管理手法は?12年7月19日木曜日
  7. 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. 8. supervisordの特徴 python製 操作方法は  CLI → supervisorctl  Web Server  XML-RPC Interface の3通りの管理方法 ※windowsでは動作しない。 ※python3では動作しない。   http://supervisord.org/introduction.html#overview より12年7月19日木曜日
  9. 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.conf12年7月19日木曜日
  10. 10. 主に使うコマンドは3種 /usr/bin/supervisord →daemonそのもの /usr/bin/supervisorctl → supervisord管理用コマンド+対話shell /usr/bin/echo_supervisord_conf →設定ファイルの雛形を出力 (リダイレクトして/etc/supervisord.confを 作成)12年7月19日木曜日
  11. 11. supervisordでnode.jsを管理する利点 node.jsでExceptionを起こしてもプロセスを再起動して くれる。 (開発の段階でも自動再起動すれば便利。) nodeのprocess起動後もfgでエラーを確認しやすい。 javascriptを更新する場合、nodeを都度killしなくて 済む    等々。12年7月19日木曜日
  12. 12. 検証 デモ12年7月19日木曜日
  13. 13. デモで確認した事   supervisordの設定ファイル確認 supervisord起動後のsupervisorctlコマンドの 利用方法 supervisordによるnode.jsの再起動12年7月19日木曜日
  14. 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. 15. よくnode.jsと併用されるforeverによる、 スクリプトのdeamon化(永続化)は管理の面 でつらい。 npm install forever -g foreverなりのメリットは有るかも知れないが、foreverで の他プロセス管理は容易では無い。 npmで全てのパッケージ管理を提供している訳ではない。12年7月19日木曜日
  16. 16. 最後に supervisordを使えば、 node.jsの自動起動設定が容易になる。 各node.jsファイル毎の起動スクリプトを書くよ り効率的  →プログラマーに/etc/rc.localを書かれても困   る。    起動時の[OK]とか書いてくれない(はず)  pidファイルとか多分書かない(はず) そこそこの性能で再起動してくれる12年7月19日木曜日
  17. 17. 余談 ・PaaSで行われている監視方法は一目に値  する。  12年7月19日木曜日
  18. 18. 御視聴ありがとう御座いました。12年7月19日木曜日

×