OpenShift 4 - 容器应用备份和恢复
《OpenShift 4.x HOL教程汇总》
说明:本文已经在OpenShift 4.9环境中验证
演示视频
文章目录
- OpenShift API Data Protection(OADP)
- 部署测试应用
- 部署 parkmap 应用
- 部署 MSSQL 应用
- 安装环境
- 安装 velero 客户端
- 安装 MinIO
- 安装OADP
- 对应用进行备份和恢复
- 备份应用
- 恢复应用
- 备份定时
- 参考
OpenShift API Data Protection(OADP)
数据保护可能包括按需备份、计划备份和恢复等操作。这些操作允许集群内的对象被备份到本地或公共云上的存储提供商,并在发生故障或计划维护时从备份中恢复该集群。Red Hat 为此提供了 OpenShift API Data Protection,即OADP。OADP 基于 Velero 开源项目,它为 OpenShift 容器的应用提供了一个灾难恢复和数据保护解决方案。
部署测试应用
部署 parkmap 应用
$ oc apply -f https://raw.githubusercontent.com/liuxiaoyu-git/oadp-operator/master/tests/e2e/sample-applications/parks-app/manifest4.8.yaml
部署 MSSQL 应用
如果 OpenShift 中有空余的 PV 可用,可执行以下命令。
$ oc apply -f https://raw.githubusercontent.com/liuxiaoyu-git/oadp-operator/master/tests/e2e/sample-applications/mssql-persistent/mssql-persistent-template.yaml
如果 OpenShift 中配有 StorageClass,可执行以下命令。注意,请使用已有的 StorageClass 替换下文中的“storageClassName: gp2-csi”。
$ oc apply -f https://raw.githubusercontent.com/liuxiaoyu-git/oadp-operator/master/tests/e2e/sample-applications/mssql-persistent/mssql-persistent-csi-template.yaml
安装环境
安装 velero 客户端
在 https://github.com/vmware-tanzu/velero/releases 查看当前 velero 最新版本。
VERSION=v1.7.1
cd ~/ && curl -OL https://github.com/vmware-tanzu/velero/releases/download/${VERSION}/velero-${VERSION}-linux-amd64.tar.gz
tar -xvf velero-${VERSION}-linux-amd64.tar.gz
PATH=$PATH:~/velero-${VERSION}-linux-amd64
安装 MinIO
- 根据《OpenShift 4 - 部署运行 MinIO 对象存储》在“my-minio”
项目中安装 MinIO 服务,并创建名为“ocp-backup”的 Bucket。 - 执行命令,在 minio-client 项目中云一个 Pod 作为运行 minio-client 的环境。
$ oc new-project minio-client
$ oc apply -f - << EOF
apiVersion: v1
kind: Pod
metadata:name: minio-clientnamespace: minio-client
spec:containers:- name: minio-clientimage: busyboxcommand: [ "/bin/sh", "-c", "while true ; do date; sleep 1; done;" ]restartPolicy: Never
EOF
- 进入部署好的名为 minio-client 的 Pod
$ oc rsh minio-client
- 在 minio-client 中安装 mc,并确认可以通过 http://minio.minio.svc 访问到前面部署的 MinIO 服务。
/ # cd ~
~ # wget https://dl.min.io/client/mc/release/linux-amd64/mc
~ # chmod +x mc
~ # ./mc alias set my-minio http://minio.minio.svc minio minio123
mc: Configuration written to `/root/.mc/config.json`. Please update your access credentials.
mc: Successfully created `/root/.mc/share`.
mc: Initialized share uploads `/root/.mc/share/uploads.json` file.
mc: Initialized share downloads `/root/.mc/share/downloads.json` file.
Added `my-minio` successfully.
~ # ./mc ls my-minio/
[2022-01-07 13:02:41 UTC] 0B ocp-backup/
安装OADP
使用默认配置安装 OADP Operator,Opeartor 会安装到 openshift-adp 项目中。
在 openshift-adp 项目中创建名为 “cloud-credentials” 的 Secret,其中 Key 和 Value 参照以下内容:
[default]
aws_access_key_id=minio
aws_secret_access_key=minio123
或执行以下命令创建 cloud-credentials(需要先将 Secret 的 Value 保存到 “CREDENTIALS_FILE” 中)。
$ oc create secret generic cloud-credentials -n openshift-adp --from-file cloud=<CREDENTIALS_FILE>
- 根据以下 YAML 内容在 openshift-adp 项目中创建 DataProtectionApplication 对象。
apiVersion: oadp.openshift.io/v1alpha1
kind: DataProtectionApplication
metadata:name: example-dpanamespace: openshift-adp
spec:backupLocations:- velero:backupSyncPeriod: 2m0sconfig:profile: defaultregion: minios3ForcePathStyle: 'true's3Url: 'http://minio.minio.svc/'credential:key: minioname: cloud-credentialsdefault: trueobjectStorage:bucket: ocp-backupprefix: veleroprovider: awsconfiguration:restic:enable: truevelero:defaultPlugins:- openshift- awsfeatureFlags:- EnableCSIsnapshotLocations:- velero:config:profile: defaultregion: minioprovider: aws
在 OADP Opeartor 中查看 DataProtectionApplication 对象相关的 Resources,还可在 OpenShift 的 “开发者” 视图中查看部署的资源。
确认在 velero 已经有一个 BackupStorageLocation 对象了。根据名称可以知道,它是根据名为 example-dpa 的 DataProtectionApplication 自动创建的。
$ velero get backup-locations -n openshift-adp
NAME PROVIDER BUCKET/PREFIX PHASE LAST VALIDATED ACCESS MODE DEFAULT
example-dpa-1 aws ocp-backup/velero Available 2022-01-08 03:14:35 +0000 UTC ReadWrite true
对应用进行备份和恢复
备份应用
- 执行命令,针对 parks-app 项目创建一个 名为 parks-app-backup 的 backup。
$ velero backup create parks-app-backup --include-namespaces parks-app -n openshift-adp
Backup request "parks-app-backup" submitted successfully.
Run `velero backup describe parks-app-backup` or `velero backup logs parks-app-backup` for more details.
- 查看 Velero 的 Backup 对象,直到 STATUS 为 Completed。
$ velero get backup -n openshift-adp
NAME STATUS ERRORS WARNINGS CREATED EXPIRES STORAGE LOCATION SELECTOR
parks-app-backup Completed 0 0 2022-01-07 15:37:39 +0000 UTC 29d example-dpa-1 <none>
- 在名为 minio-client 的 Pod 中查看 “my-minio/ocp-backup/velero/backups/parks-app-backup” 已有了备份数据。
~ # ./mc ls my-minio/ocp-backup/velero/backups/parks-app-backup
[2022-01-07 15:38:29 UTC] 29B parks-app-backup-csi-volumesnapshotcontents.json.gz
[2022-01-07 15:38:29 UTC] 29B parks-app-backup-csi-volumesnapshots.json.gz
[2022-01-07 15:38:29 UTC] 12KiB parks-app-backup-logs.gz
[2022-01-07 15:38:29 UTC] 29B parks-app-backup-podvolumebackups.json.gz
[2022-01-07 15:38:29 UTC] 1.1KiB parks-app-backup-resource-list.json.gz
[2022-01-07 15:38:29 UTC] 29B parks-app-backup-volumesnapshots.json.gz
[2022-01-07 15:38:29 UTC] 88KiB parks-app-backup.tar.gz
[2022-01-07 15:38:29 UTC] 2.1KiB velero-backup.json
恢复应用
- 先查看 parks-app 项目中应用用到的 PVC。
$ oc get pvc -n parks-app
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE
mongodb-data-claim Bound pv0029 100Gi RWO,ROX,RWX 44s
- 删除 parks-app 测试应用的项目模拟灾难。
$ oc delete project parks-app
- (可选)将用到的 backup storage location 对象的 accessMode 属性设为 “ReadOnly”,这样可以保护在恢复期间不能对现有备份进行删除或修改。
$ oc patch backupstoragelocation example-dpa-1 \--namespace parks-app \--type merge \--patch '{"spec":{"accessMode":"ReadOnly"}}'
- 使用名为 parks-app-up 的备份创一个建名为 parks-app-restore 的 restore 。
$ velero create restore parks-app-restore --from-backup parks-app-backup -n openshift-adp
Restore request "parks-app-restore" submitted successfully.
Run `velero restore describe parks-app-restore` or `velero restore logs parks-app-restore` for more details.
- 查看 velero 的 Restore 对象,直到 STATUS 为 Completed。
$ velero get restore -n openshift-adp
NAME BACKUP STATUS STARTED COMPLETED ERRORS WARNINGS CREATED SELECTOR
parks-app-restore parks-app-backup Completed 2022-01-07 16:30:21 +0000 UTC 2022-01-07 16:30:24 +0000 UTC 0 3 2022-01-07 16:30:21 +0000 UTC <none>
- 确认 parks-app 项目和其中的资源又被恢复了。
$ oc get project parks-app
NAME DISPLAY NAME STATUS
parks-app Active
- (可选)将用到的 backup storage location 对象的 accessMode 属性重新设为 “ReadWrite”
$ oc patch backupstoragelocation example-dpa-1 \--namespace parks-app \--type merge \--patch '{"spec":{"accessMode":"ReadWrite"}}'
- 最后查看被恢复 parks-app 项目中应用用到的 PVC,确认和以前用到的 PVC 已经不同了。
$ oc get pvc -n parks-app
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE
mongodb-data-claim Bound pv0020 100Gi RWO,ROX,RWX 44s
备份定时
$ 执行命令可实现定制备份:
velero create schedule parks-app-backup-schedule --schedule="0 7 * * *" --include-namespaces parks-app
备份频率可以使用类似 cron 命令的方法设置上面命令中的 “–schedule” 参数。
Character Position | Character Period | Acceptable Values |
---|---|---|
1 | Minute | 0-59,* |
2 | Hour | 0-23,* |
3 | Day of Month | 1-31,* |
4 | Month | 1-12,* |
5 | Day of Week | 0-6,* |
参考
https://oadp.konveyor.io/getting-started/installation/
https://oadp.konveyor.io/examples/stateful/
https://github.com/konveyor/labs
https://gitlab.consulting.redhat.com/iberia-consulting/inditex/ocs/ocs-procedures/-/blob/master/resources/content/oadp-testing-examples.md
OpenShift 4 - 容器应用备份和恢复相关推荐
- oracle 12c容器数据库备份和恢复,oracle 12c数据库备份与恢复
oracle用得不是很多,但总体用起来也没啥问题,因为大多数时候就是增删查改的操作,这些跟其他数据库也没多大区别.不过当遇到备份和恢复的时候,才发现区别是比较大的,因此留下这篇文章做一个记录,方便以后 ...
- Docker 入门系列(4)- Docker 数据管理(挂载目录、挂载文件、数据卷挂载、数据卷共享、数据卷删除、数据卷容器备份和恢复)
基于底层存储实现,Docker 提供了三种适用于不同场景的文件系统挂载方式:Bind Mount.Volume 和 Tmpfs Mount. Bind Mount 能够直接将宿主操作系统中的目录和文件 ...
- 国内外公有云容器服务备份恢复中文指南
公众号关注 「奇妙的 Linux 世界」 设为「星标」,每天带你玩转 Linux ! 因为业务需求,需要针对自建的集群进行备份和恢复,所以针对国内外友商的容器服务备份恢复方案做了一个简单的调研分析. ...
- 等保数据备份和恢复关键点,这些你该知道!
摘要:随着云计算.大数据.物联网.移动互联网和工业控制信息系统等新兴技术的发展,网络安全需求变得更加繁杂,因此,等保制度应势升级至2.0时代. 随着云计算.大数据.物联网.移动互联网和工业控制信息系统 ...
- linux服务器数据备份到本地硬盘_等保数据备份和恢复关键点,这些你该知道!...
摘要:随着云计算.大数据.物联网.移动互联网和工业控制信息系统等新兴技术的发展,网络安全需求变得更加繁杂,因此,等保制度应势升级至2.0时代. 随着云计算.大数据.物联网.移动互联网和工业控制信息系统 ...
- 2019年Gartner数据中心备份和恢复解决方案魔力象限解读
时隔两年,Gartner关于备份和恢复市场的评测报告姗姗来迟.终于在10月份发布了2019年度的备份和恢复解决方案的魔力象限和评测报告,下面我们第一时间来尝试解读一下这份报告,看看一看当今备 ...
- Kubernetes的ETCD集群备份、恢复
首先,我们使用Kubernetes的都知道,etcd是k8s的核心所在,会记录各个pod的状态信息.所以重要性极为重要. etcd是kubernetes集群极为重要的一块服务,存储了kubernete ...
- K8S之Docker容器的备份和容灾方案
数据安全在当今复杂的IT世界中变得越来越重要,甚至超越了网络安全和信息安全,因为一切企业基本上都是以业务和应用的线上商业发展之道.所以大家变得尤为重视. Docker 是一个开源的应用容器引擎,基于 ...
- 企业级微服务构建-01搭建和使用Maven私有仓库(Nexus)-03备份和恢复
亲历的企业级微服务的完整构建过程-系列文章目录 本人参与了这次的企业级微服务的完整构建,想要记录下来以便以后复习,同时也想分享给小伙伴们,抛砖引玉,欢迎大家提出自己的意见和建议,大家一起探讨一起成长. ...
最新文章
- 车联网,挖掘数据价值
- 对时序逻辑电路采用不同描述方式,ISE综合出来的电路(RTL Schematic)比较(以模5计数器为例)
- stm32中断向量控制器
- Java异常处理——try-with-resource 语法糖
- Android传感器开发详解
- React开发(137):ant design学习指南之form中日期时间处理format时间处理
- Struts2的action中处理JSONP方式提交的中文乱码问题:
- 字符设备驱动基础篇5——驱动如何操控硬件(动静态映射操作LED)
- 一不小心节约了 591 台机器!
- LoadRunner录制第一个脚本Virtual User Generator
- java类型的转换顺序_Java数据类型自动转换的优先顺序
- eclipse adt sdk jdk的关系
- 使用Outlook对邮件进行分类
- python读excel两列为字典_python交换数据的两列,python处理excel数据, python交换...
- 【Rust日报】 2019-05-02
- 全国(大学)高等教育各学科视频教学全集
- 面试云计算工程师岗位经常被问到的40个问题
- 公司中生存奥秘诙谐解说[ZT]
- 环洋市场调研-2021年全球企业估值服务行业调研及趋势分析报告
- 批量下载:斯坦福大学公开课-编程范式,来源:网易公开课
热门文章
- python3.8.4rc1_Python3.8.4rc1 官方正式版
- 擦地机器人测评_iRobot擦地机器人测评:一机在手,脏污不再有!
- java slot_聊聊sentinel的DegradeSlot
- 立体剪纸风新春农历春节PSD分层海报素材
- 在集设海量拍摄配色案例 | 轻松掌握高级感配色,再也不愁没有灵感
- 你在为疯狂圣诞节海报做准备了么?
- UI超实用通用图标素材模板
- java程序中单方法接口通常是,Android面试题1--Java基础之线程(持续更新)
- ZoomIn插件制作(VS2010 + arcObject10.2 )全网应该是唯一的
- 物理层协议:RS-232-C、RS-449、V.35、X.21