• ceph分布式存储的搭建


    发现 ceph 在最近几年发展火热,也有很多案例落地企业。

    ceph是无中心化的存储,它没有管理节点、计算节点的之分。
    ceph的文件是被分片的,每一个数据块是 一个对象,对象保存在不同的服务器上。当节点失效,自动迁移数据,重新复制副本。可以动态的添加元数据服务器和存储节点,容量可以动态扩展。
    ceph分为mon监视器节点(至少一个)、osd对象存储节点(至少2个)、mds元数据节点。
    osd 进程负责存储数据、处理数据的复制、恢复、回填、再平衡。并通过其他的osd守护进程的心跳,来向mon提供一些监控信息。当你设置osd有2个副本的时候,至少需要2个osd守护进程才能达到archive+clean的状态,默认有3个副本。
    mon 负责维护集群状态的各种图表,包括监视图和osd图等。
    mds 负责为ceph文件系统存储数据的时候才使用。
    存储的过程 :存储的文件数据归类为对象object;对象放在对应的池子里面(pool);pool由若干个pg组成;pg是由若干个osd组成;osd是由硬盘组成。
    环境
    node1 172.16.1.201 管理节点 数据节点
    node2 172.16.1.202 数据节点

    node3 172.16.1.203 数据节点

    上述要加入/etc/hosts文件里面。

    该实验的操作系统为centos 7,ceph k版本。

    ceph的部署
    1、关闭系统上的防火墙 以及selinux

    2、拷贝管理节点的秘钥到其他节点实现无密码登录

    ssh-keygen -t rsa
    ssh-copy-id root@ceph-node1 .....
    3、在各个节点上配置需要的yum源

    [Ceph]
    name=Ceph packages for $basearch
    baseurl=http://mirrors.163.com/ceph/rpm-kraken/el7/$basearch
    enabled=1
    priority=1
    gpgcheck=1
    gpgkey=https://download.ceph.com/keys/release.asc
    [Ceph-noarch]
    name=Ceph noarch packages
    baseurl=http://mirrors.163.com/ceph/rpm-kraken/el7/noarch
    enabled=1
    priority=1
    gpgcheck=1
    gpgkey=https://download.ceph.com/keys/release.asc
    [ceph-source]
    name=Ceph source packages
    baseurl=http://mirrors.163.com/ceph/rpm-kraken/el7/SRPMS
    enabled=0
    priority=1
    gpgcheck=1
    gpgkey=https://download.ceph.com/keys/release.asc
    4、管理节点安装ceph-deploy工具

    [root@node1 yum.repos.d]# yum -y install ceph-deploy
    5、管理节点创建工作目录

    [root@node1 ~]# mkdir -p /etc/ceph
    6 、创建两个mon
    [root@node1 ~]# cd /etc/ceph
    [root@node1 ceph]# ls
    [root@node1 ceph]# ceph-deploy new node1 node2 ##这个意思是在node1和node2上分别创建一个mon,
    [root@node1 ceph]# ls
    ceph.conf ceph-deploy-ceph.log ceph.mon.keyring
    7、默认情况下最少是需要一个mon、 2个osd

    在配置文件ceph.conf 中加入我们的业务网段配置public network =172.16.22.0/24,结果如下:

    [root@node1 ceph]# vim ceph.conf
    [global]
    fsid = 2e6519d9-b733-446f-8a14-8622796f83ef
    mon_initial_members = node1,node2
    mon_host = 172.16.22.201,172.16.22.202
    auth_cluster_required = cephx
    auth_service_required = cephx
    auth_client_required = cephx
    public network =172.16.22.0/24
    8、 安装ceph 集群
    [root@node1 ceph]# ceph-deploy install node1 node2
    9、 初始化mon 并收集所有的秘钥

    [root@node1 ceph]# ceph-deploy mon create-initial

    [root@node1 ceph]# ls
    ceph.bootstrap-mds.keyring ceph.bootstrap-osd.keyring ceph.client.admin.keyring ceph-deploy-ceph.log rbdmap
    ceph.bootstrap-mgr.keyring ceph.bootstrap-rgw.keyring ceph.conf ceph.mon.keyring
    10、查看创建的集群用户

    [root@node1 ceph]# ceph auth list
    installed auth entries:
    client.admin
    key: AQBavtVb2irGJBAAsbJcna7p5fdAXykjVbxznA==
    caps: [mds] allow *
    caps: [mgr] allow *
    caps: [mon] allow *
    caps: [osd] allow *
    client.bootstrap-mds
    key: AQBavtVbbNgXOxAAkvfj6L49OUfFX5XWd651AQ==
    caps: [mon] allow profile bootstrap-mds
    client.bootstrap-mgr
    key: AQBbvtVbwiRJExAAdsh1uG+nL8l3UECzLT4+vw==
    caps: [mon] allow profile bootstrap-mgr
    client.bootstrap-osd
    key: AQBbvtVbUV0NJxAAJAQ/yBs0c37C7ShBahwzsw==
    caps: [mon] allow profile bootstrap-osd
    client.bootstrap-rgw
    key: AQBbvtVb/h/pOhAAmwK9r8DeqlOpQHxz9F/9eA==
    caps: [mon] allow profile bootstrap-rgw
    mgr.node1
    key: AQBXvtVbeW/zKBAAfntYBheS7AkCwimr77PqEQ==
    caps: [mon] allow *
    11、创建osd

    创建osd有两种方式

    a、使用系统裸盘,作为存储空间;

    b、使用现有文件系统,以目录或分区作为存储空间,官方建议为 OSD 及其日志使用独立硬盘或分区作为存储空间

    1)、使用分区

    [root@node1 ceph]#ceph-deploy disk zap node1:/dev/sdb node2:/dev/sdb ##通过zap命令清除分区及磁盘内容
    [root@node1 ceph]#ceph-deploy osd prepare node1:/dev/sdb node2:/dev/sdb
    [root@node1 ceph]#ceph-deploy osd activate node1:/dev/sdbnode2:/dev/sdb
    2)、 使用目录

    [root@node1 ceph]#ssh node1 “mkdir /data/osd0;chown -R ceph:ceph /data/osd0"
    [root@node1 ceph]#ssh node2 “mkdir /data/osd0;chown -R ceph:ceph /data/osd0
    [root@node1 ceph]# ceph-deploy osd prepare node1:/data/osd0 node2:/data/osd0
    [root@node1 ceph]# ceph-deploy osd activate node1:/data/osd0 node2:/data/osd0
    12、使用ceph-deploy把配置文件和admin 秘钥下发到所有节点

    [root@node1 ceph]# ceph-deploy admin node1 node2
    13 、给每一个节点的keyring 增加 r 权限

    chmod +r /etc/ceph/ceph.client.admin.keyring
    14、 检查集群的健康状况
    [root@node1 ceph]# ceph -s
    cluster 2e6519d9-b733-446f-8a14-8622796f83ef
    health HEALTH_WARN #这个警告可以忽略
    64 pgs degraded
    64 pgs stuck unclean
    64 pgs undersized
    monmap e2: 1 mons at {node1=172.16.22.201:6789/0}
    election epoch 4, quorum 0 node1
    mgr active: node1
    osdmap e9: 2 osds: 2 up, 2 in ##看这,个数是否对
    flags sortbitwise,require_jewel_osds,require_kraken_osds
    pgmap v21: 64 pgs, 1 pools, 0 bytes data, 0 objects
    22761 MB used, 15722 MB / 38484 MB avail
    64 active+undersized+degraded

    [root@node1 ceph]# ceph health
    HEALTH_WARN 64 pgs degraded; 64 pgs stuck unclean; 64 pgs undersized
    [root@node1 ceph]# ceph osd tree
    ID WEIGHT TYPE NAME UP/DOWN REWEIGHT PRIMARY-AFFINITY
    -1 0.03677 root default
    -2 0.01839 host node1
    0 0.01839 osd.0 up 1.00000 1.00000
    -3 0.01839 host node2
    1 0.01839 osd.1 up 1.00000 1.00000
    [root@node1 ceph]# ceph df
    GLOBAL:
    SIZE AVAIL RAW USED %RAW USED
    38484M 15719M 22764M 59.15
    POOLS:
    NAME ID USED %USED MAX AVAIL OBJECTS
    rbd 0 0 0 4570M 0
    这样,我们就搭建完了两个节点的ceph集群,其中1个mon,2个osd。
    下面我们再介绍mon和osd的扩展
    ceph集群的扩展
    新增一个osd node3
    1、以下操作,大部分命令是在node1上执行的(前面我们让node1充当管理节点)

    #切换到node1的/etc/ceph目录下
    [root@node1 ~]# cd /etc/ceph/
    #给node3上安装ceph-deploy软件,但是如下命令要在node1上执行
    [root@node1 ceph]# ceph-deploy install node3
    #下面这个命令在node3上执行
    [root@node3 ceph]# mkdir /data/osd0 -p
    [root@node3 ceph]# chown -R ceph:ceph /data/osd0
    #给node3创建osd
    [root@node1 ceph]# ceph-deploy osd prepare node3:/data/osd0
    [root@node1 ceph]# ceph-deploy osd activate node3:/data/osd0
    #查看node3已经被加入集群里面了
    [root@node1 ceph]# ceph -s
    cluster 2e6519d9-b733-446f-8a14-8622796f83ef
    health HEALTH_OK
    monmap e2: 1 mons at {node1=172.16.22.201:6789/0}
    election epoch 4, quorum 0 node1
    mgr active: node1
    osdmap e14: 3 osds: 3 up, 3 in
    flags sortbitwise,require_jewel_osds,require_kraken_osds
    pgmap v7372: 64 pgs, 1 pools, 0 bytes data, 0 objects
    35875 MB used, 21850 MB / 57726 MB avail
    64 active+clean
    [root@node1 ceph]#
    [root@node1 ceph]#
    [root@node1 ceph]# ceph osd tree
    ID WEIGHT TYPE NAME UP/DOWN REWEIGHT PRIMARY-AFFINITY
    -1 0.05516 root default
    -2 0.01839 host node1
    0 0.01839 osd.0 up 1.00000 1.00000
    -3 0.01839 host node2
    1 0.01839 osd.1 up 1.00000 1.00000
    -4 0.01839 host node3
    2 0.01839 osd.2 up 1.00000 1.00000


    增加一个新的mon在node3 上面
    在node1上执行

    [root@node1 ceph]# ceph-deploy mon add node3
    [root@node1 ceph]# ceph -s
    cluster 2e6519d9-b733-446f-8a14-8622796f83ef
    health HEALTH_OK
    monmap e4: 3 mons at {node1=172.16.22.201:6789/0,node2=172.16.22.202:6789/0,node3=172.16.22.203:6789/0}
    election epoch 8, quorum 0,1,2 node1,node2,node3
    mgr active: node1 standbys: node3, node2
    osdmap e14: 3 osds: 3 up, 3 in
    flags sortbitwise,require_jewel_osds,require_kraken_osds
    pgmap v7517: 64 pgs, 1 pools, 0 bytes data, 0 objects
    35890 MB used, 21835 MB / 57726 MB avail
    64 active+clean
    [root@node1 ceph]# ceph mon stat
    e4: 3 mons at {node1=172.16.22.201:6789/0,node2=172.16.22.202:6789/0,node3=172.16.22.203:6789/0}, election epoch 10, quorum 0,1,2 node1,node2,node3
    在node1增加一个元数据的角色
    元数据是在文件系统时才有用,而我们用的是块设备,所以就没用了

    [root@node1 ceph]#ceph-deploy mds create node1

  • 相关阅读:
    [转]面向接口编程详解(二)——编程实例
    [转]面向接口编程详解(一)——思想基础
    [转] LINQ to SQL快速上手 step by step
    Java备份MySQl数据库,并备份图片数据
    用密码密码拦截
    引用 MySQL集群:主从数据库配置 实现查询负载
    Oracle 对表操作 提示:资源正忙,要求指定nowait
    Jquery一款非好的图片轮换效果
    CodeBlocks集成ObjectiveC开发 Windows下学习ObjectiveC
    查询指定库中所有表
  • 原文地址:https://www.cnblogs.com/davidchen211/p/11720510.html
Copyright © 2020-2023  润新知