当用户需要用 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.deb
sudo apt-get update
sudo apt-get install gdebi-core
sudo 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-ossfs
chmod 640 /etc/passwd-ossfs
mkdir /mnt/ossfs
ossfs aliyun-oss-qd-src /mnt/ossfs -ourl=http://oss-cn-qingdao.aliyuncs.com
复制代码
往 OSS 桶里添加一个文件,并查看本地挂载目录是否可见。如果可以说明配置正确。
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.list
curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
apt-get update
apt-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-tw
gcsfuse --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
复制代码
配置开机自动挂载存储
上面挂载 OSS 和 GCS 存储桶的命令都只在本次启动有效。虚机重启后会丢失挂载。可以创建下面的脚本保证开机自动挂载。
vim /etc/init.d/mount-storage.sh
复制代码
在 mount-storage.sh 中填入下面内容。
#!/bin/sh
ossfs aliyun-oss-qd-src /mnt/ossfs -ourl=http://oss-cn-qingdao.aliyuncs.com
gcsfuse --key-file /home/eugeneyu/project-key.json gcs-tw /mnt/gcs-tw
复制代码
创建不同 runlevel 的 symlink。
update-rc.d mount-storage.sh defaults
复制代码
重启一下并查看挂载成功。
文章版权归作者所有,未经许可不得转载
评论