前言

拥抱开源,无私分享,共享技术,相互学习,共同进步,分享更多有深度的文章,欢迎关注分享。

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存储相关推荐

  1. OpenStack 对接 Ceph 环境可以创建卷但不能挂载卷的问题

    问题 环境:Nova.Cinder.Glance 都对接了 Ceph RBD 后端存储. 以往的操作包括上传镜像.创建卷.挂载卷都是一切正常的,但突然出现了无法挂载卷的问题,而且还是因为 Ceph 客 ...

  2. openstack对接glusterfs存储

    openstack对接glusterfs存储 一.环境介绍 二.存储节点硬盘挂载 1.挂载50G硬盘 2.查看挂载情况 3.两个存储节点创建存储目录 三.存储节点创建glusterfs卷 1.连接gl ...

  3. rancher k8s 对接 ceph 存储

    本文永久链接: https://www.xtplayer.cn/kubernetes/storage/k8s-storage-ceph/ 本文编写的前提是已有正常工作的 ceph 存储服务,并且 Ra ...

  4. openstack对接华为存储

    在某个poc实施时要对接华为2200v3存储 1.查看平台是否有驱动 如果想要最新的驱动可以手动下载 https://github.com/openstack/cinder/tree/master/c ...

  5. 对接华为存储iSCSI

    一.华为Cinder Driver获取 1.通过OpenStack社区仓库.从Kilo版本开始,华为Driver已集成到OpenStack社区 仓库,安装OpenStack即会自带华为Driver,位 ...

  6. ceph存储 ceph集群ErasureCoding原理认知

    Ceph Erasure Coding Cognize 1.概述 RedHat公司日前发行了旗下Inktank Ceph企业版软件的1.2版本,增加了纠删码.缓存分层的特色,并且更新了管理和监控分布式 ...

  7. OpenStack Kolla-Ansible部署Trove数据库服务Daas,部署Ceilometer数据收集服务,Gnocchi对接Ceph

    ​书接上回 OpenStack Kolla-Ansible部署Swift文件存储 对接Ceph RadosGW,Proxmox 本章我们继续来完成OpenStack示例配置组件之Web Applica ...

  8. 使用Ceph作为OpenStack的统一存储解决方案

    文章目录 统一存储解决方案 一.Ceph RBD和Openstack集群的基础配置 1. 需求说明 2.原理解析 3. 为 Glance.Nova.Cinder 创建专用的RBD Pools池并初始化 ...

  9. Openstack云平台脚本部署之Ceph存储集群配置(十四)

    目录 一.简介 二.部署脚本 三.参考文档 四.源码 五.系列文章 一.简介 Openstack的后端存储对接Ceph分布式统一存储,将Glance镜像.Nova虚拟机及快照.Cinder-Volum ...

最新文章

  1. ruby tk秒表的应用
  2. eclipse可以写前端吗_Python 竟然也可以写网页前端了!
  3. 前端学习笔记day01 html 标签之音频 embed+audio+video
  4. c语言解决函数变参数问题 va_list
  5. java 判断题_Java面试题及解析(判断题)
  6. matlab您的安装可能需要执行其他配置步骤_手把手超详细介绍MATLAB+RoadRunner+Unreal Engine自动驾驶联合仿真...
  7. [leetcode] 144. 二叉树的前序遍历
  8. Sublime Text 3 import Anaconda 无法正常补全模块名解决办法
  9. python from numpy import,python zeros()使用(from numpy import *)-Go语言中文社区
  10. C++ vector的释放
  11. Docker的基本认识及使用
  12. Android6.0指纹识别开发
  13. 【原创】告别恼人的水平滚动条——滚动条宽度到底是多少?
  14. oracle set ansi_nulls off,sqlserver存储过程转换成oracle存储过程
  15. php 会员到期提醒_会员管理系统花了50万都没做成,用这五个功能轻松实现
  16. 推荐五个免费UML建模工具
  17. 计算机阵列除法器原理,并行除法器 ,并行除法器结构原理是什么?
  18. 十分钟用Django创建一个简单的职位管理系统
  19. 自己制作icon图标
  20. ​iPhone 14 Pro 全系降价 700 元;Gmail 之父:有了 ChatGPT,搜索引擎活不过两年了|极客头条

热门文章

  1. 计算机毕业设计项目2023推荐
  2. git与github——1,简介、安装及设置账号、创建版本库及提交文件、常用命令汇总、git的时光穿梭机
  3. windows10 多桌面
  4. Android Widget——实现桌面小部件
  5. 人工智能理解的“噩梦”是什么样子?MIT上线“Nightmare”网站迎接万圣节
  6. 浅谈SwiftUI 3.0新加入的CoreData动态FetchRequest过滤与排序特性
  7. scala神奇的sortBy方法
  8. java控制 灯_用Java控制小电灯-树莓派PI4J
  9. 普洱茶如何醒茶最好喝,普洱茶醒茶的方法
  10. 遇见一个百分之百的女孩