将虚拟机跑在ceph之中

news/2024/11/15 15:22:21/文章来源:https://www.cnblogs.com/fsdstudy/p/18301989

目录
  • openStack对接ceph
    • 1. cinder对接ceph
      • 1.1 ceph创建存储池
      • 1.2 ceph授权
      • 1.3 下发ceph文件
      • 1.4 修改globals文件
      • 1.5 部署cinder
      • 1.6 创建卷
      • null
    • 2. nova对接ceph
      • 2.1 创建卷
      • 2.2 更新cinder权限
      • 2.3 修改globals文件
      • 2.4 创建目录
      • 2.5 升级nova
    • 3. 验证nova
      • 3.1 检查存储池
      • 3.2 创建虚拟机
      • 3.3 创建卷
      • 3.4 虚拟机挂载卷

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单点故障导致虚拟机数据丢失了

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/743683.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C++使用gnuplot-cpp库绘制图像

最近想要对一些时变的变量进行可视化,搜索来搜索去选择了使用gnuplot这个工具。 sudo apt-get install gnuplot sudo apt-get install gnuplot-x11 # 使其支持linux终端这样就安装完gnuplot了。接着可以在命令行中键入gnuplot命令打开gnuplot的交互式环境。由于这里着目于使用…

分支预测,为什么使用 if/else 语句会降低程序效率

在现代 CPU 架构中,分支预测是为了提高指令执行的效率。然而,如果 if/else 语句的分支走向难以预测,就可能会降低程序效率。这是因为当 CPU 执行到 if/else 语句时,它需要猜测接下来要执行的是 if 分支还是 else 分支。如果 CPU 的预测错误,就需要清空已经预取和执行的部分…

Unraid 连接雷迪司 H1000M UPS 教程

前言 上周六租住的小区更换电表,由于本人未注意贴在楼下的通知,直到断电时往去楼下咨询更换电表的工作人员才知晓通知已经提前一周下达。强制断电对 NAS 的硬盘影响是致命的,于是当机立断购入了雷迪司的这款 NAS 备用电源。选择这款备用电源的原因主要是便宜,Unraid 和 The…

JavaWeb开发基础Servlet简介

Servlet是什么?现在的Java Web开发,很少直接接触到Servlet。在Spring项目中,Spring Boot基于Spring Framework,简化了Spring应用程序开发,Spring Framework是一个全面的Java应用程序框架,其中包含Spring MVC模块,Spring MVC封装了Servlet,以实现Web功能。Servlet不属于…

Pictures

本文来自博客园,作者:haozexu,转载请注明原文链接:https://www.cnblogs.com/haozexu/p/18301944

万字长文:Go 语言流行 ORM 框架 GORM 使用详解

万字长文:Go 语言流行 ORM 框架 GORM 使用详解 原创 江湖十年 Go编程世界 2024年05月18日 08:41 浙江 4人听过GORM 是 Go 语言中最受欢迎的 ORM 库之一,它提供了强大的功能和简洁的 API,让数据库操作变得更加简单和易维护。本文将详细介绍 GORM 的常见用法,包括数据库连接、…

搭建一个javaweb项目的准备流程

搭建一个javaweb项目的准备流程 以所学系统项目为例:1src\main\java\com\utils 1.1tools: DruidTools.java ​ 需要在lib中加入druid-xx-xx.jar包代码展示 package com.utils;import com.alibaba.druid.pool.DruidDataSourceFactory;import javax.sql.DataSource; import j…

VulnHub-TR0LL: 1靶场实操

本文是对Vulnhub中的Tr0ll:1靶机实操TR0LL: 1靶场实操 靶场信息下载后使用vm打开即可TR0LL1靶场地址:https://www.vulnhub.com/entry/tr0ll-1,100/ 靶场创建时间:2014年8月14日 靶场描述:Tr0ll 的灵感来自于 OSCP 实验室内对机器的不断拖钓。目标很简单,获取 root 权限并从…

申请Lets Encrypt免费SSL证书

Lets Encrypt是一个免费的、开源的、自动化的证书颁发机构(CA),它的出现极大地推动了HTTPS的普及,为互联网的安全做出了巨大的贡献。 通过来此加密网站可以免费申请Lets Encrypt证书。 Lets Encrypt免费SSL证书申请步骤 1. 登录来此加密网站,输入域名,可以勾选泛域名和包…

暑假第一周周报

这周除了个人赛外,还进行了线段树、数状数组的练习。刚开始训练的时候,对线段数和数状数组是缺乏理解,感觉非常非常难,但随着做了越来越多的题。感觉现在是掌握了其中一部分。刚开始学线段树,其中的懒标记感觉不是太会,于是就网上找了一些资料,把那个懒标记的相关知识点…

电影《抓娃娃》迅雷高清版下载[AVI/3.89GB/HD]BT完整版百度云资源

引言电影《抓娃娃》于2024年7月16日在中国大陆上映,由闫非、彭大魔执导,沈腾、马丽领衔主演。这部影片不仅延续了开心麻花团队一贯的喜剧风格,更在幽默与诙谐之中深刻探讨了家庭教育与个人成长的主题。本文将从剧情简介、角色分析、导演手法、主题探讨等方面,对《抓娃娃》进…