Weitere ähnliche Inhalte
Ähnlich wie 配布用Supervisordによるnode.jsの運用 (20)
Mehr von yut148atgmaildotcom (6)
配布用Supervisordによるnode.jsの運用
- 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日木曜日
- 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日木曜日
- 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日木曜日