Skip to content

节点与面板 ​

节点没有自己的意志。只要面板持续访问它,它就提供面板发来的内容。本页跟随节点走过它的一生:安装并获得信任、保持同步、被停用、被切断、拒绝某份配置,以及迁移到另一台服务器。

安装与信任 ​

安装节点会创建两张证书和一个固定值(pin):

  1. 面板的客户端证书 交给节点:要么用一次性安装令牌获取一次,要么由面板的自动安装通过 SSH 上传。从此以后,节点在其控制端口上只接受这张证书。
  2. 节点自己的服务器证书 在节点上生成。它永远不会离开节点。
  3. 固定值。 面板在第一次连接时记录节点的证书指纹,此后在该地址上只接受这张证书。这就是首次使用时信任。

双方在每次连接时都要证明自己的身份,所以互联网上的其他任何东西都无法越过控制端口的 TLS 握手。就地更新节点会保留它的证书,所以固定值仍然匹配。重新安装会生成新证书,面板会拒绝它,直到删除并重新添加该节点,或进行迁移(见下文)。操作步骤见 添加节点。

会话 ​

面板在节点上打开一个会话,并在每个请求中携带会话 id。会话保存在节点的内存中,所以重启后的节点会忘记它们。面板会察觉到这一点,打开一个新会话并重试一次请求;你无需做任何事。

节点的控制 API 一次只应答一个面板。在节点上打开自己会话的工具会从面板手中夺走会话,面板在下一个请求时会重新连接。

心跳 ​

面板每 15 秒询问每个节点的状况,每个节点各自独立,所以一个无法访问的节点永远不会拖慢其他节点。应答包含:

  • 核心是否在运行,以及是否启动了所给的配置;
  • 打开的连接数,总数和每个入站的数量;
  • 核心重启了多少次,以及最后一次启动错误;
  • 它跳过的项目,作为警告;
  • 被拦截出站拒绝的连接计数。

当节点应答说它什么都没在运行时,心跳会重新发送它的完整配置。重启过的节点、或暂时失去面板的节点,就是这样在几秒内恢复服务的。

停用 ​

你可以在 节点 页面上停用节点,节点的周期流量限制也可以自行停用它。无论哪种方式,面板都会:

  1. 最后一次收集它的计数器;
  2. 立即向它发送一份空配置,让它停止服务;
  3. 丢弃它的会话,不再联系它。

无论面板中其他内容如何变化,被停用的节点都不会被同步、不会收到心跳、也不会被标记为已连接,直到它被重新启用。届时它会得到完整配置。面板启动时,会把每个被停用的节点清空一次。

与面板断开 ​

节点只在能被面板访问到时提供服务。当面板宕机,或两者之间的网络被切断时:

  • 大约三分钟内,节点继续提供服务。面板重启或升级、或者短暂的网络故障,不会让任何人断开连接。
  • 三分钟后仍未收到面板的消息,节点会停止其核心,不再提供任何服务。
  • 当面板再次访问到它时,第一次心跳会发现它是空的,并发送它的完整配置。

宽限期按节点的单调时钟计算,所以修改它的系统时间不会产生任何影响。节点在面板最后一次收集之后、断开期间承载的流量会丢失:节点停止后不保留计数器。

在面板中删除节点时,如果面板能访问到它,会立即让它停止。如果访问不到,节点会在最后一次收到面板消息的三分钟后自行停止。

核心拒绝的配置 ​

节点在放弃正在运行的配置之前,会先检查新配置:

  • 构建失败的项目(端口已被占用的入站、错误的证书)会被跳过,节点继续提供其他所有内容。被跳过的项目是一条警告。
  • 核心无法启动的整份配置 会被回滚:节点继续提供之前运行的内容,并报告它没有启动新配置。

面板不会把回滚过的节点算作健康。它会把该节点显示为错误并附上原因,心跳会持续发送配置(第一次等待 30 秒,之后两次尝试之间最长 10 分钟),直到配置启动,或你修正了它拒绝的内容。

错误与警告 ​

面板中的节点可能带有两种不同的消息:

错误警告
含义节点不工作:无法访问、拒绝其配置,或没有运行节点在工作,但它运行的内容中缺少某些项目
示例连接被拒绝、证书固定值不匹配、配置没有启动启动时跳过了某个入站、某个项目无法接受一次变更、用户因缺少凭据而被省略
何时清除下一次正常的心跳时之后的某次同步成功应用这些项目时

警告保存在面板的内存中。面板重启后,它们会在下一次发现它们的同步时重新出现。

把节点迁移到另一台服务器 ​

有三样东西与节点运行的机器绑定:它的证书固定值、面板记录的 SSH 主机密钥,以及面板所知道的节点安装方式。只修改地址会把这三样都带到新机器上,而固定值会拒绝那里的每个连接。

节点菜单中的 迁移到其他服务器 会清除这三样。然后你在新服务器上像全新安装一样进行安装,第一次连接会固定新证书。用户、入站以及节点的其他一切都保持不变,因为它们保存在面板中。

文字与图片采用 CC BY 4.0 许可。