7
7

More than 5 years have passed since last update.

Nginx+pm2(fork)をやってみる。(CentOS7.1+express4)

Last updated at Posted at 2015-09-06

先日の環境を元に、NodeJSアプリの負荷分散管理アプリケーションのpm2を入れて、Nginxから分散をしてみようと思います。

先日の環境に関しては以下のURLを。
Windows10にVagrant入れて、CentOS7.1入れた話
CentOS7.1にNginx+NodeJS(nvm)環境の導入(Vagrant環境下)

環境

一応現状の環境について書いておきます。

  • Vagrant 1.7.4
  • CentOS 7.1
  • Nginx 1.8.0
  • NodeJS 0.12.7
  • Express 4

pm2のインストール

$ npm install -g pm2

動かすための準備

この前のプロジェクトに移動して、process.jsonを作ります。

$ cd hoge
$ vi process.json
process.json
{
  "name": "hoge-app",
  "script": "bin/www",
  "watch": "../",
  "exec_mode": "fork",
  "instances": 2,
  "env": {
    "NODE_DEBUG" : "http,net"
  }
}

今回、express4の雛形で作ったので、process.jsonの指定が少し面倒でした。
インスタンス数は0(CPU数に依存)でも良いのですが、今回はプロセス数を指定しておきます。

また、このままpm2をstartさせるとportが同じになってしまうので修正します。

$ vi bin/www
var port = normalizePort(process.env.PORT || '3000');
↓
var port = normalizePort((process.env.PORT || 6001) + parseInt(process.env.NODE_APP_INSTANCE || 0));

起動

これで、あとは起動しましょう。

$ pm2 start process.json

ポートが使われているか確認する。

$ netstat -anp | grep "node"
(Not all processes could be identified, non-owned process info
 will not be shown, you would have to be root to see it all.)
tcp6       0      0 :::6001                 :::*                    LISTEN      21018/node /home/va
tcp6       0      0 :::6002                 :::*                    LISTEN      21019/node /home/va
...

問題なく起動していますね。良かった。

nginxの設定を修正

では、nginxのnode.confを触ります。node.confは前回の記事で作ってます。

$ sudo vi /etc/nginx/conf.d/node.conf
upstream io_nodes {
-  ip_hash; # クライアントは同じサーバーに接されることを保証
+  # ip_hash; # クライアントは同じサーバーに接されることを保証
  server 127.0.0.1:6001;
+  server 127.0.0.1:6002;
}

あえてip_hashは消しておきます。(確認をしたいので)

nginxをリロード。

sudo nginx -s reload

あとはブラウザでリロードなりして、pm2のlogを追います。

$ pm2 logs

追ってみるとわかりますが、hoge-app-0とhoge-app-1にアクセスしていることがわかりますね。
これでロードバランサの機能が動いていることが確認できました!

最後に

実際に稼働させる際は、ip_hashのコメントアウトは外しておきましょう。

ではではー。

7
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
7