IBM Cloud VPC实例的自动快照策略实现

快照服务是一种无代理(Agentless)的数据备份方式,可以为公有云上服务器实例的云盘创建崩溃一致性快照,用于备份或者恢复整个云盘。也是一种便捷高效的数据容灾手段,常用于以下应用场景:
• 容灾备份:为云盘创建快照,再使用快照创建云盘获取基础数据,实现同城容灾和异地容灾。
• 环境复制:使用系统盘快照创建自定义镜像,再使用自定义镜像创建服务器实例,实现环境复制。
• 提高容错率:出现操作失误时,能及时回滚数据,降低操作风险,实现版本回退。
• 定期创建快照,避免因操作失误或外部攻击等原因导致数据丢失。例如,团队成员不慎在云盘上存储了错误的数据、服务器实例被误释放、应用错误导致了数据错误、或者骇客利用应用漏洞恶意删除业务数据等。
• 执行重要操作前创建一份快照,常见的重要运维操作包括更换操作系统、应用软件升级或业务数据迁移等。

这其中定期自动创建快照的功能(也可称之为自动快照策略)对于实现以上应用场景非常重要,但目前遗憾的是,IBM Cloud上的快照功能目前还不支持自动快照策略,据说官方会在2022年1Q上线此功能。我们在期待之余,其实也可以通过以下两种方式来自己实现IBM Cloud上的自动快照策略功能:

  1. 利用linux的cron job功能
  2. 利用IBM Cloud上的Code Engine cron event producer功能
    下面我们就具体来看一下这两种方式具体如何实现。

第一种方式利用linux的cron job功能来实现自动快照策略的步骤如下:

  1. 在一台linux服务器上安装Crontab软件,并创建定时任务
  2. 编写定时任务脚本,在脚本里通过IBM Cloud CLI命令创建快照

首先我们需要在执行Crontab定时任务的linux机器上(笔者用的是CentOS)安装IBM Cloud CLI工具
curl -sL http://ibm.biz/idt-installer | bash
在这里插入图片描述
接下来我们需要安装VPC CLI 插件
ibmcloud plugin install vpc-infrastructure
在这里插入图片描述
继续执行以下命令:
export IBMCLOUD_IS_FEATURE_SNAPSHOT=true
ibmcloud is target --gen 2
在这里插入图片描述
检测是否已安装Crontab
#crontab
-bash: crontab: command not found
执行 crontab 命令如果报 command not found,就表明没有安装.

使用如下命令安装Crontab
yum install crontabs

查看crontab服务状态:service crond status
手动启动crontab服务:service crond start

接下来我们可以执行crontab –e,添加如下内容:
*/10 * * * * /opt/snapshots.sh
上面命令的含义是每10分钟执行一次snapshots.sh脚本,其中snapshots.sh脚本里包含了生成快照的IBM Cloud CLI命令
在这里插入图片描述
然后我们在/opt目录下生成snapshots.sh脚本,内容如下:
vi /opt/snapshots.sh
#!/bin/sh
/usr/local/bin/ibmcloud login --apikey lBSS3sXgk3rFNRv7RQ4ziVcAAQXXXXX -c 3559d775d2e04fXXXXXXb9d4681c09
/usr/local/bin/ibmcloud is snapshot-create --name demo-snapshot-date +%Y-%m-%d-%H-%M-%S --volume r006-568b3c30-XXXX-4c9e-93e6-8ddc1157b0ca
在这里插入图片描述
其中/usr/local/bin/ibmcloud login --apikey lBSS3sXgk3rFNRv7RQ4ziVcAAQXXXXX -c 3559d775d2e04fXXXXXXb9d4681c09命令用来登录ibm cloud,apikey参数表示登录用户的ibm cloud API Key,-c参数表示要登录的ibm cloud账号的ID,可以到以下界面获得
在这里插入图片描述
/usr/local/bin/ibmcloud is snapshot-create --name demo-snapshot-date +%Y-%m-%d-%H-%M-%S --volume r006-568b3c30-XXXX-4c9e-93e6-8ddc1157b0ca是创建快照的命令,其中—name表示要创建的快照的名称,笔者加了个时间戳的后缀,以便区分。–volume表示要创建快照的云盘ID,可以通过以下界面获取
在这里插入图片描述在这里插入图片描述
执行如下命令:
chmod 777 /opt/snapshots.sh
过一段时间后,查看快照页面
在这里插入图片描述
说明快照已成功自动创建

第二种方式:利用IBM Cloud上的Code Engine cron event producer功能来实现自动快照策略

IBM Cloud Code Engine 是一个完全管理的无服务器平台。 您只需提供容器映像、批处理作业或源代码,IBM Cloud Code Engine 则负责管理和保护底层基础架构。 Code Engine 隐藏了运行时托管环境的复杂性,使开发人员能够专注于代码,而无需操心基础架构管理。 它支持开发人员以统一的用户体验部署各种工件(容器映像、源代码、批处理作业等),并且可以动态缩放产生的应用,甚至缩减至零 - 因此用户仅在工作负载运行时才需要付费。

Code Engine支持cron类型的event producer,当您需要在明确定义的时间间隔或特定时间执行操作时,就可以考虑使用Code Engine的cron event producer。要利用Code Engine实现VPC服务器实例的自动快照策略功能,我们需要做如下事情:

  1. 创建一个镜像,在该镜像中安装并初始化IBM Cloud CLI命令行工具,登录IBM Cloud账号,并创建快照
  2. 将镜像上传到Docker镜像仓库
  3. 在Code Engine上创建App, 并用第二步中上传的镜像创建Job
  4. 在Code Engine上创建subscription来定期执行第三步中创建的Code Engine App
    下面我们来看一下以上每步的具体操作

1. 创建一个镜像,在该镜像中安装并初始化IBM Cloud CLI命令行工具,登录IBM Cloud账号,并创建快照
创建镜像所使用的dockerfile及相关文件如下:

Dockerfile文件

FROM ubuntu:latest

RUN  apt update 
RUN  apt upgrade -y --allow-unauthenticated
RUN  apt install -y curl
COPY ./installer.sh .
RUN   chmod +x ./installer.sh
RUN  ./installer.sh
RUN  ibmcloud plugin install vpc-infrastructure 
COPY run.sh .
RUN chmod +x run.sh
CMD "./run.sh"

env.sh.temp文件

export REGION=us-south
export RESOURCE_GROUP=Default
export API_KEY= #your api key (IBM Cloud上登录用户的api key)
export NAME_PREFIX=demo-data03
export VOLUME_ID=r006-3f09a953-f704-488f-XXXXX-a842de33f3ce

installer.sh文件
install文件篇幅过长,大家可到https://github.com/threen134/codeEngine下查看下载

run.sh文件

#!/bin/bash
ibmcloud login -r $REGION -g $RESOURCE_GROUP --apikey $API_KEY 
ibmcloud is snapshot-create --name ${NAME_PREFIX}-`date +%Y-%m-%d-%H-%M-%S` --volume ${VOLUME_ID}
spar

大家也可以从https://github.com/threen134/codeEngine下载以上文件

2.将镜像上传到Docker镜像仓库
具体上传的过程这里就不累赘了,笔者上传后的镜像路径为docker.io/spark123fgew/ibmcli:v1

3. 在Code Engine上创建App, 并用第二步中上传的镜像创建Job
首先创建Code Engine project
在这里插入图片描述
在这里插入图片描述
下一步创建Job
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
4. 在Code Engine上创建subscription来定期执行第三步中创建的Code Engine App
在这里插入图片描述
在这里插入图片描述在这里插入图片描述
指定自动创建快照的schedule,每10分钟自动创建一个快照
在这里插入图片描述
在这里插入图片描述
检查快照是否已按Schedule自动创建
在这里插入图片描述

从上图可以看到,每隔10分钟会自动创建一个快照。说明使用Code Engine的cron event producer自动创建快照成功。

文档参考;

https://cloud.ibm.com/docs/vpc?topic=vpc-snapshots-vpc-planning

https://cloud.ibm.com/docs/vpc?topic=vpc-infrastructure-cli-plugin-vpc-reference

https://cloud.ibm.com/docs/codeengine?topic=codeengine-subscribe-cron-tutorial

https://cloud.ibm.com/docs/cli?topic=cli-ibmcloud_cli

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值