4

node.js アプリをデーモン化するために、upstart スクリプトを作成しました。

description "app_name"

start on startup
stop on shutdown

script
    export HOME="/home/ubuntu/nodeapp"

    exec sudo -u nodejs /usr/local/bin/node $HOME/app/server.js production 2>>/var/log/app_name.error.log >>/var/log/app_name.log
end script

私のmonitスクリプトは次のとおりです。

check host app_name with address 127.0.0.1
    start "/sbin/start app_name"
    stop "/sbin/stop app_name"
    if failed port 80 protocol HTTP
        request /ok
        with timeout 5 seconds
        then restart

正常に動作しますが、次のようにアップストリームのロード バランサーとして nginx を追加したいと考えています。

upstream cluster1 {
  least_conn;
  server 127.0.0.1:8000;
  server 127.0.0.1:8001;
}

server {
    listen 0.0.0.0:80;

    location / {
    proxy_pass http://cluster1;
    }
}

では、それをサポートするには、upstart スクリプトと monit スクリプトをどのように変更すればよいでしょうか?

4

1 に答える 1

1

3 つの monit チェックを作成する必要があります。1 つは nginx 用、もう 1 つは各 nodejs インスタンス用です。

check host nginx with address 127.0.0.1
    start "/sbin/start nginx"
    stop "/sbin/stop nginx"
    if failed port 80 protocol HTTP
        request /ok
        with timeout 5 seconds
        then restart

check host app_name_on_8000 with address 127.0.0.1
    start "/sbin/start app_name_on_8000"
    stop "/sbin/stop app_name_on_8000"
    if failed port 8000 protocol HTTP
        request /ok
        with timeout 5 seconds
        then restart

check host app_name_on_8001 with address 127.0.0.1
    start "/sbin/start app_name_on_8001"
    stop "/sbin/stop app_name_on_8001"
    if failed port 8000 protocol HTTP
        request /ok
        with timeout 5 seconds
        then restart

失敗した場合は nodejs インスタンスを再起動し、失敗した場合、または両方の nodejs インスタンスがダウンした場合は nginx を再起動します。

于 2014-04-30T06:53:56.477 に答える