Help us understand the problem. What is going on with this article?

Socket.IO を PM2 でロードバランシングしたい

More than 3 years have passed since last update.

Socket.IO を PM2 でロードバランシングしたい

目的

PM2を使って、Socket.IOのプロセスを多重化してロードバランシングする。

問題点

Socket.IOは接続情報をオンメモリに保存しているので、プロセスを多重化してロードバランシングを行うと、接続情報の無いプロセスに接続した場合には新規connectとなる。

解決策

Socket.IOの接続情報をredisに保存することにより、プロセス間はredis経由で接続情報を共有する。

ただし!

Socket.IO 0.9系の接続しか成功しない。1
Socket.IO 1.2系, 1.3系ではadapterを使うらしいが、公式2のとおりに書いても動かない。
Node.jsのバージョンが0.12以上でなければならないという記載を見かけたが、0.12を使っても動かない。

提案

単一のポートでプロセスの多重化を行うことにこだわないのであれば、プロセス毎にポートを分けて、プロセス間で接続情報を共有する方法が確実である。
http://qiita.com/n0bisuke/items/c248af316ca3f27daf92

Socket.IO 0.9系の書き方

app.js
var server = app.listen(3000, function() {

});

//  0.9系のsocket.io
var io = require('socket.io').listen(server);

//  0.9系のredis
var redis = require('socket.io/lib/stores/redis');
var redisConf = { host: '127.0.0.1', port: 6379 };

// storeタイプをredisに変更
io.set('store', new redis({
    redisPub: redisConf,
    redisSub: redisConf,
    redisClient: redisConf
}));

情報を求む!

Socket.IO 1.2, 1.3系でPM2を使ったSocket.IOのロードバランシングに成功している人はバージョンを明記の上、記事を投稿して欲しい!



  1. ブログやQiitaにアップされている記事のほぼ全てで、どのバージョンを使った記事なのか明記されていなかった。Nodo.js界隈はバージョンアップが激しく、バージョンが変わると動かないことが多いので、バージョンを明記して欲しい。 

  2. https://github.com/Automattic/socket.io-redis/blob/master/README.md 

TomoakiNagahara
# The onepiece-framework is Insanely great!! ## I was using the following framework for business. 1. symfony 2. CakePHP 3. CodeIgniter 4. ZendFramework 5. Yii Framework 6. Falcon 7. Ethna
https://onepiece-framework.com
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした