当用户需要用 Google Cloud 对象存储 GCS 对阿里云的 OSS 存储做存储备份,以保障数据安全,或者便于使用 Google Cloud CDN 等产品时,可以用本文描述的方法对二者做同步。本文采用 GCE 的虚机作为同步服务器,安装 ossfs 和 gcsfuse 等工具,并使用 rsync 进行定时同步。

准备工作

1.创建好阿里云 OSS 桶,本例为青岛区域的 aliyun-oss-qd-src
2.创建好 Google Cloud GCS 桶,本例为台湾区域的 gcs-tw
3.在 Google Cloud 与 GCS 桶同区域创建一台 GCE 虚机,分配公网 IP 使其可以访问公网,本例使用台湾区域的一台 g1-small (1C1.7GB) 虚机,并使用 Google Cloud 官方 Ubuntu 16 镜像

安装工具和配置同步

1. 安装 ossfs

不同 Linux 发行版的安装步骤可以具体参照阿里云文档

本例的具体步骤如下。

wget http://gosspublic.alicdn.com/ossfs/ossfs_1.80.6_ubuntu16.04_amd64.debsudo apt-get updatesudo apt-get install gdebi-coresudo gdebi your_ossfs_package

2. 挂载 OSS 桶

从阿里云控制台获取用户访问密钥 access key。

运行下面命令把 OSS 桶挂载到本地 /mnt/ossfs 目录。注意把替换成有效的 key。

sudo su -echo aliyun-oss-qd-src:<accesskey-id>:<accesskey-secret> > /etc/passwd-ossfschmod 640 /etc/passwd-ossfsmkdir /mnt/ossfsossfs aliyun-oss-qd-src /mnt/ossfs -ourl=http://oss-cn-qingdao.aliyuncs.com

往 OSS 桶里添加一个文件,并查看本地挂载目录是否可见。如果可以说明配置正确。

ls /mnt/ossfs/

3. 安装 gcsfuse

gcsfuse 是用来把 GCS 桶挂载到 Linux 或 MacOS 的开源工具。具体说明和使用步骤参考代码文档

本例使用以下步骤。命令用 root 用户执行。

export GCSFUSE_REPO=gcsfuse-`lsb_release -c -s`echo "deb http://packages.cloud.google.com/apt $GCSFUSE_REPO main" | sudo tee /etc/apt/sources.list.d/gcsfuse.listcurl https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -apt-get updateapt-get install gcsfuse

4. 挂载 GCS 桶

首先到 GCP 控制台 IAM 界面把 Compute Engine 的默认Service Account (或其他要使用的 Service Account) 的角色配置增加 Storage Object Admin。

下载配置好的 Service Account 的 key 文件。

将下载的 JSON 格式 key 文件上传到前面的虚机上。最方便的方式是使用网页版 SSH 工具上传。

用下面的命令创建本地文件夹并挂载 GCS 桶。命令中要指定上面下载的 key 文件。命令用 root 用户执行。

mkdir /mnt/gcs-twgcsfuse --key-file /home/eugeneyu/project-key.json gcs-tw /mnt/gcs-tw

如果有任何错误,可以增加日志输出,使用下面命令。

gcsfuse --key-file /home/eugeneyu/project-key.json --implicit-dirs --foreground --debug_gcs --debug_fuse gcs-tw /mnt/gcs-tw

5. 创建同步

挂载好后用下面命令测试一下手动同步可以成功。

rsync -avu --delete /mnt/ossfs/ /mnt/gcs-tw

如果没有问题,创建定时任务。每5分钟执行一次。

echo "0,5,10,15,20,25,30,35,40,45,50,55 * * * * root rsync -avu --delete /mnt/ossfs/ /mnt/gcs-tw" > /etc/cron.d/gcs-rsync
  1. 配置开机自动挂载存储

上面挂载 OSS 和 GCS 存储桶的命令都只在本次启动有效。虚机重启后会丢失挂载。可以创建下面的脚本保证开机自动挂载。

vim /etc/init.d/mount-storage.sh

在 mount-storage.sh 中填入下面内容。

#!/bin/shossfs aliyun-oss-qd-src /mnt/ossfs -ourl=http://oss-cn-qingdao.aliyuncs.comgcsfuse --key-file /home/eugeneyu/project-key.json gcs-tw /mnt/gcs-tw

创建不同 runlevel 的 symlink。

update-rc.d mount-storage.sh defaults

重启一下并查看挂载成功。

文章版权归作者所有,未经许可不得转载

相关推荐