经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 数据库/运维 » Linux/Shell » 查看文章
将虚拟机跑在ceph之中
来源:cnblogs  作者:FuShudi  时间:2024/7/15 8:45:23  对本文有异议

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

  1. [root@ceph ~]# ceph osd pool create volumes
  2. pool 'volumes' created
  3. [root@ceph ~]# ceph osd pool application enable volumes rbd
  4. enabled application 'rbd' on pool 'volumes'
  5. [root@ceph ~]# ceph osd pool create backups
  6. pool 'backups' created
  7. [root@ceph ~]# ceph osd pool application enable backups rbd
  8. enabled application 'rbd' on pool 'backups'
  9. [root@ceph ~]# rbd pool init volumes
  10. [root@ceph ~]# rbd pool init backups

1.2 ceph授权

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

  1. [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
  2. [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的配置文件以及用户的认证文件发送到部署节点,部署节点必须提前创建好目录

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

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

  1. [root@openstack01 cinder]# tree
  2. .
  3. ├── cinder-backup
  4.    ├── ceph.client.cinder-backups.keyring
  5.    ├── ceph.client.cinder.keyring
  6.    └── ceph.conf
  7. └── cinder-volume
  8. ├── ceph.client.cinder.keyring
  9. └── ceph.conf

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

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

1.4 修改globals文件

  1. [root@openstack01 ~]# vim /etc/kolla/globals.yml
  2. ceph_cinder_user: "cinder"
  3. ceph_cinder_keyring: "client.{{ ceph_cinder_user }}.keyring"
  4. ceph_cinder_pool_name: "volumes"
  5. ceph_cinder_backup_user: "cinder-backup"
  6. ceph_cinder_backup_keyring: "client.{{ ceph_cinder_backup_user }}.keyring"
  7. ceph_cinder_backup_pool_name: "backups"
  8. enable_cinder: "yes"
  9. enable_cinder_backup: "yes"
  10. cinder_backend_ceph: "yes"
  11. cinder_backup_driver: "ceph"

1.5 部署cinder

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

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

1.6 创建卷

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

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

2. nova对接ceph

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

2.1 创建卷

  1. [root@ceph ~]# ceph osd pool create vms
  2. pool 'vms' created
  3. [root@ceph ~]# ceph osd pool application enable vms rbd
  4. enabled application 'rbd' on pool 'vms'
  5. [root@ceph ~]# rbd pool init vms

2.2 更新cinder权限

nova与cinder使用同一个用户

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

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

2.3 修改globals文件

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

2.4 创建目录

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

2.5 升级nova

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

等待他完成部署

3. 验证nova

3.1 检查存储池

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

  1. [root@ceph ~]# rbd ls vms
  2. [root@ceph ~]#

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

3.2 创建虚拟机

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

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

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

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

3.3 创建卷

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

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

3.4 虚拟机挂载卷

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

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

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

原文链接:https://www.cnblogs.com/fsdstudy/p/18301989

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号