openStack对接ceph

在前面,我们只是将glance对接到了ceph,也就是只有镜像的存储在ceph上的,如果nova的计算节点挂掉了,那么运行在这个上面的虚拟机的数据也就随之丢失了,所以我们也可以将nova虚拟机的数据也存储在ceph上,包括cinder提供的卷也是可以对接的,接下来我们就来看看如何操作

1. cinder对接ceph

配置cinder与ceph集成,需要同步配置nova与ceph集成,使用cinder相同的ceph帐号,否则nova无权限访问cinder在ceph上创建的卷

由于我们之前使用kolla安装openstack的时候并没有让他安装cinder组件,所以我们现在需要修改配置文件,来让他部署cinder组件,并且ceph需要创建存储池

1.1 ceph创建存储池

在ceph上操作,由于我们需要开启cinder的卷备份,所以我们需要2个存储池,一个是数据池volumes,另一个是备份池backups

[root@ceph ~]# ceph osd pool create volumes
pool 'volumes' created
[root@ceph ~]# ceph osd pool application enable volumes rbd
enabled application 'rbd' on pool 'volumes'
[root@ceph ~]# ceph osd pool create backups
pool 'backups' created
[root@ceph ~]# ceph osd pool application enable backups rbd
enabled application 'rbd' on pool 'backups'
[root@ceph ~]# rbd pool init volumes
[root@ceph ~]# rbd pool init backups

1.2 ceph授权

因为是2个池,所以我们需要给到2个用户来操作,不要使用一个用户能够直接操作这2个池

[root@ceph ceph]# ceph auth get-or-create client.cinder mon 'profile rbd' osd 'profile rbd pool=volumes' -o /etc/ceph/ceph.client.cinder.keyring
[root@ceph ceph]# ceph auth get-or-create client.cinder-backups mon 'profile rbd' osd 'profile rbd pool=backups' -o /etc/ceph/ceph.client.cinder-backups.keyring

1.3 下发ceph文件

我们需要将ceph的配置文件以及用户的认证文件发送到部署节点,部署节点必须提前创建好目录

# 部署节点创建目录
[root@openstack01 ~]# mkdir /etc/kolla/config/cinder/{cinder-backup,cinder-volume} -p

在部署节点上的目录结构是这样的

[root@openstack01 cinder]# tree
.
├── cinder-backup
│   ├── ceph.client.cinder-backups.keyring
│   ├── ceph.client.cinder.keyring
│   └── ceph.conf
└── cinder-volume
├── ceph.client.cinder.keyring
└── ceph.conf

注意,一定要将这些文件里面的缩进给删掉或者替换成空格,不然会报错!

ceph的工作就做完了,接下来我们回到部署节点

1.4 修改globals文件

[root@openstack01 ~]# vim /etc/kolla/globals.yml
ceph_cinder_user: "cinder"
ceph_cinder_keyring: "client.{{ ceph_cinder_user }}.keyring"
ceph_cinder_pool_name: "volumes"
ceph_cinder_backup_user: "cinder-backup"
ceph_cinder_backup_keyring: "client.{{ ceph_cinder_backup_user }}.keyring"
ceph_cinder_backup_pool_name: "backups"
enable_cinder: "yes"
enable_cinder_backup: "yes"
cinder_backend_ceph: "yes"
cinder_backup_driver: "ceph"

1.5 部署cinder

(kolla) [root@openstack01 ~]# kolla-ansible -i /etc/kolla/multinode -t cinder deploy

因为我们之前没有部署cinder,所以这里的指令是cinder,如果已经部署了要修改配置文件,那么这里就是upgrade,接下来等待cinder部署完毕

1.6 创建卷

(kolla) [root@openstack01 ~]# openstack volume create --size 10 volume01
(kolla) [root@openstack01 ~]# openstack volume list
+-------------------------------+----------+-----------+------+-------------+
| ID | Name | Status | Size | Attached to |
+-------------------------------+----------+-----------+------+-------------+
| c1983d42-8897-4cef- | volume01 | available | 10 | |
| bf53-02bdc57b5855 | | | | |
+-------------------------------+----------+-----------+------+-------------

卷可以正常创建,但是创建出来的卷不可以被nova的虚拟机挂载,因为nova并没有访问ceph的权限,所以我们现在需新用户的权限,需要说明的是,nova组件与cinder组件使用的是同一个用户,所以我们并不用新创建用户,只需要对cinder的用户重新授权就可以了

2. nova对接ceph

因为nova目前无法使用卷,我们现在开始用nova对接ceph,一并让虚拟机的数据直接存储在ceph上,并且可以使用卷

2.1 创建卷

[root@ceph ~]# ceph osd pool create vms
pool 'vms' created
[root@ceph ~]# ceph osd pool application enable vms rbd
enabled application 'rbd' on pool 'vms'
[root@ceph ~]# rbd pool init vms

2.2 更新cinder权限

nova与cinder使用同一个用户

[root@ceph ~]# ceph auth caps  client.cinder  mon 'profile rbd' osd 'profile rbd pool=volumes, profile rbd pool=vms'

直接更新就可以了,不用将认证文件传过去,因为key并没有变,只是权限变了而已

2.3 修改globals文件

(kolla) [root@openstack01 ~]# vim /etc/kolla/globals.yml
ceph_nova_keyring: "{{ ceph_cinder_keyring }}"
ceph_nova_user: "{{ ceph_cinder_user }}"
ceph_nova_pool_name: "vms"
nova_backend_ceph: "yes"

2.4 创建目录

(kolla) [root@openstack01 ~]# mkdir /etc/kolla/config/nova
(kolla) [root@openstack01 ~]# cd /etc/kolla/config/nova
(kolla) [root@openstack01 nova]# scp ../cinder/cinder-volume/* .

2.5 升级nova

(kolla) [root@openstack01 nova]# kolla-ansible -i /etc/kolla/multinode -t nova upgrade

等待他完成部署

3. 验证nova

3.1 检查存储池

现在我们来验证nova虚拟机的根磁盘文件是否存储在ceph的vms池上

[root@ceph ~]# rbd ls vms
[root@ceph ~]#

现在在ceph上是没有数据在vms池的,接下来我们创建虚拟机

3.2 创建虚拟机

(kolla) [root@openstack01 ~]# openstack server create ecs01 --flavor m1.tiny --image cirros --network demo-net
(kolla) [root@openstack01 ~]# openstack server list
+-------------------+-------+--------+-------------------+--------+---------+
| ID | Name | Status | Networks | Image | Flavor |
+-------------------+-------+--------+-------------------+--------+---------+
| a2d3bfaf-62f8-435 | ecs01 | ACTIVE | demo- | cirros | m1.tiny |
| a-b9bc-35979de58e | | | net=10.0.0.112 | | |
| 00 | | | | | |
+-------------------+-------+--------+-------------------+--------+---------

现在虚拟机已经正常运行了,接下来回到ceph节点查看池

[root@ceph ~]# rbd ls vms
a2d3bfaf-62f8-435a-b9bc-35979de58e00_disk

看到了吗?咱们刚刚创建的虚拟机的ID是a2d3啥的,现在ceph的vms存储池里面就有一个这样的数据,后缀是disk,接下来我们创建一个卷并挂载给虚拟机

3.3 创建卷

(kolla) [root@openstack01 ~]# openstack volume create --size 5 volume02

卷创建出来之后我们将他挂载给ecs01

3.4 虚拟机挂载卷

(kolla) [root@openstack01 ~]# openstack server add volume ecs01 volume02
+-----------------------+--------------------------------------+
| Field | Value |
+-----------------------+--------------------------------------+
| ID | 79bb70bf-1cb4-42fc-8d9a-99c9cf940dd2 |
| Server ID | a2d3bfaf-62f8-435a-b9bc-35979de58e00 |
| Volume ID | 79bb70bf-1cb4-42fc-8d9a-99c9cf940dd2 |
| Device | /dev/vdb |
| Tag | None |
| Delete On Termination | False |
+-----------------------+--------------------------------------+

通过他的回显,我们可以得知他将volume映射到了ecs的/dev/vdb,我们来到图形界面看看是不是有这么一个设备了

现在我们的open stack的数据基本上已经全部存储到了ceph集群中,这样就不会担心openstack单点故障导致虚拟机数据丢失了

将虚拟机跑在ceph之中的更多相关文章

  1. 使用虚拟机CentOS7部署CEPH集群

    第1章   CEPH部署 1.1  简单介绍 Ceph的部署模式下主要包含以下几个类型的节点 Ø CephOSDs: A Ceph OSD 进程主要用来存储数据,处理数据的replication,恢复 ...

  2. 如何在Linux环境下用虚拟机跑Windows!

    文章目录 #0x0 Windows #0x1 安装虚拟机 #0x10 下载: #0x11 安装: #0x2 安装虚拟机windows #0x20 下载镜像 #0x21 安装镜像 #0x3 使用Wind ...

  3. pycharm在虚拟机跑深度学习Mac

    1.在PyCharm里配置部署环境 打开PyCharmTools > Deployment > Configuration, 新建一个SFTP服务器,名字自己取: 输入如下图配置,注意这里 ...

  4. Openstack针对nova,cinder,glance使用ceph的虚拟机创建机制优化

     今天在开源中国社区看到有例如以下一个问题: 已经成功把ceph作为cinder和 glance的后端,可是假设作为nova的后端,虚拟机启动速度非常慢,网上查了一下是由于openstack创建虚 ...

  5. CEPH经常出现slow request的排查解决

    现象: 通过ceph -w日志经常发现有request blocked的问题(如果虚拟机系统跑在ceph上时,就会发现严重的卡顿现象) 排查: 1.通过dstat未发现有明显的瓶颈 (dstat -t ...

  6. 《深入理解Java虚拟机》-----第4章 虚拟机性能监控与故障处理工具

    理论总是作为指导实践的工具,能把这些知识应用到实际工作中才是 我们的最终目的. 给一个系统定位问题的时候,知识.经验是关键基础,数据是依据,工具是运用知识处理数据的手段.这里说的数据包括:运行日志.异 ...

  7. 《深入理解Java虚拟机》虚拟机性能监控与故障处理工具

    上节学习回顾 从课本章节划分,<垃圾收集器>和<内存分配策略>这两篇随笔同属一章节,主要是从理论+实验的手段来讲解JVM的内存处理机制.好让我们对JVM运行机制有一个良好的概念 ...

  8. OpenStack 加入新的节点,创建虚拟机失败的问题

    最开始做OpenStack的时候,由于只是为了部署测试用,因此将所有的部分都装在一台单网卡的机器上,费了九牛二虎之力终于部署成功,其中最主要的两块问题出现在以下两个方面: 1:nova.neutron ...

  9. win10系统搭建虚拟机:VMware Workstation Player 12环境+Ubuntu Kylin 16.04 LTS系统

    笔者小白一枚,其实连虚拟机是个啥都不知道...实属惭愧,介于此所以今天倒腾了一下花了一上午就已经搭建好一个VMware Workstation Player 12免费版的,很哈皮,于是赶紧分享一下. ...

  10. VMware中某个虚拟机卡死,单独关闭某个虚拟机的办法

    在虚拟机中部署ceph时,其中一个虚拟机突然意外卡死,网络搜索到解决的办法,特此整理如下: 一.找到卡死虚拟机的安装目录,在安装目录下找到VMware这个文本文档 二.打开该文本文档,在文档中查找pi ...

随机推荐

  1. MQTT 实践总结

    QMQX 文档:https://www.emqx.io/docs/zh/latest/ MQTT 入门:https://www.emqx.com/zh/mqtt-guide 通过案例理解 MQTT 主 ...

  2. 显示锁之ReentrantLock

    ReentrantLock显示锁 在Java 1.5之前,协调对共享对象的访问可以使用的机制只有synchronized和volatile两种.Java1.5增加了一种新的机制:ReentrantLo ...

  3. BigDecimal类的基本使用

    概述 java在java.math包中提供的API类BigDecimal,用来对超过16位有效位的数进行精确的运算.双精度浮点型变量double可以处理16位有效数.在实际应用中,需要对更大或者更小的 ...

  4. 一文带你了解.NET能做什么?

    前言 在DotNetGuide技术社区微信交流群经常看到有小伙伴问:.NET除了能写桌面应用和Web应用还能做什么?今天大姚将通过本篇文章来简单讲讲.NET能做哪些开发,对.NET感兴趣的小伙伴也可以 ...

  5. CSS——鼠标样式

    在浏览网页的过程中,当我们将鼠标移动到一些元素上时,鼠标的样式会发生相应的改变,例如当鼠标指向文本时,鼠标的样式会变成类似大写字母I的样子:当鼠标指向链接时,鼠标会变成一个小手的形状等. 除了这些默认 ...

  6. 【OpenVINO™】在C#中使用 OpenVINO™ 部署 YOLOv10 模型实现目标

      最近YOLO家族又添新成员:YOLOv10,YOLOv10 提出了一种一致的双任务方法,用于无nms训练的YOLOs,它同时带来了具有竞争力的性能和较低的推理延迟.此外,还介绍了整体效率-精度驱动 ...

  7. Android 13 - Media框架(8)- MediaExtractor

    关注公众号免费阅读全文,进入音视频开发技术分享群! 上一篇我们了解了 GenericSource 需要依赖 IMediaExtractor 完成 demux 工作,这一篇我们就来学习 android ...

  8. golang errgroup 的超时检测

    errgroup 的超时检测通常是一种事后得到结果的方式. errgroup本身并不直接支持超时控制,而是依赖于与之关联的context.Context来实现超时和取消功能. 当context超时时, ...

  9. itest work 开源接口测试&敏捷测试管理平台 9.5.0 GA_u1,优化及修复关键 BUG

    (一)itest work 简介 itest work (爱测试)  一站式工作站让测试变得简单.敏捷,"好用.好看,好敏捷" ,是itest wrok 追求的目标.itest w ...

  10. kettle从入门到精通 第四十七课 ETL之kettle mongo output 写入

    1.上一节课我们学习了mongo input读取步骤,本节课我们一起学习下mongo out 写入步骤,该步骤可以将数据写入到mongo中,如下图所示. 2. 配置mongo连接,有两种方式,如截图所 ...