你连上 VPN,打开笔记本,期待繁重的单元在服务器上运行。实际上,隧道只传输数据包。它不安装求值器,不授予许可证,也不决定由哪台机器执行代码。这是三件独立的事,而远程内核工作流需要三者齐备,第一次计算才可信。

误区:VPN 连接就是配置

VPN 在笔记本电脑和服务器之间提供网络路径。这有用而且往往必要,因为启动通道和内核连接必须到达远程主机。它并不说明该主机上是否存在 Wolfram 内核、许可证是否允许第二个并发进程,或者前端是否已配置为使用它。

受管理的笔记本电脑可能只带前端,授权则绑定在服务器上。反过来也常见:笔记本电脑上的桌面许可证并不授权在共享基础设施上运行内核。这两种情况都无法通过重连隧道解决。

尽早检验这个假设。在新笔记本中求值 $MachineName,把结果与预期主机比较。如果返回笔记本电脑的名称,那么无论 VPN 看起来多正常,该单元都是在本地运行的。

把前端与求值器分开

前端是窗口:它编辑单元、渲染输出并保存笔记本文件。内核是求值表达式并在内存中保存定义的过程。关闭前端并不会移动内核,保存笔记本也不会保存内核状态。

连接远程内核后,笔记本文件所在位置与内核工作目录是两回事。Directory[] 报告的是求值器所在目录,而这个路径对 Import、Export 和相对文件名才有意义。放在笔记本电脑上笔记本旁边的数据集,在另一台机器上运行的内核看不到。

在编写分析之前先决定数据如何到达服务器:共享挂载位置、经批准的传输步骤,或服务器可直接访问的数据库。这个选择影响可复现性,因为依赖笔记本电脑路径的笔记本下次由别人运行时就会失败。

通过经批准的通道启动内核

Wolfram 的远程内核指南介绍了添加内核条目、选择远程机器以及通过 SSH 启动。示例中的可执行文件路径和参数属于该产品的工作流;请按管理员指定的主机和版本调整,而不是原样粘贴。

主机身份是配置的一部分。通过组织流程验证 SSH 主机密钥,使用签发的认证方式,并把私钥和密码排除在会被共享或提交到仓库的笔记本文件之外。含有带密码启动命令的笔记本是凭据泄露,不是便利。

不要把 WSTP 监听器暴露到互联网当作捷径。受支持的模式是 SSH 启动,它让内核通道保持在已认证的连接内。如果网络团队已批准其他传输方式,就使用它,但应把暴露的求值器端口视为设计变更,而不是排障步骤。

先检查授权、数据和输出大小

与许可证所有者确认服务器可以为该用户运行内核,并且允许并发会话。远程计算通常与桌面前端分开授权;因授权导致的启动失败,在有人读懂服务器消息之前,看起来就像一条失败的 SSH 命令。

然后估算结果大小。返回数吉字节表达式的内核会把它经启动通道和内核通道送到前端,这可能让笔记本电脑内存卡住或耗尽。把繁重的聚合留在服务器上并返回摘要,或者把大结果写到服务器路径再刻意传输。

把可执行文件路径、启动参数和工作目录记入笔记本的设置备注。下一位使用者就能复现这套设置,而不是重新发现服务器用的是五种可能路径中的哪一种。

按顺序诊断各阶段

五个阶段都必须成功,每个阶段有各自的测试。从笔记本电脑开始,遇到第一个失败就停下,而不是同时改动多项设置:

nc -vz research.example.edu 22
ssh -v [email protected] 'hostname; command -v wolframscript'
ssh [email protected] 'wolframscript -code "$MachineName"'

TCP 检查失败指向路由、DNS 或 VPN 允许的目标。TCP 检查成功但 SSH 登录失败,指向认证或主机密钥策略。登录成功却找不到可执行文件,指向内核安装或前端被赋予的路径。内核能启动却始终连不上,指向启动参数或本地防火墙。

保留第一个有意义的错误,并把服务器侧的阶段交给拥有该机器的管理员。反复重建内核条目会掩盖究竟是哪个阶段真正失败,还会丢掉管理员需要的证据。

最终你想要一个认得出的窗口、一个叫得出名字的求值器,以及一条就代码和文件达成一致的路径。VPN 只是这条路径的一个组成部分;工作流越早体现这一点,花在重连一条从来不是问题所在的隧道上的时间就越少。

相关文章