我希望使用特定的头节点作为 rsync 备份的联系地址,我不希望直接访问后端,因为它不够坚固,也不与我的其他环境兼容。另外,当客户端配置发生变化时,我也不希望更改客户端配置。
我不希望将文件存储在头节点本身,因为它的空间相当有限。我并不担心为每个文件进行两次 rsync 传输的计算开销,因为机器足够强大。
例子:
(局域网计算机)<--- 文件 ---> 头节点 <--- 文件 ---> 存储后端
有没有简单的方法可以做到这一点?我搜索了一段时间,但找不到有关此信息的任何信息。
答案1
只需通过 NFS 或类似方式在头节点上安装后端存储即可。几乎每个 HPC 集群都这样做。
答案2
您可以通过其他 SSH 连接建立 SSH 连接隧道,以获得看起来像从 LAN 计算机到后端的连接(无论如何对 rsync 来说)。不幸的是,这确实需要在客户端进行配置。最简单的方法是将以下内容添加到客户端的 ssh cofig 文件中:
Host storagebackend
ProxyCommand ssh -e none user@headnode exec nc %h %p 2>/dev/null
(注意:假设 netcat 安装nc
在头节点上。如果没有,则需要安装它或调整命令。)
然后使用 rsync 从客户端“直接”同步到存储后端。请注意,您需要进行两次身份验证,首先是向头节点进行身份验证,然后是向后端进行身份验证。如果您使用公钥身份验证,则两个私钥文件都需要位于客户端计算机上。
让客户端更加透明可能比较棘手;您能详细说明一下这个需求吗?我能想到一些技巧,比如在头节点上使用 netcat 的包装脚本,并让其自动提供“真正的”后端服务器名称……
附言:以下是有关该主题的一些参考资料:之前的一个 SF 问题,欧洲核子研究中心的一篇文章, 和一张由 Keith Herron 绘制的图表。