我在我的node.js(kraken / express)网站上制作了我认为简单的页面。该页面用于从使用pm2运行的多个服务器和进程流式传输集合日志,因此我可以远程监视服务器活动。所以我已经将winston日志记录配置为使用mongo capped集合,然后通过mongoose获得一个tailable游标并发布到socket.io中。这就像单个盒子上的魅力一样,只有一个过程。但是当你用LB添加多个进程/服务器时,会发生不好的事情。首先,socket.io客户端被转移并且无法获取消息,因为进程A不知道进程B的消息。通过添加mongo作为socket.io的会话存储来解决这个问题。
但这造成了我真正的问题 - 我不能让每个进程拖尾mongo日志并发布到socket.io或者我最终会重复。但我不确定如何选择容错领导者(或者即使这是正确的方法)。我想在没有单独服务器的情况下这样做,因为我正在努力使设置尽可能简单。有什么想法吗?