关于【pm2】的问题:远程部署多台服务器可以实现负载均衡吗?
发布于 2 年前 作者 Bingmang 2615 次浏览 来自 问答

我们知道,pm2可以在本机上开启多进程,并实现进程的负载均衡。

现在是这样的,为了防止单点故障,需要用pm2在多台服务器上实现部署,这个不是难题。

关键是如何在多台服务器上实现负载均衡?pm2可以远程管理进程吗?

查了很多资料,都没有这一方面的内容,请问各位大佬是如何解决的呢?或者有没有更好的解决方案呀?小弟在此谢过!

9 回复

负载均衡恐怕是不得行吧,我记得朴灵那本深入浅出的书上讲父进程把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 你说的这几个负载均衡,首先不工作在同一层上,其次也没有这么绝对的关系的。还是要看具体场景分析

回到顶部