对接分为三种,也就是ceph存储系统为openstack提供的三类功能
1、镜像服务Glance对接
2、块存储服务Cinder对接
3、云主机储存对接
在ceph中分别为镜像,云主机,卷创建了三个pool资源存放池:images,vms,volumes来存放对应的数据。
1、部署CEPH之前,必须把和存储有关系数据清理干净
2、三个节点都设置主机名、添加hosts文件、关闭防火墙,设置开机不启动,做SSH免交互。(这些配置已经在OpenStack搭建过程设置过,详细步骤见博客)
3、安装ceph,配置控制节点
//三个节点安装Python-setuptools工具
yum -y install python-setuptools
//在控制节点,创建ceph配置文件目录
mkdir -p /etc/ceph
//在控制节点安装ceph-deploy工具
#ceph-deploy是ceph官方提供的部署工具,可以通过ssh远程登录其它各个节点上执行命令完成部署过程
yum -y install ceph-deploy
//在三个节点安装ceph软件
yum -y install ceph
//创建集群
进入控制节点/etc/ceph的目录
cd /etc/ceph
ceph-deploy new ct c1 c2
#ceph-deploy new 主机名命令:用来创建ceph.conf配置文件和监视器密钥环到各个节点的/etc/ceph/目录。
//检查ip地址是否是节点的IP地址
more /etc/ceph/ceph.conf
//添加mon服务,生成并收集三个节点的秘钥
进入控制节点/etc/ceph的目录
cd /etc/ceph
ceph-deploy mon create-initial
//创建OSD服务
进入控制节点/etc/ceph的目录
cd /etc/ceph
ceph-deploy osd create --data /dev/sdb ct
ceph-deploy osd create --data /dev/sdb c1
ceph-deploy osd create --data /dev/sdb c2
//使用ceph-deploy下发配置文件和admin秘钥下发到ct c1 c2
进入控制节点/etc/ceph的目录
cd /etc/ceph
ceph-deploy admin ct c1 c2
//给ct c1 c2 每个节点的keyring增加读的权限
[root@ct ceph# chmod +x /etc/ceph/ceph.client.admin.keyring
[root@c1 ceph# chmod +x /etc/ceph/ceph.client.admin.keyring
[root@c2 ceph# chmod +x /etc/ceph/ceph.client.admin.keyring
//查看ceph集群状态
ceph -s
ceph osd tree
//创建mgr管理服务
进入控制节点/etc/ceph的目录
cd /etc/ceph
ceph-deploy mgr create ct c1 c2
ceph -s #查看健康状况,成功则OK
//创建三个与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 ###查看创建的pools池
此时ceph集群就搭建完成,但是没有与OpenStack集群做对接,数据是无法存储到ceph存储系统中的。
//启用dashboard模块
ceph mgr module enable dashboard
//创建https证书
ceph dashboard create-self-signed-cert
//查看mgr服务
ceph mgr services
在浏览器中打开ceph网页
https://192.168.10.20:8443 此处IP地址是控制节点的地址
在命令行界面设置账号密码
ceph dashboard set-login-credentials admin 123 ###admin是账号 123是密码这个可以改
使用账号、密码登录ceph网页
//在控制节点上创建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'
//传送秘钥到对接的节点,因为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
//同时也需要将client.cinder 传递到计算节点
由于计算节点需要将用户的client.cinder用户的密钥文件存储在libvirt中,所以需要执行如下操作
ceph auth get-key client.cinder |ssh c1 tee client.cinder.key
ceph auth get-key client.cinder |ssh c2 tee client.cinder.key
#####配置libvirt secret
//在C1节点上操作
1、生成UUID
命令:uuidgen
eb46d080-e21c-4d37-9179-1cb685d13773
2、用如下内容创建一个秘钥文件确保使用上一步骤中生成唯一的UUID
cd /root
cat >secret.xml <<EOF
eb46d080-e21c-4d37-9179-1cb685d13773
client.cinder secret
EOF
3、定义秘钥,并将其保存。后续步骤中使用这个秘钥
virsh secret-define --file secret.xml
4、设置秘钥并删除临时文件。删除文件的步骤是选的的,步骤是保持系统的纯净。
virsh secret-set-value --secret eb46d080-e21c-4d37-9179-1cb685d13773 --base64 $(cat client.cinder.key) && rm -rf client.cinder.key secret.xml
//在C2节点上操作
将第一个计算节点secret.xml 传到其他节点
cd /root
cat >secret.xml <<EOF
eb46d080-e21c-4d37-9179-1cb685d13773
client.cinder secret
EOF
virsh secret-define --file secret.xml
virsh secret-set-value --secret eb46d080-e21c-4d37-9179-1cb685d13773 --base64 $(cat client.cinder.key) && rm -rf client.cinder.key secret.xml
//在控制节点上执行,启动监控这三个ceph资源池
ceph osd pool application enable vms mon
ceph osd pool application enable images mon
ceph osd pool application enable volumes mon
//登录到glance所在的节点 然后修改
1、备份配置文件
cp /etc/glance/glance-api.conf /etc/glance/glance-api.conf.bak
2、修改对接配置文件
vi /etc/glance/glance-api.conf
[glance_store]
stores = rbd ●2054行、存储的类型格式
default_store = rbd ●2108行、修改默认的存储格式类型
#filesystem_store_datadir = /var/lib/glance/images/ ●2442行、默认储存本地注销掉
rbd_store_chunk_size = 8 ●2605行、去掉注释
rbd_store_pool = images ●2626行、去掉注释
rbd_store_user = glance ●2645行、去掉注释、指定glance用户,不知道可以查
rbd_store_ceph_conf = /etc/ceph/ceph.conf ●2664行、去掉注释 指定CEPH的路径
//查找glance用户,对接上面#########
[root@ct ceph]# source /root/keystonerc_admin
[root@ct ceph(keystone_admin)]# openstack user list |grep glance
| ee8b4470f93c4e82b83f7bcd1bf3ad0d | glance | #这地方是glance用户
3、重启OpenStack-glance-api服务
systemctl restart openstack-glance-api
上传镜像做测试,再打开一个控制节点的终端窗口
1、点击【计算】–【镜像】–【创建镜像】–名称、文件、格式
点击【创建镜像】
2、等待过程中,通过终端可以查看上传到哪一步
tail -f /var/log/glance/api.log
//查看ceph镜像大小
ceph df
//查看镜像ID号
rbd ls images
####ceph与cinder对接#####
1、备份cinder.conf配置文件
cp /etc/cinder/cinder.conf /etc/cinder/cinder.conf.bak
2、修改配置文件
vi /etc/cinder/cinder.conf
[DEFAULT]
enabled_backends = ceph ●409行,更改为ceph
#[lvm]
#volume_backend_name=lvm
#volume_driver=cinder.volume.drivers.lvm.LVMVolumeDriver
#iscsi_ip_address=192.168.100.10
#iscsi_helper=lioadm
#volume_group=cinder-volumes
#volumes_dir=/var/lib/cinder/volumes
[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 = eb46d080-e21c-4d37-9179-1cb685d13773 ####这个uuid是之前写在自己的计算节点上的
3、重启cinder服务
systemctl restart openstack-cinder-volume
systemctl status openstack-cinder-volume
4、创建cinder 的ceph存储后端相应的type
source /root/keystone_admin
cinder type-create ceph
cinder type-list #查看cinder卷的类型
5、设置后端的存储类型 volume_backend_name=ceph一定要顶格写不能有空格
cinder type-key ceph set volume_backend_name=ceph
6、创建卷
点击【项目】–【卷】–【创建卷】
【卷名称】:ceph 【类型】: ceph 【大小】:10G
点击【创建卷】
7、查看创建的卷
rbd ls volumes
1、备份配置文件(C1、C2节点)
cp /etc/nova/nova.conf /etc/nova/nova.conf.bak
2、修改配置文件(C1、C2节点)
vi /etc/nova/nova.conf 所有计算节点的配置文件
[libvirt]
images_type = rbd ●7083行、去掉注释、修改类型RBD
images_rbd_pool = vms ●7107行、去掉注释、改为VMS在CEPH中声明的
images_rbd_ceph_conf = /etc/ceph/ceph.conf ●7110行、去掉注释、添加CEPH配置文件路径
rbd_user = cinder ●7267行、去掉注释、添加cinder
rbd_secret_uuid =eb46d080-e21c-4d37-9179-1cb685d13773 ●7272行、去掉注释、添加UUID值
disk_cachemodes="network=writeback" ●6943行、去掉注释、添加"network=writeback"硬盘缓存模式
inject_password=false ●6436行,去掉注释
inject_key=false ●6460行,去掉注释
inject_partition=-2 ●6493行,去掉注释
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 ●7119行、去掉注释、添加unmap
3、安装Libvirt(C1、C2节点)
yum -y install libvirt
4、编辑计算节点(C1、C2节点)
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
5、创建日志文件,加权限
mkdir -p /var/run/ceph/guests/ /var/log/qemu/
chown 777 -R /var/run/ceph/guests/ /var/log/qemu/
6、将控制节点的秘钥发给所有计算节点
cd /etc/ceph
scp ceph.client.cinder.keyring root@c1:/etc/ceph
scp ceph.client.cinder.keyring root@c2:/etc/ceph
7、计算节点重启服务
systemctl restart libvirtd
systemctl enable libvirtd
systemctl restart openstack-nova-compute
新建一个实例,在命令行用命令 rbd ls vms 查看
到这里,我们的OpenStack+ceph服务已经搭建成功了!