使用rsync服务+nas方案解决服务器存储安全性问题的一种方案

481 阅读3分钟

当前服务器上了满速的nvme(970 EVO Plus(MZ-V7S1T0B),但却不敢把重要应用(比如gitlab)放在上面跑,因为这玩意一旦哪天罢了工,数据的可恢复性为0。

或许我们可以使用nvme的raid1卡来解决这个问题,但又不好确认raid1卡是否能成功的被vmware esxi识别,同时价格也是需要考虑的因素。

顺便说一句:970 EVO Plus在vmware esxi 6.7.0上表现良好,即插即用。

rsync

而rsync恰好能够解决这个问题,基本的思路很简单:

  1. 在nas端开启rsync服务
  2. 在客户端启用rsync,并设置需要同步的文件夹

nas端

nas我们可以使用群晖或是FreeNAS,或是使用FreeBSD的zfs系统来打造。本文以群晖为例。

群晖的官方网站有关于如何启用rsync的说明这为我们实现此功能降低了难度。

按上文我们创建一个备案专用文件夹(比如bak),然后创建一个只有当前文件夹读写权限的用户(用户组建议先选择为管理员,避免一些ssh认证问题),设置一个复杂点的密码,在应用设置上,仅勾选rsync。

另外建议使用个非22端口,这个应该是更安全一点。

客户端

nas就绪后,我们开始在客户端上安装rsync服务。

debian

系统不重要,重要的是是否可以成功安装rsync服务。

# su -
# bash
# apt install sshpass
# pat install rsync

接下来我们先使用ssh连接一下主机,避免产生rsync Host key verification failed错误。

# ssh -p yoursshport rsyncuser@your.nas.domain.name

安装完毕后,开始尝试进行同步:

# sshpass -p "rsyncpassword" rsync -av -e 'ssh -p yoursshport' --progress /home/panjie rsyncuser@your.nas.domain.name::bak/foldername

FreeBSD

首先按官网指导安装rsync客户端

[root@nfs /yzpool/data/hosts]# pkg install sshpass
[root@nfs /yzpool/data/hosts]# pkg install rsync
Updating FreeBSD repository catalogue...
FreeBSD repository is up to date.
--
Some scripts provided by rsync such as rrsync requires
python which is not installed by default

最后提示我们还需要安装python

# pkg install python

定时任务

rsync有个非常大的优点在于其同步的时候,会进行差异化同步,这极好的保证了备份的效率。
结合定时任务,我们便可以实现按一定周期进行同步的目的。

debain

我先建议个批处理文件(比如为: rsync.sh),并保存在/home/username下,内容就是我们前面执行的命令:

#/bin/bash
sshpass -p "rsyncpassword" rsync -av -e 'ssh -p yoursshport' --progress /home/panjie rsyncuser@your.nas.domain.name::bak/foldername \
> /home/panjie/rsync.log
echo "done at $(date)" >> /home/panjie/rsync.log
cat /home/panjie/rsync.log

保存后为其增加执行权限:#chmod -x rsync.sh,然后执行一遍看是否报错:#./rsync.sh。没有错误的话把nas中的同步用户用户组设置为普通用户后再执行一遍#./rsync.sh

最后执行crontab -e便可以设置定时任务了:

# crontab -e

然后输入以下内容:

0 */1 * * * /home/panjie/rsync.sh

上述定义了一个每1小时执行一次的策略。可以借助crontab.gura来快速生成相关的计划任务。

NEXT

剥离感觉效率不高,发热量还不小的raid卡,将硬盘做走通给FreeBSD,基于FreeBSD打造ZFS文件系统。并 ZFS 文件系统做为数据盘挂载给其它系统。

此时:服务器操作系统的数据盘为 ZFS 系统,有冗余(还可以有快照),结合NAS的rsync做小时级别的备份,总算可以安心的将生产环境移植过来了。

如果是 I/0 密集型的应用,还可以使用nvme做数据盘,使用rsync将数据文件分别备份到ZFS及NAS上,这样的三重保护就可以任性的使用nvme了。

自动启动zfs快照,并将快照上传至nas做为备份。
zhuanlan.zhihu.com/p/...

转移仓库位置至zfs存储
docs.gitlab.com/ee/ad...

本文来源:使用rsync服务+nas方案解决服务器存储安全性问题的一种方案