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

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

月光魔力鸭

2019-09-16 11:19 阅读 398 喜欢 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

安装步骤,点击查看

项目改造
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


感谢支持!

赞赏支持
提交评论
评论信息(请文明评论)
暂无评论,快来快来写想法...
推荐
想做微信/支付宝支付很久了..奈何需要的资质太多,只能慢慢申请,等待,审核..终于下来了。
从豆瓣转到网易云后,发现了不少好听的歌曲,然鹅..当我想把这些歌拿下来扔车上听的时候发现竟然不允许下载..能听不能下?这不科学,作为一名程序猿,必然要迎难而上啊.
从上面那篇文章过来的,这里分享下nodejs对文件夹以及子文件进行批量删除的实现。
跑了一个千库网的自动签到,在windows上测试的时候好好的,图片也没问题,可是放到linux服务器就不行了,总是登录不上不说,图片都不一样
使用nodejs连接ftp,进行ftp的操作,包括列表、上传、下载以及速率等。
目前了解的有两个模块可以实现二维码的模块,一个是node-qrcode ,这个算是比较大众的,不过环境比较复杂,所以...连看都没看;还有一个是小众的 qr-image ,这个比较简单,没有其他环境依赖,安装即可用,因为要实现一个简单的在线二维码生成,就先用这个试试水了
由于国家的行政区划每年都有变化,所以经常需要更新最新的数据,这里提供一个nodejs版本mysql数据存储的抓取示例。
通过nodejs来进行爬取页面的内容,这里简单试试做个小任务..