pm2 管理nodejs集群,同时使用redis共享session

pm2 管理nodejs集群,同时使用redis共享session

月光魔力鸭

2019-09-16 11:19 阅读 1709 喜欢 0 redis express pm2 集群

通过pm2来实现nodejs应用的集群,不过我之前没做session共享,导致.. 登录不上啊 啊啊啊,无奈,又重新对redis进行了集成。

以下记录下自己集成redis 以及实现pm2 的集群管理的过程。

自己项目的整体结构是这样组成的: nodejs + express + mysql + pm2 (乱写的)

背景

最开始的时候是使用的express-session ,然后就没了。

app.use(session({
    resave: false, //添加 resave 选项
    saveUninitialized: true, //添加 saveUninitialized 选项
    secret: '***', // 建议使用 128 个字符的随机字符串
    cookie: { maxAge: 24 * 60 * 60 * 1000,secure : true }
}));

不过因为现在项目启动要检查文件,导致变慢,更新的时候会有那么十几秒失联.. 很郁闷,准备上pm2cluster ,却发现session丢失,登录不上系统了。

redis 改造

redis 安装

安装redis 直接到官网下载即可。https://redis.io/download 我是直接按照官网的步骤来的,也没有做其他的配置啥的,可以参考:https://www.cnblogs.com/xyinjie/p/9444280.html

安装步骤,点击查看

项目改造
npm install redis connect-redis --save 
var session = require('express-session');
var redis = require('redis');
var redisClient = redis.createClient();
var RedisStore = require('connect-redis')(session);

app.use(session({
    resave: false, //添加 resave 选项
    saveUninitialized: true, //添加 saveUninitialized 选项
    secret: '0b8d3104f46ce1ce884d3c494fac1b64', // 建议使用 128 个字符的随机字符串
    // cookie: { maxAge: 24 * 60 * 60 * 1000,secure : true },
    store : new RedisStore({client : redisClient}) // redis 存储session
}));

我中间出了一个问题,session 每次都是最新的,后来发现把cookie 注释掉,就好了.. 嘿

启动项目

pm2 start ./bin/www --name xxx -i max

启动后再更新就可以一个一个来更新了..(如果项目启动快其实直接全部更新也没啥问题我是小站没人看。)

转载请注明出处: https://chrunlee.cn/article/nodejs-pm2-redis-express.html


感谢支持!

赞赏支持
提交评论
评论信息 (请文明评论)
暂无评论,快来快来写想法...
推荐
通过imap 来接收邮箱新邮件,类似客户端系列,不过比较简单的,目前只有新邮件,后续也可以通过这个来做一个自己的邮件客户端。
做了一个阿里云开发者社区自动签到,想着能积攒一些换点啥东西,放在服务器上出现了各种错误。
尝试下使用nodejs下开源图像识别库来识别图像状态。
当我们做爬虫或其他的一些应用的时候,如果需要一些短信验证,但是又没有那么多手机号,又不能放人在那里一直输入的时候?怎么办?
最近有客户提出了这么一个需求:微信dat文件在解码后的图片无法按照时间进行排序。 是的,解码后的文件的时间都是解码的时间,由于软件比较多,当时没做自动更新,所以在这里做一个小工具,可以将对应的解码后的图片的时间修改为微信dat文件对应的时间
有一个需求,需要公司的LOGO信息,但是没有,只有公司的名字,想着先生成个默认的(本来是可以通过前端判断然后合成的..但是不想改小程序了),于是开始准备处理。
今天写文章,突然发现自己常用的素材站换成了webp格式的图片.. 可惜本站还没准备加这个支持,所以准备加个webp转jpg的小功能,继续使用啦。
在我们做运维或者小工具的时候,总会有些需要提醒的事情,比如服务器宕机或者天气提醒,但是发email又会不够及时或者可能会忽略,那么短信就是一个不错的选择了