这篇文章算是一个总结性的文章,作为我之前的猜想的一个总结。

整个方案共耗费我大概两个多星期的时间,最后做到了在相对黑箱的条件下实现了我的目标。当然距离真正的应用还有一段距离。

实现内容

这个方案实现了在噢易云融合版服务器与客户端异地(本地)情况下,只要可以访问互联网(这个未来可以改进成单独设立的服务器就可以离开互联网了),可以实现服务端与(VDI/VOI/IDV)客户端自动组网(建立虚拟局域网),最大化利用廉价家宽而不需要使用专线(甚至公网ip),大大降低客户的带宽成本以及售前划分网络的工作量。

灵感来源

最开始的时候是培训的时候我在听了融合版的架构与线上的裸金属服务器很像,然后了解到公司售前的同事经常加班,而据我了解zerotier是可以实现自动组网的,从而有了一个模糊的概念。
然后在一次部门周会的时候听到说有友商将服务上云,以及阿里的”如影“,根据我的想法,公司的产品完全可以无缝上云,但由于从正规渠道采购云服务器带宽太贵,可能会优先级不高。
结合我感受到家宽上传带宽越来越便宜,以及由于疫情导致的线上办公/教学的需求,以及个人电脑性能越来越强。因此只要可以解决家宽内网建立虚拟局域网即可,而学校/公司不用再采购价格昂贵的企业专线。P2P内网穿透完全符合这个要求。
而我首先要证明公司现有产品完全可以只用新增一个“附属”模块就可以增加一个强大的竞争力。虽然n2n是开源的,但根据我之前用过的经历感觉n2n穿透成功率没zerotier高,因此我选择了更成熟的zerotier。也是为了减少风险。
(即使P2P内网传统网络相对波动性对VDI影响较高,但对于VOI/IDV这类下发桌面的产品影响有限,而且自动组网可以大大降低售前的工作压力。)

验证步骤

安装zerotier

由于噢易云融合版的客户端与服务端均为深度开发的系统,最初我为了稳定性想着使用编译的zerotier兼容性会更好。因此使用了编译安装。


结果发现了编译安装后,无法通过BT分发IDV桌面,而广播一切正常。
BT分发出现异常
使用手动重新做种后,分析日志,也没发现有异常的地方。
手动分发日志-1
手动分发日志-2
手动分发日志-3

最后我重装了服务器,在服务器内安装VMware,在VMware内安装噢易云融合版服务端,这样就可以通过快照的方式来控制变量进行筛查。
经过测试发现,编译安装zerotier时,会干掉idv(没准包括voi)的bt下发服务(具体原因查日志查不出来),已使用控制变量法证实是更新了gcc/c++之类环境导致的,结合我之前安装qbittorrent时对GCC环境以及libtorrent的版本要求限制,因此我怀疑是这个地方出问题了。因此我改用官方的脚本(也就是现成的RPM进行安装)

在测试过程中,经常在晚上9点左右国际网络高峰时期出现无法穿透的情况,因此我搭了一个moon来改善穿透。

VDI

部署VDI其实很顺利,我是在编译安装完zerotier后直接测试VDI的使用,没有受到影响。


在武汉(电信家宽)-孝感(联通家宽)的环境下,延迟无感,30M上传带两1080P的桌面负载无感只证明可行性,效果还行。

IDV&VOI

由于VOI的最小系统实在是不太适合装软件,因此我用IDV代替VOI进行测试。
网络为:孝感(联通家宽) - 吉林(电信数据网络)
IDV耗费了我大概一周多的时间,一直在断断续续筛查下发错误的原因。最后查到了上面所说的原因。
随后就简单了。可以正常BT下发桌面。当然广播试过是需要中继器,那就画蛇添足了


IDV没能成功在VMware内启动系统,这是个遗憾。

n2n

由于zerotier还是国外商业化产品,仅仅供验证还行。如果需要商业化使用还需要研发部的同学们做一个P2P内网穿透。
听说N2N作者又重拾代码了,N2N作为开源的项目,我也看看N2N能不能代替zerotier使用。
我看了下n2n的最新文档,发现功能越来越牛了,于是心痒痒就测试了一遍,发现完美符合我的需求,甚至目前的版本就可以直接用到融合云上。
部署n2n的教程可以看:


然后我备份一下我用的命令:
服务端:

/usr/sbin/edge -c mynetwork -k mysecretpass -f -l 39.97.125.247:1212 -r

sudo sysctl -w net.ipv4.ip_forward=1
sudo iptables -t nat -A POSTROUTING -j MASQUERADE

客户端

/usr/sbin/edge -c mynetwork -k mysecretpass -f -l 39.97.125.247:1212

sleep 13
ip route add 192.168.123.0/24 via 10.164.148.197

感谢

感谢文章中我引用来源以及部分没有引用来源的各位博客作者们,以及公司的罗总、李建勇老师、刘喆哥,王琼哥,胡磊哥,晏司徒哥,金昊翔等大佬们的帮助,以及公司的技术文档的各位编撰者们。

最后修改:2021 年 02 月 13 日 04 : 11 AM