一. ceph 实现与openstack(kilo)集成

注意: 不同的版本配置文件稍有不同,请参考官方文档:

http://docs.ceph.com/docs/master/rbd/rbd-openstack/#any-openstack-version

环境说明:

192.168.10.95  glance (控制节点,glance cinder)

192.168.10.99  network01

192.168.10.101   compute01


1. 安装ceph客户端

安装Ceph客户端

apt-get install python-ceph -y

apt-get install ceph-common -y


2. 创建pool:

ceph osd pool create datastore 512

rados lspools

3. 创建用户:

ceph auth get-or-create client.kilo mon 'allow r' osd 'allow class-read object_prefix rbd_children,allow rwx pool=datastore'

ceph auth get-or-create client.kilo | ssh 192.168.10.95 sudo tee /etc/ceph/ceph.client.kilo.keyring


ceph auth get-or-create client.kilo2 mon 'allow r' osd 'allow class-read object_prefix rbd_children,allow rwx pool=datastore2'

ceph auth get-or-create client.kilo2 | ssh 192.168.10.95 sudo tee /etc/ceph/ceph.client.kilo2.keyring


ssh 192.168.10.95 sudo chmod +r /etc/ceph/ceph.client.kilo.keyring

将/etc/ceph/ceph.conf文件拷贝到openstack 节点上:

ssh 192.168.10.95 sudo tee /etc/ceph/ceph.conf < /etc/ceph/ceph.conf


ceph与glance

配置glance-api.conf文件

具体配置要在ceph官网上找,不同版本的openstack配置位置可能不相同

http://docs.ceph.com/docs/master/rbd/rbd-openstack/#configure-openstack-to-use-ceph

[DEFAULT]

default_store = rbd

[glance_store]

stores = rbd

rbd_store_ceph_conf = /etc/ceph/ceph.conf

rbd_store_user = kilo  (创建的ceph用户) 

rbd_store_pool = datastore (创建的池)

show_image_direct_url = True

重启glance服务:

service glance-api restart

ervice glance-registry restart

上传一个镜像,测试ceph是否配置成功作为glance后端使用:

参考上边glance使用

查看ceph中datastore pool的列表

rados --pool=datastore ls


###############################################

vi /etc/glance/glance-api.conf

[DEFAULT]

show_image_direct_url = True

[glance_store]

stores = rbd

default_store = rbd

rbd_store_ceph_conf = /etc/ceph/ceph.conf

rbd_store_user = kilo

rbd_store_pool = datastore


在glance节点修改

脚本方式修改:

crudini --set /etc/glance/glance-api.conf DEFAULT show_image_direct_url True


crudini --set /etc/glance/glance-api.conf glance_store stores rbd

crudini --set /etc/glance/glance-api.conf glance_store default_store rbd

crudini --set /etc/glance/glance-api.conf glance_store rbd_store_ceph_conf /etc/ceph/ceph.conf

crudini --set /etc/glance/glance-api.conf glance_store rbd_store_user kilo

crudini --set /etc/glance/glance-api.conf glance_store rbd_store_pool datastore

###############################################





创建nova,cinder使用的秘钥

一. 在openstack计算节点上生成一个uuid:

root@ubuntu:~# uuidgen 

9fa61a4a-da28-4b24-a319-52e6dee46660

创建一个临时文件

vi secret.xml

<secret ephemeral='no' private='no'>

<uuid>9fa61a4a-da28-4b24-a319-52e6dee46660</uuid>

<usage type='ceph'>

<name>client.kilo secret</name>

</usage>

</secret>


在计算节点:

创建的 secret.xml 文件创建密钥:

virsh secret-define --file secret.xml 

Secret 9fa61a4a-da28-4b24-a319-52e6dee46660 created



安装Ceph客户端

apt-get install python-ceph -y

apt-get install ceph-common -y

mkdir /etc/ceph

在ceph服务器上

ceph auth get-or-create client.kilo2 | ssh 192.168.10.101 sudo tee /etc/ceph/ceph.client.kilo2.keyring

设定 libvirt 使用上面的密钥:


virsh secret-set-value --secret cf133036-7099-43e3-b60f-dc487c72d3d0 --base64 AQBmpBBXWIB0FxAAPWDi60w6jImcwuzWcZAvbQ== && rm ceph.client.kilo2.keyring secret.xml 

查看秘钥

virsh secret-list



ceph与cinder

配置cinder.conf配置文件

[DEFAULT]

volume_driver = cinder.volume.drivers.rbd.RBDDriver

rbd_pool = datastore

rbd_ceph_conf = /etc/ceph/ceph.conf

rbd_flatten_volume_from_snapshot = false

rbd_max_clone_depth = 5

rbd_user = kilo 

glance_api_version = 2

rbd_secret_uuid = cf133036-7099-43e3-b60f-dc487c72d3d0

重启服务

service cinder-api restart

service cinder-scheduler restart

service cinder-volume restart

测试cinder是否使用ceph

创建卷cephVolume:

cinder create --display-name cephVolume 1

通过cinder list与rados --pool=datastore ls验证cephVolume是否放在cinder上


############################################

vi /etc/cinder/cinder.conf

[DEFAULT]

.......

enabled_backends = ceph


[ceph]

volume_driver = cinder.volume.drivers.rbd.RBDDriver

rbd_pool = datastore2

rbd_ceph_conf = /etc/ceph/ceph.conf

rbd_flatten_volume_from_snapshot = false

rbd_max_clone_depth = 5

rbd_user = kilo2

glance_api_version = 2

rbd_secret_uuid = cf133036-7099-43e3-b60f-dc487c72d3d0


脚本方式修改:

在glance节点:

crudini --set /etc/cinder/cinder.conf DEFAULT enabled_backends ceph



crudini --set /etc/cinder/cinder.conf ceph volume_driver = cinder.volume.drivers.rbd.RBDDriver

crudini --set /etc/cinder/cinder.conf ceph rbd_pool datastore2

crudini --set /etc/cinder/cinder.conf ceph rbd_ceph_conf /etc/ceph/ceph.conf

crudini --set /etc/cinder/cinder.conf ceph rbd_flatten_volume_from_snapshot false

crudini --set /etc/cinder/cinder.conf ceph rbd_max_clone_depth 5

crudini --set /etc/cinder/cinder.conf ceph rbd_user kilo2

crudini --set /etc/cinder/cinder.conf ceph glance_api_version 2

crudini --set /etc/cinder/cinder.conf ceph rbd_secret_uuid cf133036-7099-43e3-b60f-dc487c72d3d0


############################################






ceph与nova

修改计算节点的nova.conf文件

[libvirt]

images_type = rbd

images_rbd_pool = datastore2 

images_rbd_ceph_conf = /etc/ceph/ceph.conf

rbd_user = icehouse 

rbd_secret_uuid = cf133036-7099-43e3-b60f-dc487c72d3d0 

inject_password = false

inject_key = false

inject_partition = -2


#################################################################

在计算节点:


crudini --set /etc/nova/nova.conf libvirt images_type rbd

crudini --set /etc/nova/nova.conf libvirt images_rbd_pool datastore2 

crudini --set /etc/nova/nova.conf libvirt images_rbd_ceph_conf /etc/ceph/ceph.conf

crudini --set /etc/nova/nova.conf libvirt rbd_user icehouse 

crudini --set /etc/nova/nova.conf libvirt rbd_secret_uuid cf133036-7099-43e3-b60f-dc487c72d3d0 

crudini --set /etc/nova/nova.conf libvirt inject_password false

crudini --set /etc/nova/nova.conf libvirt inject_key false

crudini --set /etc/nova/nova.conf libvirt inject_partition -2


#################################################################


重启nova

service nova-compute restart

测试nova是否使用ceph:

在控制台创建虚拟机

nova list

rados --pool=datastore2 ls