1.快速部署ceph集群(ceph做openstack的后端存储)

Ceph 简介(官网 http://docs.ceph.org.cn/start/intro/)

不管你是想为云平台提供Ceph 对象存储和/或 Ceph 块设备,还是想部署一个 Ceph 文件系统或者把 Ceph 作为他用,所有 Ceph 存储集群的部署都始于部署一个个 Ceph 节点、网络和 Ceph 存储集群。 Ceph 存储集群至少需要一个 Ceph Monitor 和两个 OSD 守护进程。而运行 Ceph 文件系统客户端时,则必须要有元数据服务器( Metadata Server )。

  • Ceph OSDs: Ceph OSD 守护进程( Ceph OSD )的功能是存储数据,处理数据的复制、恢复、回填、再均衡,并通过检查其他OSD 守护进程的心跳来向 Ceph Monitors 提供一些监控信息。当 Ceph 存储集群设定为有2个副本时,至少需要2个 OSD 守护进程,集群才能达到 active+clean 状态( Ceph 默认有3个副本,但你可以调整副本数)。
  • Monitors: Ceph Monitor维护着展示集群状态的各种图表,包括监视器图、 OSD 图、归置组( PG )图、和 CRUSH 图。 Ceph 保存着发生在Monitors 、 OSD 和 PG上的每一次状态变更的历史信息(称为 epoch )。
  • MDSs: Ceph 元数据服务器( MDS )为 Ceph 文件系统存储元数据(也就是说,Ceph 块设备和 Ceph 对象存储不使用MDS )。元数据服务器使得 POSIX 文件系统的用户们,可以在不对 Ceph 存储集群造成负担的前提下,执行诸如 lsfind 等基本命令。

Ceph 把客户端数据保存为存储池内的对象。通过使用 CRUSH 算法, Ceph 可以计算出哪个归置组(PG)应该持有指定的对象(Object),然后进一步计算出哪个 OSD 守护进程持有该归置组。 CRUSH 算法使得 Ceph 存储集群能够动态地伸缩、再均衡和修复。



CentOS7上部署ceph分布式存储集群。在ceph-node1、ceph-node2和ceph-node3上创建一个三节点的集群。

准备环境

hosts文件配置(在三个ceph节点上操作)

root@ceph-node1 ~]# cat /etc/hosts

127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4

::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

10.1.1.120 controller1 controller1.openstack.com

10.1.1.121 controller2 controller2.openstack.com

10.1.1.122 controller3 controller3.openstack.com

10.1.1.123 compute1 compute1.openstack.com

10.1.1.124 compute2 compute2.openstack.com

10.1.1.125 nfs-backend backend.openstack.com

10.1.1.126 cinder1 cinder1.openstack.com

10.1.1.127 ceph-node1 ceph-node1.openstack.com     #下面这三台

10.1.1.128 ceph-node2 ceph-node2.openstack.com

10.1.1.129 ceph-node3 ceph-node3.openstack.com

9.110.187.168 openstack.openstack.com    



软件环境



    操作系统:Centos 7.3

    Openstack:N版

    Ceph:yongbangyan



安装Ceph准备repo



在所有ceph节点上准备下面的源。(在三个ceph节点上操作)

 yum clean all

 rm -rf /etc/yum.repos.d/*.repo

 wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

 wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo

 sed -i '/aliyuncs/d' /etc/yum.repos.d/CentOS-Base.repo

 sed -i '/aliyuncs/d' /etc/yum.repos.d/epel.repo

 sed -i 's/$releasever/7/g' /etc/yum.repos.d/CentOS-Base.repo



 #vi /etc/yum.repos.d/ceph.repo

[ceph-node]

name=ceph-node

baseurl=http://mirrors.163.com/ceph/rpm-jewel/el7/x86_64/

gpgcheck=0

[ceph-noarch]

name=cephnoarch

baseurl=http://mirrors.163.com/ceph/rpm-jewel/el7/noarch/

gpgcheck=0



 yum update -y





操作系统配置

    1:无密码访问配置

      在deploy节点(ceph-node1)上执行。配置deploy节点和其他ceph节点之间的无密码访问。

ssh-keygen -t rsa

ssh-copy-id -i /root/.ssh/id_rsa.pub -p 22 [email protected]

ssh-copy-id -i /root/.ssh/id_rsa.pub -p 22 [email protected]



    2:禁用Selinux,在所有ceph节点上执行(在三个ceph节点上操作)
systemctl disable firewalld.service
systemctl stop firewalld.service
sed -i "s/SELINUX=enforcing/SELINUX=disabled/"   /etc/selinux/config

    3:安装ntp,在所有ceph节点上执行(在三个ceph节点上操作)
      yum install ntp ntpdate -y
      systemctl restart ntpdate.service ntpd.service   
      systemctl enable ntpd.service ntpdate.service

   4.准备好环境后重启(在三个ceph节点上操作)
reboot

部署Ceph集群(注意:以下都是在ceph-node1操作)

    1:安装ceph-deploy
      yum install ceph-deploy -y
   
    2:用Ceph-deploy创建Ceph集群
      mkdir /etc/ceph
      cd /etc/ceph
      ceph-deploy new ceph-node1

      生成一个新的ceph集群,集群包括ceph配置文件以及monitor的密钥环。

    3:在ceph-node1安装ceph二进制软件包
      ceph-deploy install --no-adjust-repos ceph-node1 ceph-node2 ceph-node3

    4:修改ceph 配置文件
      [global]
      fsid = 7bac6963-0e1d-4cea-9e2e-f02bbae96ba7
      mon_initial_members = ceph-node1
      mon_host = 10.1.1.127
      auth_cluster_required = cephx
      auth_service_required = cephx
      auth_client_required = cephx
      public network = 10.1.1.0/24
 
    5:在ceph-node1上创建第一个ceph monitor
      ceph-deploy mon create-initial

    6:在ceph-node1上创建OSD
      ceph-deploy disk list ceph-node1(列出disk)
      ceph-deploy disk zap ceph-node1:sdb ceph-node1:sdc ceph-node1:sdd
      ceph-deploy osd create ceph-node1:sdb ceph-node1:sdc ceph-node1:sdd
    
    7:用Ceph-deploy在ceph-node1上创建ceph-node2、ceph-node3的monitor
      ceph-deploy mon create ceph-node2
      ceph-deploy mon create ceph-node3
      ceph –s
 
      ceph osd lspools
      ceph osd tree
      ceph osd pool delete rbd rbd --yes-i-really-really-mean-it    删除osd pool池
      ceph mon stat
    8:在ceph-node1上创建ceph-node2OSD
      ceph-deploy disk zap ceph-node3:sdb ceph-node2:sdc ceph-node2:sdd
      ceph-deploy osd create ceph-node2:sdb ceph-node2:sdc ceph-node2:sdd
      在ceph-node1上创建ceph-node3的OSD
      ceph-deploy disk zap ceph-node3:sdb ceph-node3:sdc ceph-node3:sdd
      ceph-deploy osd create ceph-node3:sdb ceph-node3:sdc ceph-node3:sdd
    9:调整rbd存储池的pg_num和pgp_num
      ceph osd pool set rbd pg_num 256
      ceph osd pool set rbd pgp_num 256



通过上面的步骤,一个all in one的ceph就成功部署了。
ceph -s

你可能感兴趣的:(ceph集群,运维)