利用Azure搭建自己的私有云盘

​ 随着IT的发展,无论是企业还是个人,文件类的数据越来越多,随之而来的文件传递、共享、同步等需求愈加旺盛。传统的文件拷贝、U盘传递、ftp等方式已无法满足需要。前些年公有网盘迅猛发展,但是由于各种原因,最近各种公有网盘服务都逐渐停止或者缩减服务项目,不能提供很好的服务,并且敏感数据放入公有网盘有数据泄露的风险。

​ 本文将介绍如何通过Azure搭建企业或个人的私有云盘来实现数据转移、共享、备份等功能。

私有网盘需求

​ 传统的拷贝等方式,属于串行操作,每个步骤都必须完成,才能进行下一步,并且需要人工干预。一些同步软件例如rsync、synctoys等虽然可自动化同步,但是每次需要手工执行或者放入crontab里定期执行,无法完全自动化。所以我们希望通过私有网盘来解决这些问题

​ 一个合格的私有网盘应具备如下基本功能:

  1. 透明:无需人工干预,放入同步文件夹的文件可自动同步

  2. 安全:传输及保存可加密

  3. 管理:可为不同用户分配不同的读写或禁止权限

  4. 跨平台:可在windows、linux、mac、ios、android甚至侵入设备如树莓Pi等使用

  5. 断点续传:如设备离线、重新上线后可自动继续上传下载

    有些客户甚至需要更多的特性,例如:

    • 分块传输:避免大文件修改后整体上传,提升效率
    • 多目录同步:无需将所有文件放置在一个固定目录
    • 快速传递:可设置多个服务器,自动选择最快节点,全局同步

​ 这些功能也是我们搭建私有网盘的目标。

准备工作

Azure

当然,首先得有Azure账号,如果需要国内外都可以快速同步,最好是同时具备azure.cn和azure.com的账号。

同步软件

强烈推荐Resilio Sync(以下简称Resilio)。

该软件有全平台的客户端,并且通过P2P方式进行同步,也就是某个文件只要在一个节点上有完整版,其它节点即可同步。例如,一个企业里,员工A完成一个文件后需要传给国外的员工B进行下一步工作。如果使用Resilio,只要这个文件在同步文件夹里,A保存后自动向Azure服务器和B的电脑里同步文件,由于Azure在国内,速度较快,很快完成了同步,此时A的电脑无需再保持在线,服务器会自动将剩余部分同步到B的电脑里。

Resilio有多个版本,区别如下:

mark

​ 对普通用户,免费版即可满足需求。

私有网盘搭建

服务器安装配置

​ 首先,在Azure新建一台虚机,OS选择CentOS7.3,Resilio对性能要求不高,使用D1v2即可;其它如网络等设置根据实际要求配置,PubicIP最好使用固定IP,为了方便测试,NSG添加一条规则,允许所有入站访问:

mark

mark

mark

mark

mark

​ 安装完成后,通过SSH工具等你到虚机:

mark

​ 对于CentOS等类RedHat系统,Resilio提供了RPM的安装方式,只需要把Resilio加入到YUM源,即可在线安装。

​ 创建新的repo文件/etc/yum.repos.d/resilio-sync.repo,并添加如下内容:

mark

mark

​ 导入公钥:

mark

​ 安装Resilio软件:

mark

mark

​ Resilio安装后需要一个做配置文件(有模板),不过也可以通过直接指定参数的方式运行:

直接指定参数

mark

​ 参数里的0.0.0.0表示允许所有的IP访问,8888表示web服务的端口。

通过配置文件运行

​ 通过模板生成配置文件:

mark

​ 可根据实际情况修改配置文件,例如,希望把同步文件的目录设置在/share,web访问端口设置为8123,对应修改如下:

mark

mark

mark

​ 通过指定配置文件的方式运行Resilio:

mark

​ 在一台其他电脑,通过浏览器访问http://ip:8123的方式访问管理界面:

mark

​ 第一次运行,需配置用户名和密码:

mark

​ 为i该设备取个名字(用作同步时显示),并同意协议:

mark

​ 输入刚才设置的用户名和口令后,进入管理界面(会提示输入email订阅newsletter,直接关闭即可):

mark

​ 在此,我们可以添加一个共享目录:

mark

​ 可以看到,可创建不同类型的共享目录(部分功能需要专业版支持),这里我们以标准共享目录为例创建;点击Standard folder:

mark

​ 选择新建共享目录的存放位置,由于在配置文件里指定了/share作为Resilio的根目录,所以默认在/share下,点击New Folder创建一个新目录demo01作为共享目录的存放位置:

mark

​ 再点击Open创建共享目录,可看到有三种方式来发布共享目录:Link、Key、QR code,每种方式都有只读和读写两种权限:

mark

​ 三种方式的使用方法如下:

  • Link:通过邮件、IM工具等将Link发送给客户机,客户机如果已安装Resilio,浏览器打开Link时会自动跳转到Resilio添加共享目录

  • Key:客户机在Resilo软件里输入Key即可添加工项目

  • QR code:主要给移动设备使用,安装Resilo后通过扫描二维码添加共享目录

    此处先不共享,直接关掉该窗口即可:

mark

​ 再次进入SSH,查看/share目录,发现多出一个子目录demo01,即刚才添加的共享目录:

mark

​ 为了服务器重启时,Resilo可自动运行,将命令放入/etc/rc.local文件:

mark

mark

​ 注:/etc/rc.local是/etc/rc.d/rc.local的链接,在CentOS7里,不建议将开机启动软件放入rc.local,suoyi默认/etc/rc.d/rc.local没有可执行权限,需手工修改其权限。

​ 至此,服务器端安装配置完毕。

客户端安装配置

​ 客户端的安装配置比较简单,以windows平台为例,到Resilio官网下载对应安装软件,运行后一路next即可,安装后自动运行如下:

mark

​ 点击添加:

mark

​ 选择Enter a key ok link:

mark

​ 在服务器的web管理界面里,鼠标移至需要共享的目录后边,将显示share功能:

mark

​ 将出现该目录的共享菜单,本次选择Key:

mark

​ 复制Read&Write的Key,填如客户机,并点击Next:

mark

​ 选择共享目录在本地的保存位置:

mark

​ 添加完成,在客户机里可看到共享目录:

mark

​ 在客户机的目录里添加一个文件,稍等即可看到开始同步,速度取决于到azure.cn的带宽:

mark

​ 同步完成,SSH到服务器,可看到/share/demo01/ 多出客户机拷贝的文件:

mark

​ 删除此文件:

mark

​ 稍等,即可看到,客户机的该文件也被删除:

mark

​ 其他客户端的安装配置也基本类似,可根据需要自行选择安装配置。

​ 移动设备(IOS或者Android)也具备相应客户端,可远程访问共享文件。

私有网盘的功能扩展

​ 通过Resilio搭建的私有网盘的同步方式是P2P的方式,即是否存在同步服务器并不影响文件操作,但是配置同步服务器可以实现许多更高级的功能。

同步服务器的高可靠

​ azure的SLA 99.95%说明了需要通过两台在不同故障域和更新域的服务器来实现。所以,如果要保证同步服务器的持续在线,需要使用可用性集(Av set)来实现。

​ 可用性集将同样功能的堕胎虚机分布在不同的故障域和更新域,当某个域出现故障或者更新重启时,其它域的虚机可持续提供服务,避免业务中断。

​ 下边,将Resilio部署到可用性集实现高可靠。

​ 可用性集必须在创建虚机时配置,如需加入或移除可用性集,必须重新创建虚机。

​ 按照之前的方式创建一台CentOS7.3的虚机SyncDemo01,在可用性集选项新建一个可用性集SyncDemoSet:

mark

​ 然后创建第二台虚机SyncDemo02,配置同SyncDemo01,使用SyncDemo02相同的vnet、subnet、nsg等,可用性集选择第一台创建的可用性集。

​ 由于采用了P2P的同步方式,Resilio并不关心中心节点,所以Resilio高可靠最简单的实现方式是把这两台服务器当作两台独立的Resilio服务器,分别安装配置好软件,在其中一台建立共享文件夹,并在另一台添加(同客户机的共享文件夹添加方式),可用性集保证了两台同步服务器不会同时宕机,始终有一台提供同步服务。

跨区域同步

​ 某客户有中外两个办公室,如果没有同步服务器,所有同步都需要在客户员工的工作电脑完成,面临两个问题:

​ 1.跨国同步受到骨干网带宽影响,速度较慢,员工必须等到同步完成才能关闭电脑,造成下班时间拖延,或者员工只能提前停止工作,等到在下班前完成与对端员工电脑的同步;而两地由于时差,可能根本没有交叉的时间可供同步

​ 2.数据保存在员工电脑里,存在丢失风险

​ 基于这种需求,可在该客户两个办公地点较近的Azure Region(或者更多地点)配置两套Resilion同步服务器,当地员工放入共享文件夹的文件自动同步到就近Azure Region的同步服务器,不受跨国带宽的影响,可迅速完成。各Region的同步服务器之间的数据同步后台自动进行,无需员工电脑在线,不影响员工的下班。另一地点员工上班时,共享文件会自动从就近的同步服务器同步到员工电脑,尽快开展工作。由于同步基于internet,甚至可带回家同步。同时如果员工电脑出现损坏、丢失等情况,数据在azure的服务器上仍有亿份,无须担心数据丢失。

文件版本管理

​ Resilio提供了版本管理功能,默认保存30天的历史文件记录,在共享文件夹的Pefreference可以修改是否保存历史版本:

mark

mark

​ 在Resilio客户端的Preferences-Advanced-Open power preferences-sync_trash_ttl可以设置历史版本的保留天数:

mark

​ 通过不同的历史版本保留策略,可以设置在客户机不保留历史版本或很短时间的历史版本,节约客户机空间;在服务器端可以设置长时间的历史版本保留策略,实现对历史文件的长时间回溯。

总结

​ Resilio还具备很多其他功能,例如指定文件同步(文件在客户机只有一个链接,使用时下载,节约客户机空间)、权限管理、企业版还有传输加速等高级功能。

​ 结合Azure上部署的同步服务器,完全可以满足企业和个人的私有网盘需求,并可扩充很多扩展功能如协同办公、版本管理、替代邮件附件等,更好的促进工作效率。