openstack对接ceph存储

简介: 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 firewalldsy
                stemctl stop  firewalld

                5)在三个节点配置hosts文件

                cat /etc/hosts

                  192.168.184.135  controller1
                  92.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  #一直回车即可s
                                sh-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<

                                                                                        9a144709-dc79-48d9-9008-0f299c76d6d1

                                                                                        client.cinder 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

                                                                                                            镜像格式:原始


                                                                                                            相关文章
                                                                                                            |
                                                                                                            6月前
                                                                                                            |
                                                                                                            存储 消息中间件 数据库
                                                                                                            云计算|OpenStack|社区版OpenStack安装部署文档(八--- 存储服务cinder的安装部署---Rocky版)
                                                                                                            云计算|OpenStack|社区版OpenStack安装部署文档(八--- 存储服务cinder的安装部署---Rocky版)
                                                                                                            275 0
                                                                                                            |
                                                                                                            存储 算法 API
                                                                                                            3.2.3存储服务开源 Openstack|学习笔记
                                                                                                            快速学习3.2.3存储服务开源 Openstack
                                                                                                            3.2.3存储服务开源 Openstack|学习笔记
                                                                                                            |
                                                                                                            存储 网络安全
                                                                                                            【Openstack】Ceph 与Openstack存储对接
                                                                                                            Ceph 与Openstack存储对接
                                                                                                            5040 12
                                                                                                            【Openstack】Ceph 与Openstack存储对接
                                                                                                            |
                                                                                                            运维 架构师 安全
                                                                                                            |
                                                                                                            存储 网络安全 数据库
                                                                                                            云计算/云存储---Ceph和Openstack的cinder模块对接方法
                                                                                                            1.创建存储池  在ceph节点中执行如下语句。 #ceph osd pool create volumes 128 2.配置 OPENSTACK 的 CEPH 客户端 在ceph节点两次执行如下语句,两次{your-openstack-server}分别填控制节点和计算节点IP。
                                                                                                            2346 0
                                                                                                            |
                                                                                                            存储 云计算
                                                                                                            openstack转移新建虚拟机存储路径
                                                                                                            在云计算openstack中以为新建的虚拟机都存放在/var/lib/nova/instances中,在新建虚拟机时内存当然不够用,所以可以将nova转移到新的存储位置 以下操作只在计算节点上进行 一:停止虚拟机   查看虚拟机:   $nova list   停止将要迁移的虚拟机   $nov...
                                                                                                            987 0
                                                                                                            |
                                                                                                            存储 Linux KVM
                                                                                                            openstack环境下 kvm存储虚拟机中瘦供给特性
                                                                                                            瘦供给的特性层次 如果一个kvm虚拟机需要支持瘦供给需要如下层次都支持: 1、存储层面 支持scsi协议规定的瘦供给命令unmap、write same|unmap 2、宿主机OS 1)内核层面:宿主机Os需要支持瘦供给特性,可喜的是在早在linux内核2.6时代就已经支持瘦供给特性。
                                                                                                            1335 0
                                                                                                            |
                                                                                                            3月前
                                                                                                            |
                                                                                                            消息中间件 缓存 Shell
                                                                                                            跟我一起来学OpenStack部署
                                                                                                            跟我一起来学OpenStack部署
                                                                                                            290 0