openstack对接ceph存储
前言
拥抱开源,无私分享,共享技术,相互学习,共同进步,分享更多有深度的文章,欢迎关注分享。
ceph介绍
ceph是一种开源的分布式的存储系统,分布式存储的优点:
高可靠
既满足存储读取不丢失,还要保证数据长期存储。在保证部分硬件损坏后依然可以保证数据安全
高性能
读写速度快
可扩展
分布式存储的优势就是“分布式”,所谓的“分布式”就是能够将多个物理节点整合在一起形成共享的存储池,节点可以线性扩充,这样可以源源不断的通过扩充节点提升性能和扩大容量,这是传统存储阵列无法做到的
openstack介绍
Openstack是一个开源的云平台管理项目,可以用于构建公有云或者私有云平台,提供了基础设施及服务的解决方案,OpenStack覆盖了网络、虚拟化、操作系统、服务器等各个方面,主要用来解决计算机资源问题,通过openstack可以启动,分配和管理虚拟机资源
openstack为什么要使用ceph存储
Openstack通过对接ceph,可以大大降低云环境的部署和运维复杂度。使用 Ceph 作为 OpenStack 后端存储,具有如下优点:
1.所有的计算节点共享存储,迁移时不需要拷贝根磁盘,即使计算节点挂了,也能立即在另一个计算节点启动虚拟机(evacuate)
2.利用COW(Copy On Write)特性,创建虚拟机时,只需要基于镜像 clone 即可,不需要下载整个镜像,而 clone 操作基本是0开销,从而实现了秒级创建虚拟机。
3.Ceph RBD 支持 thin provisioning,即按需分配空间,有点类似Linux文件系统的 sparse 稀疏文件。创建一个20GB的虚拟硬盘时,最开始并不占用物理存储空间,只有当写入数据时,才按需分配存储空间。
安装和配置ceph
1.机器规划
openstack的controller节点
ens33:提供浮动ip的,也就是出网地址 192.168.199.115
ens37:内网之间通信,采用仅主机模式的网卡 192.168.184.135
openstack的computer节点
ens33:提供浮动ip的,也就是出网地址 192.168.199.220
ens37:内网之间通信,采用仅主机模式的网卡 192.168.184.136
ceph_admin节点:
ens33:提供浮动ip的,也就是出网地址 192.168.199.211
ens37:内网之间通信,采用仅主机模式的网卡 192.168.184.134
2.安装ceph
1)ceph的admin节点ip规划
外网ip:192.168.199.211
内网ip:192.168.184.134
2)设置主机名
hostnamectl set-hostname admin
3)禁用掉NetworkManager
systemctl disable NetworkManager
systemctl stop NetworkManager
4)禁用掉防火墙
systemctl disable firewalld
systemctl stop firewalld
5)在三个节点配置hosts文件
cat /etc/hosts
192.168.184.135 controller
192.168.184.136 computer
192.168.184.134 admin
6)时间同步
ntpdate time2.aliyun.com
7)三个节点配置相互之间无密码登陆
在controller节点
ssh-keygen -t rsa #一直回车即可
ssh-copy-id -i .ssh/id_rsa.pub admin #输入admin节点的密码
ssh-keygen -t rsa #一直回车即可
ssh-copy-id -i .ssh/id_rsa.pub computer #输入computer节点的密码
在computer节点
ssh-keygen -t rsa #一直回车即可
ssh-copy-id -i .ssh/id_rsa.pub controller #输入controller节点的密码
ssh-keygen -t rsa #一直回车即可
ssh-copy-id -i .ssh/id_rsa.pub admin #输入admin节点的密码
在admin节点
ssh-keygen -t rsa #一直回车即可
ssh-copy-id -i .ssh/id_rsa.pub controller #输入controller节点的密码
ssh-keygen -t rsa #一直回车即可
ssh-copy-id -i .ssh/id_rsa.pub computer #输入computer节点的密码
8)安装ceph
新增如下yum源
/etc/yum.repos.d/ceph.repo
yum源内容如下
cat /etc/yum.repos.d/ceph.repo
[Ceph]
name=Ceph packages for $basearch
baseurl=http://mirrors.163.com/ceph/rpm-kraken/el7/$basearch
enabled=1
priority=1
gpgcheck=1
gpgkey=https://download.ceph.com/keys/release.asc
[Ceph-noarch]
name=Ceph noarch packages
baseurl=http://mirrors.163.com/ceph/rpm-kraken/el7/noarch
enabled=1
priority=1
gpgcheck=1
gpgkey=https://download.ceph.com/keys/release.asc
[ceph-source]
name=Ceph source packages
baseurl=http://mirrors.163.com/ceph/rpm-kraken/el7/SRPMS
enabled=0
priority=1
gpgcheck=1
gpgkey=https://download.ceph.com/keys/release.asc
清理yum缓存
yum makecache
首先在admin 上安装ceph-deploy管理工具 并且创建ceph工作目录
mkdir -p /etc/ceph && cd /etc/ceph/
yum -y install ceph-deploy
在admin上使用ceph-deploy给所有节点安装ceph
ceph-deploy install admin controller computer
在admin 节点 进入ceph 目录 创建一个ceph集群
ceph-deploy new admin controller computer
命令执行之后在ceph目录会生成相关的配置文件ceph.conf
cat ceph.conf
[global]
fsid = 37516893-56ee-44b8-807f-04e7b253e1e1
mon_initial_members = admin, controller, computer
mon_host = 192.168.184.134,192.168.184.135,192.168.184.136
auth_cluster_required = cephx
auth_service_required = cephx
auth_client_required = cephx
在admin 节点上使用ceph-deploy创建Mon
ceph-deploy mon create admin controller computer
在admin节点上收集秘钥
ceph-deploy gatherkeys admin
在admin节点上使用ceph-deploy创建osd
ceph-deploy osd create admin:sdb controller:sdb computer:sdb
在admin 节点分发配置文件
ceph-deploy admin admin controller computer
给kerying添加权限 (每一个节点都要执行)
chmod +r /etc/ceph/ceph.client.admin.keyring
查看集群健康状态
ceph -s
显示如下说明集群正常
知识扩展,卸载ceph集群
在admin上执行如下步骤:
ceph-deploy purge admin controller computer
ceph-deploy purgedata admin controller computer
ceph-deploy forgetkeys
3.配置ceph
创建ceph池,在admin节点操作
#创建volumes池,对应Cinder服务
ceph osd pool create volumes 128
#创建vms池,对应Nova服务
ceph osd pool create vms 128
#创建images池,对应Glance服务
ceph osd pool create images 128
#查看创建的volume池
ceph osd lspools
显示如下
在运行glance-api节点(controller节点)上确定安装了python-rbd
rpm -qa | grep python-rbd
显示如下
python-rbd-11.2.1-0.el7.x86_64
运行cinder-volume(controller节点)和nova-compute(computer节点)节点上确保安装了ceph-common软件包
rpm -qa | grep ceph-common
显示如下
ceph-common-10.2.11-0.el7.x86_64
授权设置,admin节点操作
#创建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'
在admin节点上操作,将上述创建的密码分发到glance-api和cinder-volume节点上,也就是发送到openstack的controller节点
#admin节点上操作
ceph auth get-or-create client.glance | ssh controller tee /etc/ceph/ceph.client.glance.keyring
#controller节点操作
chown glance:glance /etc/ceph/ceph.client.glance.keyring
#admin节点上操作
ceph auth get-or-create client.cinder | ssh controller tee /etc/ceph/ceph.client.cinder.keyring
#controller节点操作
chown cinder:cinder /etc/ceph/ceph.client.cinder.keyring
在admin节点上操作,将cinder.client发送到computer节点,运行nova-compute节点(computer节点)的服务需要使用cinder.client的秘钥,将其秘钥传送到computer 节点上去
#在admin节点操作
ceph auth get-or-create client.cinder | ssh computer tee /etc/ceph/ceph.client.cinder.keyring
nova-compuete节点需要将clinet.cinder秘钥存储到libvirt中 ,当基于ceph 后端的cinder 卷被分配到虚拟机的时候 需要访问秘钥,需要做以下操作
#在admin 节点操作
ceph auth get-key client.cinder|ssh computer tee client.cinder.key
在运行nova-compute节点(computer)上将临时秘钥文件添加到libvirt中,然后删除,如下步骤在compute节点上操作
uuidgen
显示如下
9a144709-dc79-48d9-9008-0f299c76d6d1
cat > secret.xml<<EOF
<secret ephemeral='no' private='no'>
<uuid>9a144709-dc79-48d9-9008-0f299c76d6d1</uuid>
<usage type='ceph'>
<name>client.cinder secret</name>
</usage>
</secret>
EOF
virsh secret-define --file secret.xml
生成如下秘钥
9a144709-dc79-48d9-9008-0f299c76d6d1
virsh secret-set-value --secret 9a144709-dc79-48d9-9008-0f299c76d6d1 --base64 $(cat client.cinder.key) && rm client.cinder.key secret.xml
上面命令执行之后输入y即可
y
y
openstack对接ceph
1.ceph与glance对接
把之前上传到openstack的镜像删除
在controller节点操作,修改glance-api.conf这个配置文件
cat /etc/glance/glance-api.conf
stores = rbd
#改成rbd,原来是stores = file,http
rbd_store_pool = images
#这行的前面注释去掉
rbd_store_user = glance
#这行原来有注释,去掉注释,把原来的none,改成glance这个用户
rbd_store_ceph_conf = /etc/ceph/ceph.conf
#这行前面有注释,把注释去掉
rbd_store_chunk_size = 8
#这行前面注释去掉
default_store = rbd
#原来是file,改成rbd
上面修改好之后,重启glance服务
systemctl restart openstack-glance-api.service
systemctl restart openstack-glance-registry.service
查看日志/var/log/glance/api.log 没有报错就开始进行下面步骤
在openstack的dashboard重新上传镜像
在admin节点查看是否有镜像
rbd ls images
显示如下
cf5cd20a-402e-4818-ble6-41b0f951b2cf
ceph df 显示如下
上面images处显示USED是607m,这个就是镜像的大小,跟在dashboard看到的镜像大小一样
2.cinder块存储以及与ceph对接
cinder组件讲解:为云主机增加数据盘
openstack中创建云主机的时候可以创建一个卷,把这个卷挂到云主机上,如果云主机出现故障被删除,那么在找一个云主机,把这个卷挂到新的云主机上,数据还是会存在的,不丢失
cinder与nfs对接
(1)创建一个pv,vg(controller节点操作)
vgdisplay
显示如下
vgremove cinder-volumes
pvcreate /dev/sdc
vgcreate cinder-volumes /dev/sdc
(2)在controller节点重启cinder-volume这个服务
systemctl list-unit-files | grep cinder
显示如下
systemctl restart openstack-cinder-volume
cd /var/log/cinder
cat volume.log
显示如下,说明可以创建cinder卷了
(3)在dashboard的界面创建卷
http://192.168.184.135
项目------>卷------>创建卷
卷名称:test01
卷类型:iscsi
大小:10G
显示如下,说明创建成功
可以扩大卷,但是不能缩小卷
cinder与ceph对接
在controller节点修改cinder配置文件
cd /etc/cinder
cat cinder.conf
修改内容如下
glance_api_version = 2
#之前是注释的,把注释打开,值由1变成2
enabled_backends = ceph,lvm
在文件最后一行加上如下内容
[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 = 502804dd-8504-405a-b7a1-33a52ec3a77c
上面修改好了重启服务
systemctl restart openstack-cinder-volume
source /root/keystone_admin
cinder type-create ceph
显示如下
cinder type-list
显示如下
cinder type-key ceph set volume_backend_name=ceph
cinder create --volume-type ceph --name ceph-volume1 2
在dashboard界面可以看到创建了一个卷ceph-volume1,大小是2G
3.nova与ceph对接
在计算节点操作(computer节点)
修改配置文件/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 = 9a144709-dc79-48d9-9008-0f299c76d6d1
disk_cachemodes="network=writeback"
inject_password=false
inject_key=false
inject_partition=-2
hw_disk_discard=unmap
上述修改好之后重新启动nova的配置文件
systemctl restart openstack-nova-compute
nova与ceph对接是需要使用raw 格式镜像,转化步骤如下
qemu-img convert -f qcow2 -O raw CentOS7.qcow2 centos7.raw
在dashboad界面创建一个镜像
镜像名称centos-raw
文件--->浏览cento7-raw
镜像格式:原始
想要了解kubernetes、微服务、DevOps更多知识和生产案例,获取免费视频,可按如下方式获取哈~~~
微信:luckylucky421302
openstack对接ceph存储相关推荐
- OpenStack 对接 Ceph 环境可以创建卷但不能挂载卷的问题
问题 环境:Nova.Cinder.Glance 都对接了 Ceph RBD 后端存储. 以往的操作包括上传镜像.创建卷.挂载卷都是一切正常的,但突然出现了无法挂载卷的问题,而且还是因为 Ceph 客 ...
- openstack对接glusterfs存储
openstack对接glusterfs存储 一.环境介绍 二.存储节点硬盘挂载 1.挂载50G硬盘 2.查看挂载情况 3.两个存储节点创建存储目录 三.存储节点创建glusterfs卷 1.连接gl ...
- rancher k8s 对接 ceph 存储
本文永久链接: https://www.xtplayer.cn/kubernetes/storage/k8s-storage-ceph/ 本文编写的前提是已有正常工作的 ceph 存储服务,并且 Ra ...
- openstack对接华为存储
在某个poc实施时要对接华为2200v3存储 1.查看平台是否有驱动 如果想要最新的驱动可以手动下载 https://github.com/openstack/cinder/tree/master/c ...
- 对接华为存储iSCSI
一.华为Cinder Driver获取 1.通过OpenStack社区仓库.从Kilo版本开始,华为Driver已集成到OpenStack社区 仓库,安装OpenStack即会自带华为Driver,位 ...
- ceph存储 ceph集群ErasureCoding原理认知
Ceph Erasure Coding Cognize 1.概述 RedHat公司日前发行了旗下Inktank Ceph企业版软件的1.2版本,增加了纠删码.缓存分层的特色,并且更新了管理和监控分布式 ...
- OpenStack Kolla-Ansible部署Trove数据库服务Daas,部署Ceilometer数据收集服务,Gnocchi对接Ceph
书接上回 OpenStack Kolla-Ansible部署Swift文件存储 对接Ceph RadosGW,Proxmox 本章我们继续来完成OpenStack示例配置组件之Web Applica ...
- 使用Ceph作为OpenStack的统一存储解决方案
文章目录 统一存储解决方案 一.Ceph RBD和Openstack集群的基础配置 1. 需求说明 2.原理解析 3. 为 Glance.Nova.Cinder 创建专用的RBD Pools池并初始化 ...
- Openstack云平台脚本部署之Ceph存储集群配置(十四)
目录 一.简介 二.部署脚本 三.参考文档 四.源码 五.系列文章 一.简介 Openstack的后端存储对接Ceph分布式统一存储,将Glance镜像.Nova虚拟机及快照.Cinder-Volum ...
最新文章
- ruby tk秒表的应用
- eclipse可以写前端吗_Python 竟然也可以写网页前端了!
- 前端学习笔记day01 html 标签之音频 embed+audio+video
- c语言解决函数变参数问题 va_list
- java 判断题_Java面试题及解析(判断题)
- matlab您的安装可能需要执行其他配置步骤_手把手超详细介绍MATLAB+RoadRunner+Unreal Engine自动驾驶联合仿真...
- [leetcode] 144. 二叉树的前序遍历
- Sublime Text 3 import Anaconda 无法正常补全模块名解决办法
- python from numpy import,python zeros()使用(from numpy import *)-Go语言中文社区
- C++ vector的释放
- Docker的基本认识及使用
- Android6.0指纹识别开发
- 【原创】告别恼人的水平滚动条——滚动条宽度到底是多少?
- oracle set ansi_nulls off,sqlserver存储过程转换成oracle存储过程
- php 会员到期提醒_会员管理系统花了50万都没做成,用这五个功能轻松实现
- 推荐五个免费UML建模工具
- 计算机阵列除法器原理,并行除法器 ,并行除法器结构原理是什么?
- 十分钟用Django创建一个简单的职位管理系统
- 自己制作icon图标
- ​iPhone 14 Pro 全系降价 700 元;Gmail 之父:有了 ChatGPT,搜索引擎活不过两年了|极客头条
热门文章
- 计算机毕业设计项目2023推荐
- git与github——1,简介、安装及设置账号、创建版本库及提交文件、常用命令汇总、git的时光穿梭机
- windows10 多桌面
- Android Widget——实现桌面小部件
- 人工智能理解的“噩梦”是什么样子?MIT上线“Nightmare”网站迎接万圣节
- 浅谈SwiftUI 3.0新加入的CoreData动态FetchRequest过滤与排序特性
- scala神奇的sortBy方法
- java控制 灯_用Java控制小电灯-树莓派PI4J
- 普洱茶如何醒茶最好喝,普洱茶醒茶的方法
- 遇见一个百分之百的女孩