centos7-ceph搭建指南

1.ceph安装原理

ceph分布式存储由若干个组件组成,包括:Ceph Monitor、Ceph OSD和Ceph .MDS,其中如果你仅使用对象存储和块存储时,MDS不是必须的,仅当你用使用Cephfs时,MDS才是需要安装的。
ceph的安装模型与k8是有些类似,也是通过一个deploy node远程操作其他Node以进行create、prepare和activate各个node上的组件,官方给的组件示意图如下.

2.本次安装实际环境

ceph-deploy 192.168.0.101
ceph-node1 192.168.0.101
ceph-node2 192.168.0.102
ceph-node3 192.168.0.103
ceph-node4 192.168.0.104

3.环境准备

  1. 配置host(各主机)

    vim /etc/hosts
    ceph-node1 192.168.0.101
    ceph-node2 192.168.0.102
    ceph-node3 192.168.0.103
    ceph-node4 192.168.0.104
  2. 创建ceph账户(各节点)

    useradd -d /home/${username} -m ${username}
    passwd ${uasername}
    cat << EOF > /etc/sudoers.d/ceph
    ceph All = (root) NOPAASSWD ALL
    EOF
    #创建账户ceph,官方不支持root,不推荐root,请注意。
  3. 配置免密登陆(各节点)

    ssh-keygen(各节点)
    #回车
    #回车
    #回车
    
    # 然后把master上的公钥拷贝到其他的节点上去(各节点)
    ssh-copy-id ceph@ceph-node2
    ssh-copy-id ceph@ceph-node3
    
    #编辑ssh配置文件,可使ceph远程登陆的时候直接 ssh ceph-node2 (=ssh ceph@ceph-node2)
    
    cat > ~/.ssh/config <
  4. 安装ntpd(主要是为了时钟同步)(各节点)

    yum install ntpdate -y &&ntpdate 0.asia.pool.ntp.org
  5. 安装ceph源(各节点)

    sudo yum install -y yum-utils && sudo yum-config-manager --add-repo https://dl.fedoraproject.org/pub/epel/7/x86_64/ && sudo yum install --nogpgcheck -y epel-release && sudo rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7 && sudo rm /etc/yum.repos.d/dl.fedoraproject.org*
    yum clean all
    yum makecache
    
  6. 安装ceph-deploy(ceph-node1)

    su - ceph
    mkdir ceph-cluster
    cd ceph-cluster
    ceph-deploy new ceph-node1
    #创建ceph新集群,ceph-node1是monit监控节点主机名
  7. 安装ceph(各节点)

    yum install ceph
  8. 创建并初始化监控节点(ceph-node1)

    cd ceph-cluster
    ceph-deploy mon create-initial
  9. 查看各节点ceph存储节点硬盘情况

    ceph-deploy disk list ceph-node1
    ceph-deploy disk list ceph-node2
    ceph-deploy disk list ceph-node3
  10. 创建数据节点(各节点),因为我只是测试没有没有挂载多余硬盘

    #ceph-node1
    sudo mkdir -p /data/osd0 && sudo chmod -R 777 /data/
    sudo chown -R ceph:ceph /data
    #ceph-node2
    sudo mkdir -p /data/osd1 && sudo  chmod -R 777 /data/
    sudo chown -R ceph:ceph /data
    #ceph-node3
    sudo mkdir -p /data/osd2 && sudo chmod -R 777 /data/
    sudo chown -R ceph:ceph /data
    
  11. 各虚拟机添加硬盘,并立即生效,格式为xfs格式。(各节点)

    #虚拟机添加磁盘
    echo "- - -" > /sys/class/scsi_host/host0/scan 
    echo "- - -" > /sys/class/scsi_host/host1/scan 
    echo "- - -" > /sys/class/scsi_host/host2/scan
    fdisk -l
    fdisk /dev/sdb
    #n
    #p
    #1
    #entry
    #enty
    #w
    mkfs.xfs /dev/sdb1
  12. 挂载磁盘到/data/osdx(各节点)

    mount /dev/sdb1 /data/osdx
  13. 准备OSD(ceph-node1)

    cd ceph-cluster
    ceph-deploy osd prepare ceph-node1:/data/osd0 ceph-node2:/data/osd1 ceph-node3:/data/osd2
  14. 激活OSD(ceph-node1)

    cd ceph-cluster
    ceph-deploy osd activate ceph-node1:/data/osd0 ceph-node2:/data/osd1 ceph-node3:/data/osd2
  15. 为了防止挂载好的磁盘下次重启或者开机生效,我们修改编辑/etc/fstab

    vim /etc/fstab
    #ceph-node1
    /dev/sdb1      /data/osd0        xfs     defaults        0 0
    #ceph-node2
    /dev/sdb1      /data/osd1        xfs     defaults        0 0
    #ceph-node3
    /dev/sdb1      /data/osd2        xfs     defaults        0 0
    
  16. ceph-deploy将配置文件和管理秘钥复制到管理节点和它的ceph节点。(ceph-node1)

    cd ceph-cluster
    ceph-deploy admin ceph-node1 ceph-node2 ceph-node3
  17. 更改文件权限

    sudo chown   -R ceph:ceph /etc/ceph
  18. 查看集群健康状态

    ceph health
  19. 创建文件系统(ceph-node1)

    ceph-deploy mds create ceph-node1
    ceph mds stat
    
  20. 查看pool,pool是存储数据时的逻辑分区,起到namespace作用。

    ceph osd lspools
  21. 创建ceph集群

    ceph osd pool create cephfs_data 10
  22. 创建ceph元数据

    ceph osd pool create cephfs_metadata 10
  23. 创建一个文件系统

    ceph fs new myceph  cephfs_metadata cephfs_data
    ceph mds stat
    
  24. 查看集群状态

    ceph -s
  25. 客户端安装ceph-fuse,并创建挂载目录(ceph-node4)

    yum install -y ceph-fuse
    mkdir /cephfs
    
  26. 复制配置文件到client

    rsync -e "ssh -p22" -avp [email protected]:/etc/ceph/ceph.conf /etc/ceph/
  27. 复制秘钥到client

    rsync -e "ssh -p22" -avp [email protected]:/etc/ceph/ceph.client.admin.keyring /etc/ceph/
  28. 查看ceph授权client

    ceph auth list
  29. 挂载文件到cephfs,并查看

    mkdir /cephfs
    ceph-fuse -m 192.168.0.101:6789 /cephfs
    df -Th
    
  30. 卸载挂载

    umount/cephfs
    
  31. 常用命令集

    查看ceph集群状态:ceph -s
    查看mon状态:ceph mon stat
    查看msd状态:ceph msd stat
    查看osd状态:ceph osd stat
    查看osd目录树(可以查看每个osd挂在哪台机,是否已启动):ceph osd tree
    
    查看机器的健康状态:ceph health
    查看ceph实时运行装填 ceph -w
    检查信息状态 ceph -s
    查看ceph存储状态 ceph df
    清除节点数据:
        ceph-deploy purge ceph-nodex
        ceph-deploy purgedata ceph-nodex
        #我发现清除后ceph-repo也会被清除,请注意
    为ceph创建一个admin用户并为admin用户创建一个密钥,把密钥保存到/etc/ceph目录下:
    # ceph auth get-or-create client.admin mds 'allow' osd 'allow ' mon 'allow ' > /etc/ceph/ceph.client.admin.keyring
    查看ceph集群中的认证用户及相关的key:ceph auth list
    查看mon的状态信息: ceph mon stat
    查看mon选举状态: ceph quorum_status
    查看mon映射信息 ceph mon dump
    

    最近在学习rook,想了解下ceph知识,未做深入了解,仅想理解原理和基本操作。

    基本的原理和概念,请看链接,我选取的都是精华。

    ceph中文文档

    ceph原理和简单部署

    ceph介绍,原理,架构