ceph部署搭建(12.2.13-luminous)超详细

简介

Ceph是一个可无限伸缩的开源分布式存储系统,设计初衷是提供较好的性能、可靠性和可扩展性,它基于RADOS实现。在经过了数年的发展之后,目前已得到众多云计算厂商的支持并被广泛应用,RedHat及OpenStack都可与Ceph整合以支持虚拟机镜像的后端存储。

ceph特点

高性能

1,摒弃了传统的集中式存储元数据寻址的方案,采用 CRUSH 算法,数据分布均衡,并行度高。
2,考虑了容灾域的隔离,能够实现各类负载的副本放置规则,例如跨机房、机架感知等。
3,能够支持上千个存储节点的规模,支持 TB 到 PB 级的数据。

高可用性

1,副本数可以灵活控制。
2,支持故障域分隔,数据强一致性。
3,多种故障场景自动进行修复自愈。
4,没有单点故障,自动管理。

高可扩展性

1,去中心化。
2,扩展灵活。
3,随着节点增加而性能线性增长。

特性丰富

  1. 支持三种存储接口:块存储、文件存储、对象存储。
  2. 支持自定义接口,支持多种语言驱动。

Ceph部署(版本:12.2.13-luminous)

环境准备

  1. 三台机器为centos7系统,根据ceph官方建议,对kernel使用elrepo源进行了升级,版本为5.4.103

  2. 三台机器都设置hostname,并将/etc/hosts文件添加如下映射

    10.0.1.170 ceph-170
    10.0.1.171 ceph-171
    10.0.1.172 ceph-172
    
  3. 所有机器关闭防火墙和selinux

  4. 每台机器准备两块数据盘。这里我的数据盘是/dev/xvdc和/dev/xvde

  5. 所有机器创建阿里云源

    cat << EOF >> /etc/yum.repos.d/ceph.repo
    [ceph]
    name=ceph
    baseurl=http://mirrors.aliyun.com/ceph/rpm-luminous/el7/x86_64/
    gpgcheck=0
    priority=1
    
    [ceph-noarch]
    name=cephnoarch
    baseurl=http://mirrors.aliyun.com/ceph/rpm-luminous/el7/noarch/
    gpgcheck=0
    priority=1
    
    [ceph-source]
    name=Ceph source packages
    baseurl=http://mirrors.aliyun.com/ceph/rpm-luminous/el7/SRPMS
    gpgcheck=0
    priority=1
    EOF
    
  6. 打通170到本机170,171,172的ssh免密登录,这里用ssh-copy-id即可

  7. 所有节点安装ntp时间服务器:

    yum install -y ntp && systemctl start ntpd
    

安装配置ceph存储

在ceph1上执行,以初始化:
  1. 安装部署工具:

    yum install -y ceph-deploy
    
  2. 创建配置文件目录:

    mkdir /etc/ceph && cd /etc/ceph
    
  3. 新建集群:

    ceph-deploy new ceph-170
    
  4. 安装集群:

    ceph-deploy install ceph-170 ceph-171 ceph-172
    
  5. 在ceph1上执行,修改配置文件

    cat << EOF >> /etc/ceph/ceph.conf
    public_network = 10.0.1.0/24
    mon_allow_pool_delete = true
    
    [mgr]
    mgr modules = dashboard
    EOF
    
  6. 同步配置文件:

    scp /etc/ceph/ceph.conf  ceph-171:/etc/ceph/ && scp  /etc/ceph/ceph.conf  ceph-172:/etc/ceph/
    
  7. 在节点开启mon服务:

    ceph-deploy mon create ceph-170 ceph-171 ceph-172
    
  8. 收集所有节点的key:

    ceph-deploy gatherkeys ceph-170 ceph-171 ceph-172
    
  9. 列举磁盘:

    ceph-deploy disk list ceph-170 && ceph-deploy disk list ceph-171 && ceph-deploy disk list ceph-172
    
  10. 擦净磁盘:

    ceph-deploy disk zap ceph-170 /dev/xvdc /dev/xvde && ceph-deploy disk zap ceph-171 /dev/xvdc /dev/xvde && ceph-deploy disk zap ceph-172 /dev/xvdc /dev/xvde
    
  11. 添加osd:

    ceph-deploy osd create --data /dev/xvdc ceph-170 && ceph-deploy osd create --data /dev/xvde ceph-170 && ceph-deploy osd create --data /dev/xvdc ceph-171 ceph-deploy osd create --data /dev/xvd3 ceph-171 && ceph-deploy osd create --data /dev/xvdc ceph-172 && ceph-deploy osd create --data /dev/xvde ceph-172
    
  12. 开启ceph manager(mgr)服务:

    ceph-deploy mgr create ceph-170 ceph-171 ceph-172
    
  13. 同步配置文件和key:

    ceph-deploy admin ceph-170 ceph-171 ceph-172
    
  14. 开启图形化界面:

    ceph mgr module enable dashboard
    
  15. 开始ceph mds服务:

    ceph-deploy mds create ceph-170 ceph-171 ceph-172
    
  16. 查看集群状态:

    ceph -s
    
存储池和块存储
  1. 创建一个存储池(这里存储池默认副本为3,容量为所有osd空间/3,pg数量为128,因为每个osd最大pg数量为250,这里是6块盘,最大就是1500个pg,而pool副本为3,如果设置512个pg,就会占用512*3,超过pg最大值,会报错,看需求设置,我这里是128):

    ceph osd pool create mypool 128
    
  2. 为存储池开启rgw:

    ceph osd pool application enable mypool rgw
    
  3. 修改pool副本数量为2个,默认是3个:

    ceph osd pool set mypool size 2
    
  4. 查看pool副本:

    ceph osd pool get mypool size
    
  5. 查看所有存储池:

    ceph osd lspools
    
  6. 创建一个映像(这里是在存储池mypool下创建一个testdev的块设备,大小为10240mb,也就是10G):

    rbd create mypool/testdev --size 10240 --image-feature=layering
    
  7. 查看映像属性:

    rbd info mypool/testdev
    
  8. 映射到块设备:

    rbd map mypool/testdev --id admin
    
  9. 查看映射的块设备(这里直接格式话块设备就能当正常磁盘使用挂载):

    rbd showmapped
    
  10. 外部机器设备使用该映像?这里其他机器使用iscsi远程挂载磁盘,k8s里用ceph-common挂载到pod

文件系统cephfs
  1. 创建两个pool,一个放置fs的元数据,一个放置普通数据:

    ceph osd pool create mydata 128 && ceph osd pool create mymedata 128
    
  2. pool开启rgw:

    ceph osd pool application enable mydata rgw && ceph osd pool application enable mymedata rgw
    
  3. pool开启cephfs:

    ceph osd pool application enable mydata cephfs --yes-i-really-mean-it && ceph osd pool application enable mymedata cephfs --yes-i-really-mean-it
    
  4. 创建cephfs(这里就可以像nfs一样作为文件系统被外置挂载了):

    ceph fs new k8sfs mymedata mydata
    
  5. 查看cephfs列表:

    ceph fs ls
    
  6. 获取机器的key:

    cat /etc/ceph/ceph.client.admin.keyring
    
  7. 其他机器客户端挂载,linux内核3.1以上:

    mount -t ceph -o name=admin,secret=上面获取的key值 10.0.1.170:6789,10.0.1.171:6789,10.0.1.172:6789:/data/ /cephfs/
    
  8. 安装ceph fuse,客户端创建目录:

    yum install ceph-fuse && mkdir /etc/ceph/
    
  9. 使用ceph fuse挂载,服务端拷贝ceph的conf和key到客户端目录:

    scp /etc/ceph/ceph.conf客户端ip:/etc/ceph/ceph.conf && scp /etc/ceph/ceph.client.admin.keyring 客户端ip:/etc/ceph/ceph.client.admin.keyring
    
  10. 使用ceph fuse挂载:

    ceph-fuse -m 10.0.1.170:6789 /cephfs/
    
  11. K8s内挂载安装ceph-fuse即可,内部的pod可直接挂载

新增或删除节点

新增节点
  1. 将新的节点ip,这里我是10.0.1.186,加入到原来ceph集群的节点hosts内,原3个节点执行:

    echo '10.0.1.186  ceph-186' >> /etc/hosts
    
  2. 给新节点186配置hosts

    cat << EOF >> /etc/hosts
    10.0.1.170   ceph-170
    10.0.1.171   ceph-171
    10.0.1.172   ceph-172
    10.0.1.186   ceph-186
    EOF
    
  3. 给新节点配置ceph阿里源

    cat << EOF >> /etc/yum.repos.d/ceph.repo
    [ceph]
    name=ceph
    baseurl=http://mirrors.aliyun.com/ceph/rpm-luminous/el7/x86_64/
    gpgcheck=0
    priority=1
    
    [ceph-noarch]
    name=cephnoarch
    baseurl=http://mirrors.aliyun.com/ceph/rpm-luminous/el7/noarch/
    gpgcheck=0
    priority=1
    
    [ceph-source]
    name=Ceph source packages
    baseurl=http://mirrors.aliyun.com/ceph/rpm-luminous/el7/SRPMS
    gpgcheck=0
    priority=1
    EOF
    
  4. 在配置节点(安装了ceph-deploy)上,这里是10.0.1.170执行:

    cd /etc/ceph && ceph-deploy install ceph-186
    
  5. 在配置节点执行,拷贝配置文件:

    scp /etc/ceph/ceph.conf ceph-186:/etc/ceph/ && scp /etc/ceph/ceph.client.admin.keyring ceph-186:/etc/ceph/
    
  6. 在配置节点执行,添加186mon节点:

    ceph-deploy mon create ceph-186
    
  7. 在配置节点执行,收集186节点key:

    ceph-deploy gatherkeys ceph-186
    
  8. 在配置节点执行,列举磁盘:

    ceph-deploy disk list ceph-186
    
  9. 在配置节点执行,擦净磁盘:

    ceph-deploy disk zap ceph-186 /dev/xvdc && ceph-deploy disk zap ceph-186 /dev/xvde
    
  10. 在配置节点执行,添加186mgr节点:

    ceph-deploy mgr create ceph-186
    
  11. 在配置节点执行,添加186mds节点:

    ceph-deploy mds create ceph-186
    
  12. 在配置节点执行,添加186osd节点:

    ceph-deploy osd create --data /dev/xvdc ceph-186 && ceph-deploy osd create --data /dev/xvde ceph-186
    
  13. 在186上执行,开启图形界面:

    ceph mgr module enable dashboard
    
  14. 这时已经添加完成,查看集群状态,执行:

    ceph -s
    
删除节点
  1. 删除一个mon节点,例如186,执行:

    ceph-deploy mon destroy ceph-186
    
  2. 删除一个mgr节点,例如186,执行:

    ceph-deploy mgr destroy ceph-186
    
  3. 删除一个mds节点,例如186,执行:

    ceph-deploy mds destroy ceph-186
    
  4. 如果有磁盘或机器故障需要更换或者移除一个osd节点

  5. 先在ceph管理界面的osds查看需要移除的osd磁盘id编号(这里我拿osd 7来举例)

  6. 如果是磁盘故障或是更换而机器正常,执行:

    systemctl stop ceph-osd@7.service
    
  7. 如果是机器故障,则从这一步开始,osd踢出集群,执行:

    ceph osd out osd.7
    
  8. 从crush中移除节点,让集群crush重新计算,执行:

    ceph osd crush remove osd.7
    
  9. 删除osd节点,执行:

    ceph osd rm osd.7
    
  10. 删除osd节点认证,不删编号会被占用,执行:

    ceph auth del osd.7
    
  11. 这样就移除成功了

  12. 如果需要从集群中移除osd的hosts节点,执行:

    ceph osd crush rm ceph-187
    
  13. 其他osd的操作

  14. 查看osd简单状态,执行:

    ceph osd stat
    
  15. 查看osd的详细状态,执行:

    ceph osd dump
    
  16. 查看指定osd的详细状态,执行:

    ceph osd dump 7
    
  17. 查看osd目录树,执行:

    ceph osd tree
    
  18. 下线osd,让osd不接受读写请求,但osd仍存活,执行:

    ceph osd down 7
    
  19. 上线osd,让osd接受读写请求,执行:

    ceph osd up 7
    
  20. 暂停osd集群,执行:

    ceph osd pause
    
  21. 重新开启osd集群,执行:

    ceph osd unpause
    

如果觉得该文章对你有帮助的话请给我点个👍吧,感谢

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Anime777

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值