OpenStack集群安装CEPH----实操
一、实验环境准备
由于设备的限制,所以先提前准备好了OpenStack集群:一个控制节点(包含网络节点和计算节点)、一个计算节点。CEPH集群也是在此基础上创建。如果硬件设备支持的话,希望大家准备三个节点做实验:1.控制节点(计算+网络)、CPU:双核双线程-CPU虚拟化开启、内存:8G 硬盘:300G+1024G(充当CEPH块存储)。
2.计算节点1(计算)、CPU:双核双线程-CPU虚拟化开启、内存:8G 硬盘:300G+1024G(充当CEPH块存储)。
3.计算节点2(计算)、CPU:双核双线程-CPU虚拟化开启、内存:8G 硬盘:300G+1024G(充当CEPH块存储)。
而在真正的生产环境中,在OpenStack集群中至少需要准备两台控制节点服务器、两台计算节点服务器和一台网络节点服务器。并且需要准备三台服务器作为CEPH集群与OpenStack集群做关联。
二、搭建实验流程
本次实验是在安装好OpenStack集群的基础上实验的。我会在后面的博客中更新如何一键部署安装OpenStack集群。
** 因为我使用的是centos 7.5版本的系统**可能会存在一些问题,所以在安装CEPH之前在检查一下防火墙有没有完全关闭。
安装CEPH
1.#需要在所有节点上安装CEPH所需要的插件、环境
#每个节点安装Python-setuptools工具,
yum -y install python-setuptools
#在控制节点,创建ceph配置文件目录
mkdir -p /etc/ceph
#在控制节点安装ceph-deploy
yum -y install ceph-deploy
2.#在三个节点安装ceph软件
yum -y install ceph
3.#在控制节点的ceph目录下
cd /etc/ceph
#获取节点信息
ceph-deploy new control compute
4.#查看节点获取的信息
more /etc/ceph/ceph.conf
#初始化mon 并收集秘钥
#一定要在cd /etc/ceph
cd /etc/ceph
ceph-deploy mon create-initial
5.#创建osd,/etc/ceph的目录
ceph-deploy osd create --data /dev/sdb control
ceph-deploy osd create --data /dev/sdb compute
#使用ceph-deploy下发配置文件和admin秘钥下发到所有节点
ceph-deploy admin control compute
6.#给每个节点的keyring增加读的权限
chmod +x /etc/ceph/ceph.client.admin.keyring
#查看ceph集群状态
ceph -s
ceph osd tree
#缺少mgr管理服务
7.#创建mgr管理服务
ceph-deploy mgr create control compute
CEPH集群处于健康状态
8.#创建三个与openstack对接的pool(volumes、vms、images)64是PG
ceph osd pool create volumes 64
ceph osd pool create vms 64
ceph osd pool create images 64
#查看CEPH状态
ceph mon stat
ceph osd status
#查看所创建的池
ceph osd lspools
这样CEPH集群就搭建好了,但是还没有与OpenStack集群做关联OpenStack里面的数据无法存储到CEPH之中。
安装CEPH控制台
1.#启用dashboard模块
ceph mgr module enable dashboard
#创建https证书
ceph dashboard create-self-signed-cert
#查看mgr服务,证书是由mgr生成
ceph mgr services
#设置账号密码,admin用户名,111111是密码
ceph dashboard set-login-credentials admin 111111
通过8443端口登陆
这样就可以通过图形化界面去查看CEPH的使用情况和集群的健康状态。
OpenStack集群与CEPH对接环境初始化准备
1.#控制节点创建client.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'
#控制节点创建client.glance并设置权限
ceph auth get-or-create client.glance mon 'allow r' osd 'allow class-read object_prefix rbd_children,allow rwx pool=images'
2.#传送秘钥到对接的节点,因为glance自身就装在控制节点所以不需要发送到其他的节点
ceph auth get-or-create client.glance |tee /etc/ceph/ceph.client.glance.keyring
chown glance.glance /etc/ceph/ceph.client.glance.keyring
#将client.cinder节点 因为这个默认也是安装在controller上 ,所以不需要传递到其他节点,如果在其他节点就执行第一条语句
ceph auth get-or-create client.cinder | tee /etc/ceph/ceph.client.cinder.keyring
chown cinder.cinder /etc/ceph/ceph.client.cinder.keyring
3.#同时也需要将client.cinder 传递到计算节点
#由于计算节点需要将用户的client.cinder用户的密钥文件存储在libvirt中,所以需要执行如下操作
ceph auth get-key client.cinder |ssh compute tee client.cinder.key
到此群集的初始化已经完成了。
进行uuid认证和修改底层配置文件
1.#获取uuid认证
uuidgen
2b83fb33-a60e-4925-b63e-bb459807b7aa
#用如下内容创建一个秘钥文件确保使用上一步骤中生成唯一的UUID
cd /root
cat >secret.xml <<EOF
<secret ephemeral='no' private='no'>
<uuid>2b83fb33-a60e-4925-b63e-bb459807b7aa</uuid>
<usage type='ceph'>
<name>client.cinder secret</name>
</usage>
</secret>
EOF
这里的额uuid非常重要,因为在后面的OpenStack模块的验证中需要这个uuid所以一定要记下来。
2.#定义秘钥,并将其保存。后续步骤中使用这个秘钥
virsh secret-define --file secret.xml
#将secret.xml发送到其他节点上
virsh secret-define --file secret.xml
virsh secret-set-value --secret 2b83fb33-a60e-4925-b63e-bb459807b7aa --base64 $(cat client.cinder.key) && rm -rf client.cinder.key secret.xml
3.#控制节点执行
ceph osd pool application enable vms mon
ceph osd pool application enable images mon
ceph osd pool application enable volumes mon
CEPH启动监控三个资源池。
ceph对接glance模块
1.#登录到glance 所在的节点 然后修改
#备份配置文件
cp /etc/glance/glance-api.conf /etc/glance/glance-api.conf.bak
2.修改glance的配置文件
[glance_store]
stores = rbd 修改存储的类型格式
default_store = rbd 修改修改默认的存储格式类型
#filesystem_store_datadir = /var/lib/glance/images/ 将默认储存本地注销掉
rbd_store_chunk_size = 8 去掉注释
rbd_store_pool = images 去掉注释
rbd_store_user = glance 去掉注释、指定glance用户,不知道可以查
rbd_store_ceph_conf = /etc/ceph/ceph.conf 去掉注释 指定CEPH配置文件的路径
3.#重启OpenStack-glance-api服务
systemctl restart openstack-glance-api
#检查glance服务,上传镜像格式为raw
4.#上传镜像
#查看ceph镜像大小
ceph df
#查看镜像id号
rbd ls images
ceph与cinder块存储对接
1.#在安装cinder的节点上备份cinder.conf配置文件
cp /etc/cinder/cinder.conf /etc/cinder/cinder.conf.bak
2.#修改cinder.conf,这里需要注意的是在[default]中将enabled_backends = ceph,lvm 修改为:enabled_backends = ceph
3.#在配置文件最后将[lvm]的内容全部注释,添加新的[CEPH].
#这里uuid为之前的uuidkeygen
[ceph]
default_volume_type= ceph
glance_api_version = 2
volume_driver = cinder.volume.drivers.rbd.RBDDriver
volume_backend_name = ceph
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
rbd_user = cinder
rbd_secret_uuid = 2b83fb33-a60e-4925-b63e-bb459807b7aa
4.#重启cinder服务
systemctl restart openstack-cinder-volume
systemctl status openstack-cinder-volume
#查看cinder卷的类型有
source /root/keystonerc_admin
cinder type-list
5.#命令行创建cinder 的ceph存储后端相应的type
source /root/keystone_admin
cinder type-create ceph
#设置后端的存储类型 volume_backend_name=ceph一定要顶格写不能有空格
cinder type-key ceph set volume_backend_name=ceph
#创建一个卷,类型为ceph
#查看卷id
rbd ls volumes
Ceph与Nova 对接
1.#到一个计算节点,备份计算节点配置文件
cp /etc/nova/nova.conf /etc/nova/nova.conf.bak
2.#修改所有计算节点配置文件
vi /etc/nova/nova.conf
[libvirt]
images_type = rbd 去掉注释、修改类型RBD
images_rbd_pool = vms 去掉注释、改为VMS在CEPH中声明的
images_rbd_ceph_conf = /etc/ceph/ceph.conf 去掉注释、添加CEPH配置文件路径
rbd_user = cinder 去掉注释、添加cinder
rbd_secret_uuid =ef8a4912-5389-48dc-8142-5f7fb62b437c 去掉注释、添加UUID值
disk_cachemodes="network=writeback" 添加"network=writeback"硬盘缓存模式
live_migration_flag="VIR_MIGRATE_UNDEFINE_SOURCE,VIR_MIGRATE_PEER2PEER,VIR_MIGRATE_LIVE,VIR_MIGRATE_PERSIST_DEST,VIR_MIGRATE_TUNNELLED" 在live_migration附近添加整行 是否启用热迁移
hw_disk_discard=unmap 、去掉注释、添加unmap
3.#所有计算节点安装libvirt
yum -y install libvirt
4.#修改计算节点的ceph配置文件
vi /etc/ceph/ceph.conf
[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 777 -R /var/run/ceph/guests/ /var/log/qemu/
#将控制节点的秘钥发给所有计算节点
cd /etc/ceph
scp ceph.client.cinder.keyring root@compute:/etc/ceph
5.创建实例
到此CEPH关联OpenStack中的cinder、glance和nova模块实验已经完成。本次实验流程很长,但是做好了准备做起来还是非常的顺利的。