我们知道,pm2可以在本机上开启多进程,并实现进程的负载均衡。
现在是这样的,为了防止单点故障,需要用pm2在多台服务器上实现部署,这个不是难题。
关键是如何在多台服务器上实现负载均衡?pm2可以远程管理进程吗?
查了很多资料,都没有这一方面的内容,请问各位大佬是如何解决的呢?或者有没有更好的解决方案呀?小弟在此谢过!
负载均衡恐怕是不得行吧,我记得朴灵那本深入浅出的书上讲父进程把socket句柄传递给子进程是随机的样,多个子进程随机挑选一个获得句柄,你还是用nginx的反向代理来负载均衡
来自酷炫的 CNodeMD
其实我也不太清楚,大概是使用反向代理。 反向代理, Nginx 大哥要出场了。不过也可以使用 node-http-proxy 做负载均衡。 类似下面的代码,跑一个服务用来把所有请求均衡分配给其他端口/服务器。
switch (host) {
case 'a.com':
case 'www.a.com':
if (req.url.indexOf('/grand') != -1) {
return proxy.web(req, res, { target: 'http://127.0.0.1:3004' });
}
else {
return proxy.web(req, res, { target: 'http://127.0.0.1:3005' });
}
}
多谢楼上两位,涨姿势了,学无止境啊
还有更强的,nginscript
来自酷炫的 CNodeMD
接下来的问题是: 由于考虑到时间成本,该任务不打算部署服务器写前端后端,只是一个定时任务调度系统,将定时任务分配到不同的服务器上,需要多服务器做容灾,又要实现负载均衡。用nginx反向代理有点大材小用了。pm2很适合,但不能管理远程进程,做不到负载均衡。
所以现在的难题是要尽量少造轮子,又要实现多服务器负载均衡的办法。
想必大家工作时也遇到过这种情况,是如何解决的呢?能指点一二吗!感激!
你好,你是怎么实现用pm2在多台服务器上部署同一个项目的啊?麻烦能分享一下吗,非常感谢!!!
@ReadingCommando 我经历过一个服务跑了 100+ 台,就是把一台服务器做成镜像部署到 100+ 服务器。 另外需要配合 shell 定时脚本自动拉取 Git Master 代码,这样每台服务器都会拉取最新代码自动重启。
看一下SLB,小规模的用nginx,中等的用LVS,大型的就得上F5了~
@fhawk 你说的这几个负载均衡,首先不工作在同一层上,其次也没有这么绝对的关系的。还是要看具体场景分析