centos7-ceph搭建指南


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 <<EOF(各节点)
    Host ceph-node1
       Hostname ceph-node1
       User ceph
    Host ceph-node2
       Hostname ceph-node2
       User ceph
    Host ceph-node3
       Hostname ceph-node3
       User ceph
    EOF
    chmod 600 config
    yum install ceph-deploy -y
  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

```
  1. 各虚拟机添加硬盘,并立即生效,格式为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
  2. 挂载磁盘到/data/osdx(各节点)

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

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

    cd ceph-cluster
    ceph-deploy osd activate ceph-node1:/data/osd0 ceph-node2:/data/osd1 ceph-node3:/data/osd2
  5. 为了防止挂载好的磁盘下次重启或者开机生效,我们修改编辑/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
  6. ceph-deploy将配置文件和管理秘钥复制到管理节点和它的ceph节点。(ceph-node1)

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

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

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

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

    ceph osd lspools
  5. 创建ceph集群

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

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

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

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

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

    rsync -e "ssh -p22" -avp root@192.168.0.101:/etc/ceph/ceph.conf /etc/ceph/
  11. 复制秘钥到client

    rsync -e "ssh -p22" -avp root@192.168.10.200:/etc/ceph/ceph.client.admin.keyring /etc/ceph/
  12. 查看ceph授权client

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

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

    umount/cephfs
  15. 常用命令集

    查看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中文文档](http://docs.ceph.org.cn/)

[ceph原理和简单部署](https://www.cnblogs.com/kevingrace/p/8387999.html)

[ceph介绍,原理,架构](https://blog.csdn.net/uxiAD7442KMy1X86DtM3/article/details/81059215)