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

2,977 views

Published on

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

0 Comments
6 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
2,977
On SlideShare
0
From Embeds
0
Number of Embeds
270
Actions
Shares
0
Downloads
6
Comments
0
Likes
6
Embeds 0
No embeds

No notes for slide

配布用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日木曜日

×