Skip to content

网络架构

TIP

你想要了解如何完美的进行反向代理,就必须先了解这个软件的网络是如何运作的。本章节将尽可能简单通俗的讲解 MCSManager 分布式网络通信原理。

首先我们知道 MCSManager 是支持将多台机器连接起来,由 面板 统一管理的,而被连接的本地主机或远程主机,我们称之为 节点

那么如果有很多用户同时上传文件到不同的 节点如果所有上传文件的流量全部经过面板来转发,势必会造成宽带供不应求,甚至崩溃

为此,我们将所有大流量的操作,只让 面板 负责授权,由浏览器直接连接 节点 传输数据(比如文件上传,控制台实时日志)等。如此一来,流量就平均分摊到各个节点,不会导致 面板 侧占满的情况。

子项目职责

整体项目总共分为两个部分,一个面板端(Web Panel),一个节点端(Daemon)。

面板端的功能划分:

  • 用户管理
  • 连接节点
  • 大多数操作的权限认证与授权
  • API 接口提供
  • 更多...

节点端的功能划分

  • 真实的进程管理(你的实例进程实际运行处)
  • Docker 容器管理
  • 文件管理
  • 终端实时通信
  • 更多...

这会影响到什么吗?

这会严重加剧反向代理和 HTTPS 配置难度。通常来说,配置反向代理只需要一个端口即可,但是由于 MCSManager 分布式的设计,你必须配置至少两个端口,如果你加入 HTTPS 配置,由于浏览器对于 HTTPS 网站的要求是所有连接必须全部是 HTTPS 协议,为此你需要为每一个远程节点全部配置并支持 HTTPS 才能成功。

原理图

在无其他配置和因素下,浏览器需要与守护进程进行直接访问,以便于文件上传下载和实时数据传输,从而减小面板端的流量压力。

正因如此,连接守护进程的 IP 地址不得使用内网段,否则外部用户将无法访问到守护进程并且会一直显示 连接中 字样。

右键新标签页打开可以放大。

分布式原理图