openstack运维实战系列(十八)nova与ceph结合

1. 背景说明

   nova负责虚拟机的生命周期管理,包括创建,删除,重建,开机,关机,重启,快照等,作为openstack的核心,nova负责IaaS中计算重要的职责,其中nova的存储格外重要,默认情况下,nova将instance的数据存放在/var/lib/nova/instances/%UUID目录下,使用本地的存储空间。使用这种方式带来的好处是:简单,易实现,速度快,故障域在一个可控制的范围内。然而,缺点也非常明显:compute出故障,上面的虚拟机down机时间长,没法快速恢复,此外,一些特性如热迁移live-migration,虚拟机容灾nova evacuate等高级特性,将无法使用,对于后期的云平台建设,有明显的缺陷。

2.关于分布式存储

使用openstack时,是否使用分布式文件系统,是一个非常值得思考和深思的问题,使用本地的优点非常明显,同时带来的缺点也显而易见,使用分布式存储,技术上的空白和技术上的难度,也是值得思考的一个问题。同时,分布式存储又改如何选择,应该选择简单的gluserfs还是呼声较高的ceph,这些都是构建云平台需要考虑的地方,同时openstack和ceph都存在一些坑,需要在技术上有足够的积累底蕴才能够控制起来。如果有需要通过openstack在生产环境下构建云平台,我建议初期使用本地的存储,充分利用KVM和本地文件系统的稳定,性能,后续有足够的技术可以逐步灰度至分布式存储glusterfs或者ceph中。建议使用ceph,如果基于技术层面的考虑,可以考虑使用glusterfs,glusterfs以其简单,易管理。

3.nova与ceph结合

1、ceph中创建存储池pool

[[email protected]_10_1_2_230 ~]# ceph osd pool create vms 128    #创建一个pools,名字为vms,128个pg
pool ‘vms‘ created

[[email protected]_10_1_2_230 ~]# ceph osd lspools                #查看pools创建的情况
0 rbd,1 images,2 vms,
[[email protected]_10_1_2_230 ~]# ceph osd pool stats
pool rbd id 0
  nothing is going on

pool images id 1
  nothing is going on

pool vms id 2
  nothing is going on

2、nova-compute节点安装和配置客户端

[[email protected]_10_1_2_232 ~]# yum install python-rbd ceph -y     #安装客户端包
[[email protected]_10_1_2_230 ~]# scp  /etc/ceph/ceph.conf  [email protected]:/etc/ceph/ceph.conf #拷贝ceph配置文件

3、配置ceph认证,让nova用户能够访问vms池、images池

[[email protected]_10_1_2_230 ~]# ceph auth get-or-create client.nova mon ‘allow r‘ osd ‘allow class-read object_prefix rbd_children, allow rwx pool=vms, allow rwx pool=images‘                       
[client.nova]
        key = AQBLXqpWB8HsChAA6hGUBT5JNrFGD116uy+nmg==
      
#查看ceph的认证信息
[[email protected]_10_1_2_230 ~]# ceph auth list
installed auth entries:

osd.0
        key: AQDsx6lWYGehDxAAGwcYP9jDvH2Zaa8JlGwj1Q==
        caps: [mon] allow profile osd
        caps: [osd] allow *
osd.1
        key: AQD1x6lWQCYBERAAjIKO1LVpj8FvVefDvNQZSA==
        caps: [mon] allow profile osd
        caps: [osd] allow *
client.admin
        key: AQCexqlWQL6OGBAA2v5LsYEB5VgLyq/K2huY3A==
        caps: [mds] allow
        caps: [mon] allow *
        caps: [osd] allow *
client.bootstrap-mds
        key: AQCexqlWUMNRMRAAZEp/UlhQuaixMcNy5d5pPw==
        caps: [mon] allow profile bootstrap-mds
client.bootstrap-osd
        key: AQCexqlWQFfpJBAAfPCx4sTLNztBESyFKys9LQ==
        caps: [mon] allow profile bootstrap-osd
client.bootstrap-rgw
        key: AQAR7alWok0SGhAAFtOo0PFsZuVzczMvJox1Wg==
        caps: [mon] allow profile bootstrap-rgw
client.glance
        key: AQAl76lWHMySHxAANTfXv3JQ70GCEBOZI5abcQ==
        caps: [mon] allow r
        caps: [osd] allow class-read object_prefix rbd_children, allow rwx pool=images
client.nova
        key: AQBLXqpWB8HsChAA6hGUBT5JNrFGD116uy+nmg==
        caps: [mon] allow r
        caps: [osd] allow class-read object_prefix rbd_children, allow rwx pool=vms, allow rwx pool=images    #添加了nova用户的认证信息

4、将ceph认证的key拷贝至计算节点

a、查看client.nova的key
[[email protected]_10_1_2_230 ~]# ceph  auth get-or-create client.nova
[client.nova]
        key = AQBLXqpWB8HsChAA6hGUBT5JNrFGD116uy+nmg==

b、将key拷贝至远端
[[email protected]_10_1_2_230 ~]# scp  ceph.client.nova.kering  [email protected]:/etc/ceph/
ceph.client.nova.kering  

c、生成nova临时的key

[[email protected]_10_1_2_230 ~]# ceph auth get-key client.nova | ssh [email protected] tee client.nova.key

5、计算节点的libvirt使用ceph的key

a、生成uuid号
[[email protected]_10_1_2_232 ~]# uuidgen 
0d154ad2-ec21-4200-952f-7551503da8a1

b、生成加密文件
vim secret.xml

<secret ephemeral=‘no‘ private=‘no‘>
        <uuid>0d154ad2-ec21-4200-952f-7551503da8a1</uuid>
        <usage type=‘ceph‘>
                <name>client.cinder secret</name>
        </usage>
</secret>

c、加载加密文件
[[email protected]_10_1_2_232 ~]# virsh secret-define --file secret.xml 
Secret 0d154ad2-ec21-4200-952f-7551503da8a1 created

d、配置libvirt加密,使用client.nova.key
[[email protected]_10_1_2_232 ~]# virsh secret-set-value --secret 0d154ad2-ec21-4200-952f-7551503da8a1 --base64 $(cat /root/client.nova.key) 
Secret value set

e、查看libvirt定义的key
[[email protected]_10_1_2_232 ~]# virsh secret-list
UUID                                 Usage
-----------------------------------------------------------
0d154ad2-ec21-4200-952f-7551503da8a1 Unused
时间: 2024-10-20 16:09:27

openstack运维实战系列(十八)nova与ceph结合的相关文章

openstack运维实战系列(五)之nova quota调整

1. 前言     安装完openstack之后,为了对资源的限制,openstack内置了几种配额机制:nova计算资源的配额,cinder存储资源的配额,neutron网络资源的配额,防止资源的分过分配,默认的quota配置很低,比如nova默认只允许建立10个instance.未能能够正常使用openstack系统资源,需要调整quota的配置.本文主要讲述nova的配额修改,关于cinder和neutron的配额修改,请参考后续的的博文. 2. nova默认的配额 nova默认的配额定义

openstack运维实战系列(十二)之nova aggregate资源分组

1. 背景说明    openstack设计时的宗旨是能够为企业提供大规模的云计算服务,包括计算,存储,网络等资源,以服务的形式交付给用户,在一个非常大的环境中,需要将openstack的资源划分,openstack nova支持三种划分的方式:Region区域,Zone空间和Aggregate分组,其中Region是指一个地区或者地域,如可以将中国划分为:华南地区,华中地区,东北地区,西南地区:Zone则可以按照机房的形式来划分,如北京兆维机房为一个Zone,北京鲁谷机房为另外一个Zone:A

openstack运维实战系列(十七)之glance与ceph结合

1. 需求说明 glance作为openstack中image服务,支持多种适配器,支持将image存放到本地文件系统,http服务器,ceph分布式文件系统,glusterfs和sleepdog等开源的分布式文件系统上,本文,通过将讲述glance如何和ceph结合. 目前glance采用的是本地filesystem的方式存储,存放在默认的路径/var/lib/glance/images下,当把本地的文件系统修改为分布式的文件系统ceph之后,原本在系统中镜像将无法使用,所以建议当前的镜像删除

openstack运维实战系列(十三)之glance更改路径引发的&quot;血案&quot;

1. 背景说明 glance在openstack中负责镜像相关的服务,支持将运行的虚拟机转换为快照,镜像和快照都存储在glance中,glance的后端支持多种存储方式,包括本地的文件系统,http,glusterfs,ceph,swift等等. 默认情况下,glance采用本地文件系统的方式存储image,存储的路径为/var/lib/glance/images,随着时间的推移,当镜像越来越多的时候,根目录的空间将会越来越大,所以对于glance的路径来说,需要提前做好规划和准备,如划分一个单

openstack运维实战系列之keystone用户建立(一)

1. 前言 在生产环境中,使用openstack已经有1年多的时间了,苦于一直没有时间,加上工作带来的懒惰,一直迟迟没有对openstack方面的知识做个总结,趁着年底,把过去一年多在生产环境中所遇到的一些常见运维操作做个总结.需要说明的是,相关的操作,基本都建立在openstack的官方文档和帮助,所以最好的方式莫过于看官方文档,此处只作为抛砖引玉之用,望须知. 2. 关于keystone keystone是openstack中负责认证授权的服务,主要负责两方面的工作:1. 用户认证授权,2.

openstack运维实战系列(二十)之neutron创建网络并指定vlan号码

1. 背景说明   neutron在openstack中负责instance的网络,如虚拟机内部网络,虚拟机外部网络等,和实体网络相类似,openstack中的网络也存在路由器router,交换机switch,网络network,子网subnet,端口port等概念,这些功能都有neutron来完成,neutron由有个不同的插件plugins组成,如二层插件neutron-openvswitch-agent,三层插件neutron-l3-agent,动态地址分配neutron-dhcp-age

openstack运维实战系列(八)之glance镜像上传

1. 前言 在openstack中,glance负责image,即镜像相关的服务,镜像是一个已经打包好的文件,内置有操作系统和预先部署好的软件.基于image创建虚拟机,在openstack中是以backing file的形式创建的,即新建的虚拟机和镜像文件之间建立一个连接,相关的内容,后续以博客的形式呈现.本文以最简单的镜像上传为例,演示在openstack中制作完镜像之后,如何上传到openstack云环境中. 2. 通过glance操作 获取镜像,查看镜像信息 [[email protec

openstack运维实战系列(九)之cinder与glusterfs结合

1. 概述     cinder作为openstack的快存储服务,为instance提供永久的volume服务,cinder作为一种可插拔式的服务,能够支持各种存储类型,包括专业的FC存储,如EMC,NetApp,HP,IBM,huawei等商场的专业存储服务器,存储厂商只要开发对应的驱动和cinder对接即可:此外,cinder还支持开源的分布式存储,如glusterfs,ceph,sheepdog,nfs等,通过开源的分布式存储方案,能够达到廉价的IP-SAN存储.本文以glusterfs

openstack运维实战系列(六)之neutron配额调整

1. 前言   neutron在安装配置完成之后,openstack为了实现对所有tenant对网络资源的使用,针对neutron设置有专门的配额,以防止租户使用过多的资源,而对其他的tenant造成影响.和nova的quota相类似,neutron也使用单独的一个驱动来实现网络neutron的配额控制. 2. neutron默认的配额     neutron默认的配额针对network,port,router,subnet,floatingip做了配额方面的限定,参考neutron的配置文件,