• ceph分布式存储


    ceph基础介绍

    ceph 是一个可靠地,自动均衡、自动恢复的分布式存储系统,根据使用场景可以划分为对象存储

    块存储和文件系统服务

    ceph的核心组件

    ceph OSDs

    基本功能:

    存储数据、复制数据、平衡数据、恢复数据等,与其他 osd 间进行心跳检查等,并将变化上报给 ceph Monitor ,一般情况一块磁盘对应一个 OSD ,由 OSD 管理磁盘,或者一个分区也可以成为一个 OSD。

    关联概念:Journal盘

    一般写数据到 ceph 集群时,都会先将数据写到 Journal 盘,然后每隔一段时间将 Journal 盘的数据刷新到文件系统中,一般为了读写延迟小,会采用 SSD 硬盘,分配 10G ,ceph 引用 Journa 盘可以让 ceph OSD 功能很快做小的操作;一个随机写入在一个连续类型的 Journal ,然后刷新到文件系统,这样可以给文件系统足够时间来合并写入磁盘。可以很有效的缓冲突发负载。

    ceph Monitor

    基本概念

    全称ceph metadata server,主要保存文件系统服务的元数据,但对象存储和块存储是不需要这个服务的

    ceph基础命令整理

    #查看已经创建的磁盘
     rbd ls -l 
    #查看ceph集群 
     ceph osd tree
    #查看ceph授权信息
    ceph auth get client.admin
    #清除磁盘上的逻辑卷
     /usr/sbin/ceph-volume lvm zap --destroy /dev/vdc
    #手动创建一个rbd磁盘
    rbd create --image-feature layering [rbd-name] -s 10240
    #移除monitor节点
     ceph-deploy mon destroy node4
    #详细列出集群每块磁盘的使用情况
        ceph osd df
    #检查 MDS 状态:
    ceph mds stat

    ceph集群构建

     cat << EOF > /etc/yum.repos.d/ceph.repo
    [ceph]
    name=ceph
    baseurl=http://mirrors.163.com/ceph/rpm-luminous/el7/x86_64/
    gpgcheck=0
    [ceph-noarch]
    name=ceph-noarch
    baseurl=http://mirrors.163.com/ceph/rpm-luminous/el7/noarch/
    gpgcheck=0 
    EOF
    
    [root@master ~]# cat /etc/hosts
    192.168.33.111 master
    192.168.33.112 node1
    192.168.33.113 node2
    [root@master ~]# ssh-keygen 
    [root@master ~]# ssh-copy-id node1
    [root@master ~]# ssh-copy-id node2
    
    同步时间 时区: 
    /1 * * * /usr/sbin/ntpdate -s time.pool.aliyun.com 
    timedatectl list-timezones # 列出所有时区 
    timedatectl set-timezone Asia/Shanghai # 设置系统时区为上海 
    cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
    
    #机器初始化设置
    sed -i  's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
    sed -i "s/PasswordAuthentication no/PasswordAuthentication yes/g" /etc/ssh/sshd_config
    systemctl restart sshd
    yum -y remove firewalld
    setenforce 0
    
    
    #相关下载
    rpm -Uvh https://download.ceph.com/rpm-luminous/el7/noarch/ceph-release-1-1.el7.noarch.rpm
    yum -y install epel-release yum-plugin-priorities yum-utils ntpdate
    yum install -y ceph-deploy ceph ceph-radosgw snappy leveldb gdisk python-argparse gperftools-libs
    
    #在每台机器上部署ceph,之前yum,已经安装过了
    ceph-deploy install --release luminous master node1 node2   #同上

    部署

    mkdir ceph-deploy &&  cd ceph-deploy
    
    #初始化ceph集群,配置文件相关
    ceph-deploy new master node1 node2  
    
    #添加到 ceph.conf
    public network = 10.0.4.0/26 #地址相等于node的ip地址段
    
    #初始化mon
    ceph-deploy mon create-initial 
    or
    ceph-deploy mon create master node1 node2
    #赋予各个节点使用命令面用户名权限
    #指定机器为admin权限
    ceph-deploy admin master node1 node2  
    #目的可以执行
    ceph -s
    
    #部署mgr
    ceph-deploy mgr create master node1 node2
    
    #添加osd
    ceph-deploy osd create --data /dev/sdb master 
    ceph-deploy osd create --data /dev/sdb node1 
    ceph-deploy osd create --data /dev/sdb node2
    
    #创建管理域密钥
    ceph auth get-or-create mgr.master mon 'allow profile mgr' osd 'allow *' mds 'allow *'
    #方法2:
    ceph auth get-key client.admin | base64
    
    #开启 ceph-mgr 管理域
    ceph-mgr -i master
    #开启dashboard
    ceph mgr module enable dashboard
    
    #绑定开启 dashboard 模块的 ceph-mgr 节点的 ip 地址
    ceph config-key set mgr/dashboard/master/server_addr 192.168.33.111 
    dashboard 默认运行在7000端口
    
    #创建pool
    #若少于5个OSD, 设置pg_num为128。
    #5~10个OSD,设置pg_num为512。
    #10~50个OSD,设置pg_num为4096。
    #超过50个OSD,可以参考pgcalc计算。
    ceph osd pool create rbd 128 128 
    rbd pool init rbd
    
    #删除pool
    ceph osd pool rm rbd rbd –yes-i-really-really-mean-it 
    ceph.conf 添加 
    mon_allow_pool_delete = true
    
    #推送配置文件:
    ceph-deploy --overwrite-conf config push master 
    ceph-deploy --overwrite-conf config push node1 
    ceph-deploy --overwrite-conf config push node2

    添加删除OSD节点

    #添加osd节点node4:
    #在节点node4上面安装ceph,并复制ceph.conf到其相应的位置,同时在/etc/hosts中添加node4节点
    #确保node1上有充足的空间进行写数据,执行下面的写命令的同时扩展集群
    dd if=/dev/zero of=/mnt/ceph-vol1/file1 count=10240 bs=1M #node1节点
    ceph-deploy disk zap ceph-node4:sdb ceph-node4:sdc ceph-node4:sdd #node4节点
    ceph-deploy osd create ceph-node4:sdb ceph-node4:sdc ceph-node4:sdd  #node4节点
    watch ceph status  #动态打印ceph的状态
    #在node4硬盘添加完成,集群会恢复健康

    删除OSD节点的node4

    #查看节点node4上的所有osd,比如osd.9 osd.10:
    ceph osd tree #查看目前cluster状态
    #把node4上的所欲osd踢出集群:(node1节点上执行)
    ceph osd out osd.9
    ceph osd out osd.10
    #让node4上的所有osd停止工作:(node4上执行)
    service ceph stop osd.9
    service ceph stop osd.10
    #查看node4上osd的状态是否为down,权重为0
    ceph osd tree
    #移除node4上的所有osd:
    ceph osd crush remove osd.9
    ceph osd crush remove osd.10
    #删除节点node4:
    ceph osd crush remove ceph-node4

    替换一个失效的磁盘驱动

    #首先ceph osd tree 查看down掉的osd,将因磁盘问题down掉的osd及相关key删除
    ceph osd out osd.0       #都在node1节点下执行
    ceph osd crush rm osd.0
    ceph auth del osd.0
    ceph osd rm osd.0
    #zap新磁盘 清理新磁盘:
    ceph-deploy disk zap node1:sdb
    #在磁盘上新建一个osd,ceph会把它添加为osd:0:
    ceph-deploy --overwrite-conf osd create node1:sdb

    使用storage class自动获取存储空间

    启动ceph-device

    https://github.com/kubernetes-incubator/external-storage

    启动ceph-rbd

    kind: StorageClass
    apiVersion: storage.k8s.io/v1
    metadata:
      name: prod-sc
      namespace: default
      annotations:
         storageclass.kubernetes.io/is-default-class: "false"
    provisioner: ceph.com/rbd
    reclaimPolicy: Retain
    parameters:
      monitors: node1:6789,node3:6789,node2:6789
      adminId: admin
      adminSecretName: storage-secret
      adminSecretNamespace: default
      pool: rbd
      userId: admin
      userSecretName: storage-secret
      imageFormat: "2"
      imageFeatures: "layering"
    #sercet
    apiVersion: v1
    kind: Secret
    metadata:
      name: storage-secret
      namespace: default
    data:
      key: QVFCU0xqdGI0WXFsQnhBQWtpM1dRTkRxOFRybmh4SWdDUEk5ZUE9PQ==   #base64加密/unbase64 解密的密文,可以 ceph auth get-key client.admin | base64 
    type:
      kubernetes.io/rbd
    #测试:
    kind: PersistentVolumeClaim
    apiVersion: v1
    metadata:
      name: ceph-sc-test
      namespace: default
    spec:
      storageClassName: prod-sc
      accessModes:
      - ReadWriteOnce
      resources:
        requests:
          storage: 5Gi
  • 相关阅读:
    Spring-security+Oauth2.0 零散知识汇总(备忘)
    Java Mail 发送邮件 JMail 多人 解决乱码 带附件
    AngularJs 性能优化英文原版(个人备份使用)
    Java基础练习- Java-Swing 拼图游戏 第一部分:创建java窗口添加窗口元素
    Json格式页面解析不出来
    spring-security 异常处理求助
    MySQL-存储过程
    吸血鬼数字
    浏览器的兼容性
    es6-----promise
  • 原文地址:https://www.cnblogs.com/lwl117/p/11267827.html
Copyright © 2020-2023  润新知