本文基于Openstack ocata+Ceph12+centos7
1、创建一个POOL
ceph osd pool create volumes 64
ceph osd pool create images 64
ceph osd pool create vms 64
2、配置OPENSTACK CEPH CLIENTS
环境的准备,需要事先在ceph管理节点到openstack各服务节点间建立起免密钥登录的关系,且需有使用sudo的权限。
安装ceph客户端软件包:
在glance-api,nova-compute, and on the cinder-volume节点:
sudo yum install ceph python-rbd
在OpenStack中运行glance-api, cinder-volume, nova-compute 服务的主机节点,都属于Ceph的客户端。需要配置ceph.conf.
使用以下命令把ceph.conf复制到每个ceph客户端节点:
ssh {your-openstack-server} sudo tee /etc/ceph/ceph.conf </etc/ceph/ceph.conf
3、设置Ceph Client Authentication
如果启用了cephx认证,那么就需要为Nova/Cinder创建一个新用户:
$ceph auth get-or-create client.cinder mon 'allow r' osd 'allow class-read object_prefix rbd_children, allow rwx pool=volumes, allow rwx pool=vms, allow rx pool=images'
$ ceph auth get-or-create client.glance mon 'allow r' osd 'allow class-read object_prefix rbd_children, allow rwx pool=images'
将密钥(client.cinder, client.glance)分发至对应的主机节点,并调整属主权限:
ceph auth get-or-create client.glance | ssh {your-glance-api-server} sudo tee /etc/ceph/ceph.client.glance.keyring
ssh {your-glance-api-server} sudo chown glance:glance /etc/ceph/ceph.client.glance.keyring
ceph auth get-or-create client.cinder | ssh {your-volume-server} sudo tee /etc/ceph/ceph.client.cinder.keyring
ssh {your-cinder-volume-server} sudo chown cinder:cinder /etc/ceph/ceph.client.cinder.keyring
也可生成keyring,使用scp拷贝到其他节点
ceph auth get-or-create client.glance > /etc/ceph/ceph.client.glance.keyring
ceph auth get-or-create client.cinder > /etc/ceph/ceph.client.cinder.keyring
运行nova-compute的节点需要使用cinder密钥:
ceph auth get-or-create client.cinder | ssh {your-nova-compute-server} sudo tee /etc/ceph/ceph.client.cinder.keyring
libvirt同样也要使用client.cinder密钥:
Libvirt进程在从Cinder挂载一个块设备时,需要使用该密钥访问Ceph存储集群。
先要在运行nova-compute的节点上创建一个密钥的临时拷贝:
ceph auth get-key client.cinder | ssh {your-compute-node} tee client.cinder.key
然后登录到compute节点上,将密钥增加到libvirt配置文件中并删除上面的临时文件:
cat > secret.xml <<EOF
<secret ephemeral='no' private='no'>
<uuid>22003ebb-0f32-400e-9584-fa90b6efd874</uuid>
<usage type='ceph'>
<name>client.cinder secret</name>
</usage>
</secret>
EOF
]# virsh secret-define --file secret.xml
#Secret 22003ebb-0f32-400e-9584-fa90b6efd874 created
]# virsh secret-set-value --secret 22003ebb-0f32-400e-9584-fa90b6efd874 --base64 $(cat client.cinder.key) && rm client.cinder.key secret.xml
Secret value set
在有多个计算节点时,在compute节点上执行相同的操作。
4、设置Glance集成Ceph
vi /etc/glance/glance-api.conf
[DEFAULT]
...
default_store = rbd
...
[glance_store]
stores = rbd
rbd_store_pool = images
rbd_store_user = glance
rbd_store_ceph_conf = /etc/ceph/ceph.conf
rbd_store_chunk_size = 8
启用copy-on-write功能:
在[DEFAULT]中增加以下参数,
show_image_direct_url = True
怎样关闭Glance的镜像缓存:
修改以下参数如以下所示,
[paste_deploy]flavor = keystone
5、设置Cinder集成Ceph
vi /etc/cinder/cinder.conf:
[DEFAULT]
...
enabled_backends = ceph
...
[ceph]
volume_driver = cinder.volume.drivers.rbd.RBDDriver
rbd_pool = volumes
rbd_ceph_conf = /etc/ceph/ceph.conf
rbd_flatten_volume_from_snapshot = false
rbd_max_clone_depth = 5
rbd_store_chunk_size = 4
rados_connect_timeout = -1
glance_api_version = 2
在启用了cephx认证时,还需要配置认证信息:
[ceph]
...
rbd_user = cinder
rbd_secret_uuid = 22003ebb-0f32-400e-9584-fa90b6efd874
注:如果你需要配置多个cinder back ends,一定要在 [DEFAULT] 部分设置glance_api_version = 2 。
6、设置NOVA集成Ceph
为了直接基于Ceph存储启动虚机,还需要为Nova配置一个临时的存储后端。同时,建议使用RBD缓存,启用admin socket。
admin socket可以通过以下方法访问:
ceph daemon /var/run/ceph/ceph-client.cinder.19195.32310016.asok help
在你的每个compute节点上,编辑Ceph配置文件:
[client]
rbd cache = true
rbd cache writethrough until flush = true
admin socket = /var/run/ceph/guests/$cluster-$type.$id.$pid.$cctid.asok
log file = /var/log/qemu/qemu-guest-$pid.log
rbd concurrent management ops = 20
调整权限:
mkdir -p /var/run/ceph/guests/ /var/log/qemu/
chown qemu:libvirt /var/run/ceph/guests /var/log/qemu/
注:以上的qemu用户和libvirt组是基于RedHat相关系统的。
以配置好后,如果虚机已经在运行,则可以重启使上面的配置生效。
在每个compute节点上编辑/etc/nova/nova.conf文件:
[libvirt]
images_type = rbd
images_rbd_pool = vms
images_rbd_ceph_conf = /etc/ceph/ceph.conf
rbd_user = cinder
rbd_secret_uuid = 22003ebb-0f32-400e-9584-fa90b6efd874
disk_cachemodes="network=writeback"
建议关闭nova的密钥注入功能,而是使用基于metadata服务、cloud-init实现类似功能:
在每个计算节点上,编辑/etc/nova/nova.conf:
inject_password = false
inject_key = false
inject_partition = -2
启动热迁移支持:
在[libvirt]部分增加:
live_migration_flag="VIR_MIGRATE_UNDEFINE_SOURCE,VIR_MIGRATE_PEER2PEER,VIR_MIGRATE_LIVE,VIR_MIGRATE_PERSIST_DEST,VIR_MIGRATE_TUNNELLED"
7、重启OpenStack服务
systemctl restart openstack-glance-api
systemctl restart openstack-nova-compute
systemctl restart openstack-cinder-volume
转载于:https://blog.51cto.com/2168836/2103602