IBM Cloud VPC实例的自动快照策略实现
快照服务是一种无代理(Agentless)的数据备份方式,可以为公有云上服务器实例的云盘创建崩溃一致性快照,用于备份或者恢复整个云盘。也是一种便捷高效的数据容灾手段,常用于以下应用场景:
• 容灾备份:为云盘创建快照,再使用快照创建云盘获取基础数据,实现同城容灾和异地容灾。
• 环境复制:使用系统盘快照创建自定义镜像,再使用自定义镜像创建服务器实例,实现环境复制。
• 提高容错率:出现操作失误时,能及时回滚数据,降低操作风险,实现版本回退。
• 定期创建快照,避免因操作失误或外部攻击等原因导致数据丢失。例如,团队成员不慎在云盘上存储了错误的数据、服务器实例被误释放、应用错误导致了数据错误、或者骇客利用应用漏洞恶意删除业务数据等。
• 执行重要操作前创建一份快照,常见的重要运维操作包括更换操作系统、应用软件升级或业务数据迁移等。
这其中定期自动创建快照的功能(也可称之为自动快照策略)对于实现以上应用场景非常重要,但目前遗憾的是,IBM Cloud上的快照功能目前还不支持自动快照策略,据说官方会在2022年1Q上线此功能。我们在期待之余,其实也可以通过以下两种方式来自己实现IBM Cloud上的自动快照策略功能:
- 利用linux的cron job功能
- 利用IBM Cloud上的Code Engine cron event producer功能
下面我们就具体来看一下这两种方式具体如何实现。
第一种方式利用linux的cron job功能来实现自动快照策略的步骤如下:
- 在一台linux服务器上安装Crontab软件,并创建定时任务
- 编写定时任务脚本,在脚本里通过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服务器实例的自动快照策略功能,我们需要做如下事情:
- 创建一个镜像,在该镜像中安装并初始化IBM Cloud CLI命令行工具,登录IBM Cloud账号,并创建快照
- 将镜像上传到Docker镜像仓库
- 在Code Engine上创建App, 并用第二步中上传的镜像创建Job
- 在Code Engine上创建subscription来定期执行第三步中创建的Code Engine App
下面我们来看一下以上每步的具体操作
1. 创建一个镜像,在该镜像中安装并初始化IBM Cloud CLI命令行工具,登录IBM Cloud账号,并创建快照
创建镜像所使用的dockerfile及相关文件如下:
Dockerfile文件
FROM ubuntu:latestRUN 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
IBM Cloud VPC实例的自动快照策略实现相关推荐
- IBM Cloud VPC网络与本地办公网络的互通
VPN 连接(VPN Connections)是一种基于网络隧道技术,实现本地数据中心与公有云上资源连通的传输服务,它能帮您在 Internet 上快速构建一条安全.可靠的加密通道.VPN 连接具有配 ...
- IBM Cloud:裸金属服务器+多云策略助力音视频解决方案成功出海
点击上方"LiveVideoStack"关注我们 到底什么是公有云.私有云和混合云?疫情给云服务厂商带来了哪些挑战?IBM是如何助力音视频解决方案成功出海的?"后疫情&q ...
- 通过IBM Cloud 部署云原生应用
说在前面 云原生应用也就是面向"云"而设计的应用,在使用云原生技术后,开发者无需考虑底层的技术实现,可以充分发挥云平台的弹性和分布式优势,实现快速部署.按需伸缩.不停机交付等. 今 ...
- 如何利用阿里云服务器快照策略为数据备份
阿里云服务器快照,是一个很好的备份容灾工具,不了解的可以先了解一下: 快照可以做什么? 这是一种便捷高效的数据保护服务手段,可以对重要业务数据进行备份,来应对误操作.攻击.病毒等导致的数据丢失风险.比 ...
- 带你玩转新一代无服务器产品:IBM Cloud Code Engine(二)
在上一篇博客中我们简单了解了一下IBM Cloud Code Engine,是一个完全托管的.无服务器的平台,它运行您的容器化工作负载,包括web应用程序.微服务.事件驱动的函数,以及具有" ...
- 轻松云上开发:从IBM Cloud 开始!
在本文的开头,先给大家讲三个典故. 典故一:工欲善其事,必先利其器 "工欲善其事,必先利其器."是孔子的两句名言,指在做工作前如果能够选择到好的工具,那么,在工作的执行中就能得心应 ...
- 发现在创建云服务器ecs实例的磁盘快照时_玩转ECS第7讲|ECS数据保护-数据备份新特性与最佳实践...
简介: 本文中,阿里云智能弹性计算专家余初武(悟元)将结合阿里云近期推出的数据备份新特性(快照极速备份.一致性快照组)来介绍云上环境如何做数据备份的最佳实践:适合需要构建云上架构的工程师,架构师和云上 ...
- 免费申请使用IBM Cloud Lite(轻量套餐) 详细教程指南
注册轻量帐户可在 IBM Cloud 控制台中使用所选的显示有轻量标记的免费轻量套餐来构建应用程序和探索服务.轻量帐户不会到期,也无需信用卡. 本文详细的介绍了一下,免费云服务的申请以及使用!这次使用 ...
- IBM Cloud - 文件存储介绍
大部分的公有云厂商都会提供块存储,文件存储,对象存储这三种存储类型,每种存储类型都有自己的特点和适合的应用场景,下表针对IBM Cloud上的这三种存储类型做了一个简单的对比. 言归正传,切入正题,今 ...
最新文章
- RTD 比率式温度测量传感器设计思路
- R语言ggplot2可视化分面图(facet_grid)、自定义缩小分面图标签栏的高度、但是不改变标签栏标签文本的大小、通过element_text函数的margin参数设置实现
- 如何调用AngularJS指令中定义的方法?
- VB 创建快捷方式函数(可带参数)
- HDU1874 畅通工程续【Dijkstra算法】
- http://nuyd.eastmoney.com/EM_UBG_PositionChangesInterface/api/js?rows=64page=9
- 【DBN】Deep Belief Network简介
- 基于C#实现的简易绘图工具设计
- yeta机器人_Yeta智能语音电话机器人开放平台接入指南(2)
- mysql添加开机自启_初始化mysql并设置开机自动启动
- psql中character varying和character区别
- java 扁平化_java 扁平化输出json所有节点key/value
- 辟谣!微信支付宝收款码将不能用于经营性收款?
- [附源码]JSP+ssm计算机毕业设计校园征兵及退役复原管理系统16z67【源码、数据库、LW、部署】
- [历史随笔]帝国如风--元朝的另类历史
- 购买虚拟服务器费用入什么科目,购买的云服务器费用入什么科目
- 鸥玛软件在深交所创业板挂牌上市,系山东大学间接控股企业
- Spring Boot+Vue项目打包部署
- SMB服务搭建与访问
- Nginx反向代理http和https