首页 > 代码库 > 大咖说:网盘也能私人定制?我信!
大咖说:网盘也能私人定制?我信!
网盘服务想必大家都很熟悉了,好多互联网公司都有提供,免费注册开通就能使用。
然而这些公共网盘服务用久了总觉得不爽,免费的要么容量小,要么限速,收费的又太贵,功能或者其他方面也总有这样那样的不足。
网盘这东西,说到底不就是云平台上提供的存储服务么!那么如果我说能基于 Azure 存储服务自己搭建出个人专用的网盘,你信不信?分分钟搞定给你看!
韩源
微软资深工程师,存储和灾备专家
通过本文内容介绍如何通过 Azure 搭建企业或个人的私有云盘来实现数据转移、共享、备份等功能。
私有网盘需求
传统的拷贝等方式,属于串行操作,每个步骤都必须完成,才能进行下一步,并且需要人工干预。一些同步软件例如 rsync、synctoys 等虽然可自动化同步,但是每次需要手工执行或者放入 crontab 里定期执行,无法完全自动化。所以我们希望通过私有网盘来解决这些问题
一个合格的私有网盘应具备如下基本功能:
透明:无需人工干预,放入同步文件夹的文件可自动同步
安全:传输及保存可加密
管理:可为不同用户分配不同的读写或禁止权限
跨平台:可在 Windows、Linux、Mac、iOS、Android,甚至嵌入式设备,如树莓 Pi 上使用
断点续传:如设备离线、重新上线后可自动继续上传下载
有些客户甚至需要更多的特性,例如:
分块传输:避免大文件修改后整体上传,提升效率
多目录同步:无需将所有文件放置在一个固定目录
快速传递:可设置多个服务器,自动选择最快节点,全局同步
这些功能也是我们搭建私有网盘的目标。
准备工作
Azure
当然,首先得有 Azure 账号,如果需要国内外都可以快速同步,最好是同时具备 azure.cn 和 azure.com 的账号。
同步软件
强烈推荐 Resilio Sync(以下简称 Resilio)。
该软件有全平台的客户端,并且通过 P2P 方式进行同步,也就是说,某个文件只要在一个节点上有完整版,其它节点即可同步。例如,企业里,员工 A 完成一个文件后需要传给国外的员工 B 进行下一步工作。如果使用 Resilio,只要这个文件在同步文件夹里,A 保存后自动向 Azure 服务器和 B 的电脑里同步文件,由于 Azure 在国内,速度较快,很快完成了同步。此时 A 的电脑无需再保持在线,服务器会自动将剩余部分同步到 B 的电脑里。
Resilio 有多个版本,区别如下:
对普通用户,免费版即可满足需求。
私有网盘搭建
服务器安装配置
1,在 Azure 新建一台虚机,OS 选择 CentOS7.3,Resilio 对性能要求不高,使用 D1v2 即可;其它如网络等设置根据实际要求配置,PublicIP 最好使用固定 IP。为了方便测试,在 NSG 中添加一条规则,允许所有入站访问。
2,通过 SSH 工具连接到这个虚拟机,将 Resilio 加入到 YUM 源,并安装 Resilio 软件。
4,在其他电脑上,通过浏览器访问 http://ip:8123 打开管理界面,配置用户名和密码。
5,为该设备命名,并同意协议:
6,输入设置的用户名和口令进入管理界面:
私有网盘的功能扩展
通过 Resilio 搭建的私有网盘将以 P2P 的方式同步,即是否存在同步服务器并不影响文件操作,但是配置同步服务器可以实现许多更高级的功能。
同步服务器的高可靠
Azure 提供的 99.95% 的 SLA 需要通过两台在不同故障域和更新域的服务器来实现。所以,如果要保证同步服务器的持续在线,需要使用可用性集(Av set)来实现。
可用性集将同样功能的多台虚机分布在不同的故障域和更新域,当某个域出现故障或者更新重启时,其它域的虚机可持续提供服务,避免业务中断。
下文将介绍如何把 Resilio 部署到可用性集,实现高可用。
可用性集必须在创建虚机时配置,如需加入或移除可用性集,必须重新创建虚机。
按照之前的方式创建一台 CentOS7.3 虚机 SyncDemo01,在可用性集选项新建一个可用性集 SyncDemoSet:
然后创建第二台虚机 SyncDemo02,配置同 SyncDemo01,使用 SyncDemo02 相同的 vNet、子网、网络安全组等,可用性集选择第一台创建的可用性集。
由于采用了 P2P 同步方式,Resilio 并不关心中心节点,所以 Resilio 高可靠最简单的实现方式是把这两台服务器当作两台独立的 Resilio 服务器,分别安装配置好软件,在其中一台建立共享文件夹,并在另一台添加(同客户机的共享文件夹添加方式),可用性集保证了两台同步服务器不会同时宕机,始终有一台提供同步服务。
跨区域同步
某客户有中外两个办公室,如果没有同步服务器,所有同步都需要在客户员工的工作电脑完成,面临两个问题:
1.跨国同步受到骨干网带宽影响,速度较慢,员工必须等到同步完成才能关闭电脑,造成下班时间拖延,或者员工只能提前停止工作,等到在下班前完成与对端员工电脑的同步;而两地由于时差,可能根本没有交叉的时间可供同步
2.数据保存在员工电脑里,存在丢失风险
基于这种需求,可在该客户两个办公地点较近的 Azure Region(或者更多地点)配置两套 Resilion 同步服务器,当地员工放入共享文件夹的文件自动同步到就近 Azure Region 的同步服务器,不受跨国带宽的影响,可迅速完成。各 Region 同步服务器之间的数据同步可后台自动进行,无需员工电脑在线,不影响员工下班。另一地点员工上班时,共享文件会自动从就近的同步服务器同步到员工电脑,因此可尽快开展工作。由于同步基于互联网进行,员工甚至可带电脑回家同步。同时如果员工电脑出现损坏、丢失等情况,数据在 Azure 的服务器上仍有备份,无须担心数据丢失。
文件版本管理
Resilio 提供了版本管理功能,默认保存 30 天历史文件记录,在共享文件夹的 Preference 中可以修改是否保存历史版本:
在 Resilio 客户端的 Preferences-Advanced-Openpower preferences-sync_trash_ttl 选项中,可以设置历史版本的保留天数:
通过不同的历史版本保留策略,可以设置在客户机不保留历史版本或很短时间的历史版本,节约客户机硬盘空间;在服务器端可以设置长时间的历史版本保留策略,实现对历史文件的长时间回溯。
总结
Resilio 还具备很多其他功能,例如指定文件同步(文件在客户机只有一个链接,使用时下载,节约客户机空间)、权限管理、企业版还有传输加速等高级功能。
结合 Azure 上部署的同步服务器,完全可以满足企业和个人的私有网盘需求,并可扩充很多扩展功能如协同办公、版本管理、替代邮件附件等,更好的促进工作效率。
注: 本文的私有网盘解决方案只为阅读者提供一个思路,由于涉及到非微软认证的第三方软件,故不对整体方案的 SLA 及数据安全提供保障。
=
没想到吧,就是这么简单,就是这么强大!只要善于开脑洞,就能轻松玩出这么有趣的花样。如果你喜欢「折腾」,还能在上文这个云盘的基础上扩展出协同办公、权限管理、传输加速之类的功能。童鞋,你不打算自己试一试?
立即访问http://market.azure.cn
大咖说:网盘也能私人定制?我信!