zoukankan      html  css  js  c++  java
  • 使用cephadm安装ceph octopus

    https://docs.ceph.com/en/latest/cephadm/#   cephad工具官网介绍

    一、基础配置

    Cephadm使用容器和systemd安装和管理Ceph集群,并与CLI和仪表板GUI紧密集成。

    • cephadm仅支持octopus  v15.2.0和更高版本。
    • cephadm与新的业务流程API完全集成,并完全支持新的CLI和仪表板功能来管理集群部署。
    • cephadm需要容器支持(podman或docker)和Python 3。
    • 时间同步

    使用的centos8来安装的ceph,已经内置了python3,不再单独安装,centos7需要单独安装python3

    1、配置hosts解析

    # cat /etc/hosts
    192.168.40.132 node1
    192.168.40.133 node2
    192.168.40.134 node3
    

    2、关闭防火墙和selinux

    systemctl stop firewalld && systemctl disable firewalld
    setenforce 0 && sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
    

    3、设置主机名

    hostnamectl set-hostname node1
    hostnamectl set-hostname node2
    hostnamectl set-hostname node3
    

    4、配置主机时间同步

    dnf install -y chrony
    
    mv /etc/chrony.conf /etc/chrony.conf.bak
    
    cat > /etc/chrony.conf <<EOF
    server ntp.aliyun.com iburst
    stratumweight 0
    driftfile /var/lib/chrony/drift
    rtcsync
    makestep 10 3
    bindcmdaddress 127.0.0.1
    bindcmdaddress ::1
    keyfile /etc/chrony.keys
    commandkey 1
    generatecommandkey
    logchange 0.5
    logdir /var/log/chrony
    EOF
    
    systemctl enable chronyd
    systemctl restart chronyd
    

    5、安装docker-ce

    dnf config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
    dnf install -y https://download.docker.com/linux/centos/7/x86_64/stable/Packages/containerd.io-1.2.13-3.1.el7.x86_64.rpm
    dnf -y install docker-ce --nobest
    sudo mkdir -p /etc/docker
    sudo tee /etc/docker/daemon.json <<-'EOF'
    {
      "registry-mirrors": ["https://s7owcmp8.mirror.aliyuncs.com"]
    }
    EOF
    sudo systemctl daemon-reload
    sudo systemctl restart docker
    sudo systemctl enable docker
    

    二、安装cephadm

    cephadm命令可以

    1. 引导新集群
    2. 使用有效的Ceph CLI启动容器化的Shell
    3. 帮助调试容器化的Ceph守护进程。

    以下操作只在一台节点执行就可以

    使用curl获取独立脚本的最新版本。网络不好的话可直接去GitHub复制

    curl --silent --remote-name --location https://github.com/ceph/ceph/raw/octopus/src/cephadm/cephadm  (wget也行)
    chmod +x cephadm
    

    安装cephadmn

    ./cephadm add-repo --release octopus
    ./cephadm install
    

    引导新群集

    要引导群集,需要先创建一个目录:/etc/ceph

    mkdir -p /etc/ceph
    

    然后运行该命令:ceph bootstrap

    cephadm bootstrap --mon-ip 192.168.40.132
    

    此命令将会进行以下操作:

    • 为本地主机上的新群集创建monitor和manager守护程序。
    • 为 Ceph 群集生成新的 SSH 密钥,并将其添加到root用户的文件/root/.ssh/authorized_keys
    • 将与新群集通信所需的最小配置文件保存到 /etc/ceph/ceph.conf
    • client.admin管理(特权!)密钥的副本写入/etc/ceph/ceph.client.admin.keyring
    • 将公钥的副本写入/etc/ceph/ceph.pub

    安装完成后会有一个dashboard界面

    Mgr epoch 13 is available
    Generating a dashboard self-signed certificate...
    Creating initial admin user...
    Fetching dashboard port number...
    Ceph Dashboard is now available at:
    
    	     URL: https://node1:8443/
    	    User: admin
    	Password: rlvdfqj1di
    
    You can access the Ceph CLI with:
    
    	sudo /usr/sbin/cephadm shell --fsid 418abd02-42a9-11eb-91f4-000c298c369a -c /etc/ceph/ceph.conf -k /etc/ceph/ceph.client.admin.keyring
    
    Please consider enabling telemetry to help improve Ceph:
    
    	ceph telemetry on
    
    For more information see:
    
    	https://docs.ceph.com/docs/master/mgr/telemetry/
    
    Bootstrap complete.
    

    浏览器访问8443

    浏览器访问3000(ceph监控)

    执行完成后我们可以查看ceph.conf已经写入了

    [root@node1 ~]# ll /etc/ceph/
    total 12
    -rw-------. 1 root root  63 Dec 20 17:55 ceph.client.admin.keyring
    -rw-r--r--. 1 root root 179 Dec 20 17:55 ceph.conf
    -rw-r--r--. 1 root root 595 Dec 20 17:55 ceph.pub
    [root@node1 ~]# cat /etc/ceph/ceph.conf 
    # minimal ceph.conf for 418abd02-42a9-11eb-91f4-000c298c369a
    [global]
    	fsid = 418abd02-42a9-11eb-91f4-000c298c369a
    	mon_host = [v2:192.168.40.132:3300/0,v1:192.168.40.132:6789/0]
    

    三、启用 CEPH CLI(将ceph命令映射到本地)

    cephadm shell命令在安装了所有Ceph包的容器中启动bash shell。默认情况下,如果在主机上的/etc/ceph中找到配置和keyring文件,则会将它们传递到容器环境中,以便shell完全正常工作。

    # cephadm shell
    Inferring fsid 418abd02-42a9-11eb-91f4-000c298c369a
    Inferring config /var/lib/ceph/418abd02-42a9-11eb-91f4-000c298c369a/mon.node1/config
    Using recent ceph image ceph/ceph:v15
    [ceph: root@node1 /]# 

    [ceph: root@node1 /]# ceph -s
      cluster:
        id:     418abd02-42a9-11eb-91f4-000c298c369a
        health: HEALTH_WARN
                OSD count 0 < osd_pool_default_size 3
     
      services:
        mon: 1 daemons, quorum node1 (age 16m)
        mgr: node1.bibyjy(active, since 15m)
        osd: 0 osds: 0 up, 0 in
     
      data:
        pools:   0 pools, 0 pgs
        objects: 0 objects, 0 B
        usage:   0 B used, 0 B / 0 B avail
        pgs:     

    可以在节点上安装包含所有 ceph 命令的包,包括 、(用于安装 CephFS 文件系统)等

    # cephadm add-repo --release octopus (官方的源)
    Writing repo to /etc/yum.repos.d/ceph.repo...
    Enabling EPEL...
    
    添加Octopus版本的阿里的yum源

    vim /etc/yum.repos.d/ceph.repo

    [Ceph]
    name=Ceph packages for $basearch
    baseurl=https://mirrors.aliyun.com/ceph/rpm-octopus/el8/$basearch
    enabled=1
    gpgcheck=0
    type=rpm-md
    
    [Ceph-noarch]
    name=Ceph noarch packages
    baseurl=https://mirrors.aliyun.com/ceph/rpm-octopus/el8/noarch
    enabled=1
    gpgcheck=0
    type=rpm-md
    
    [ceph-source]
    name=Ceph source packages
    baseurl=https://mirrors.aliyun.com/ceph/rpm-octopus/el8/SRPMS
    enabled=1
    gpgcheck=0
    type=rpm-md
    

    添加centos8的epel

    yum install -y https://mirrors.aliyun.com/epel/epel-release-latest-8.noarch.rpm   (实测,8.2虚拟机添加不上)
    sed -i 's|^#baseurl=https://download.fedoraproject.org/pub|baseurl=https://mirrors.aliyun.com|' /etc/yum.repos.d/epel*
    sed -i 's|^metalink|#metalink|' /etc/yum.repos.d/epel*
    

    ceph好几个依赖包需要epel源

    Installed:
      ceph-common-2:15.2.8-0.el8.x86_64                            fmt-6.2.1-1.el8.x86_64                                    
      gperftools-libs-2.7-6.el8.x86_64                             leveldb-1.22-1.el8.x86_64                                 
      libbabeltrace-1.5.4-3.el8.x86_64                             libcephfs2-2:15.2.8-0.el8.x86_64                          
      libibverbs-29.0-3.el8.x86_64                                 liboath-2.6.2-3.el8.x86_64                                
      librabbitmq-0.9.0-2.el8.x86_64                               librados2-2:15.2.8-0.el8.x86_64                           
      libradosstriper1-2:15.2.8-0.el8.x86_64                       librbd1-2:15.2.8-0.el8.x86_64                             
      librdkafka-0.11.4-1.el8.x86_64                               librdmacm-29.0-3.el8.x86_64                               
      librgw2-2:15.2.8-0.el8.x86_64                                libunwind-1.3.1-3.el8.x86_64                              
      python3-ceph-argparse-2:15.2.8-0.el8.x86_64                  python3-ceph-common-2:15.2.8-0.el8.x86_64                 
      python3-cephfs-2:15.2.8-0.el8.x86_64                         python3-prettytable-0.7.2-14.el8.noarch                   
      python3-rados-2:15.2.8-0.el8.x86_64                          python3-rbd-2:15.2.8-0.el8.x86_64                         
      python3-rgw-2:15.2.8-0.el8.x86_64                            rdma-core-29.0-3.el8.x86_64   
    

    手动添加epel源

    # cat epel.repo 
    [epel]
    name=Extra Packages for Enterprise Linux $releasever - $basearch
    baseurl=https://mirrors.aliyun.com/epel/$releasever/Everything/$basearch
    #metalink=https://mirrors.fedoraproject.org/metalink?repo=epel-$releasever&arch=$basearch&infra=$infra&content=$contentdir
    enabled=1
    gpgcheck=1
    gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-8
    

    安装ceph-common

    # cephadm install ceph-common
    Installing packages ['ceph-common']...
    

    节点cli安装成功

    # ceph -v
    ceph version 15.2.8 (bdf3eebcd22d7d0b3dd4d5501bee5bac354d5b55) octopus (stable)
    
    # ceph -s
      cluster:
        id:     418abd02-42a9-11eb-91f4-000c298c369a
        health: HEALTH_WARN
                Reduced data availability: 1 pg inactive
                OSD count 0 < osd_pool_default_size 3
     
      services:
        mon: 1 daemons, quorum node1 (age 15m)
        mgr: node1.bibyjy(active, since 15m)
        osd: 0 osds: 0 up, 0 in
     
      data:
        pools:   1 pools, 1 pgs
        objects: 0 objects, 0 B
        usage:   0 B used, 0 B / 0 B avail
        pgs:     100.000% pgs unknown
                 1 unknown
    

    添加主机到集群

    将公钥添加到新主机

    ssh-copy-id -f -i /etc/ceph/ceph.pub node2
    ssh-copy-id -f -i /etc/ceph/ceph.pub node3
    

    告诉Ceph,新节点是集群的一部分

    # ceph orch host add node2
    Added host 'node2'
    # ceph orch host add node3
    Added host 'node3'
    

    添加主机会自动扩展mon和mgr节点(虚拟机测试,其余每个节点都导入镜像,过了很长时间,重启虚拟机后才加入成功)

    # ceph -s
      cluster:
        id:     418abd02-42a9-11eb-91f4-000c298c369a
        health: HEALTH_WARN
                Reduced data availability: 1 pg inactive
                OSD count 0 < osd_pool_default_size 3
     
      services:
        mon: 3 daemons, quorum node1,node2,node3 (age 39m)
        mgr: node1.bibyjy(active, since 40m), standbys: node2.urnpav
        osd: 0 osds: 0 up, 0 in
     
      data:
        pools:   1 pools, 1 pgs
        objects: 0 objects, 0 B
        usage:   0 B used, 0 B / 0 B avail
        pgs:     100.000% pgs unknown
                 1 unknown
    

    standbys(备用): node2.urnpav

    部署其他监视器(可选)

    典型的 Ceph 群集具有三个或五个分布在不同主机的mon守护程序。如果群集中有五个或更多节点,建议部署五个mon。

    当Ceph知道mon应该使用什么IP子网时,它可以随着群集的增长(或收缩)自动部署和缩放mon。默认情况下,Ceph假定其他mon使用与第一个mon的IP相同的子网。

    在单个子网的情况下,如果向集群中添加主机,默认最多只会添加5个mon 如果有特定的IP子网给mon使用,可以使用CIDR格式配置该子网:

    ceph config set mon public_network 10.1.2.0/24
    

    cephadm只会在配置了特定子网IP的主机上部署mon守护程序 如果要调整特定子网mon的默认数量,可以执行以下命令:

    ceph orch apply mon *<number-of-monitors>*
    

    如果要在一组特定的主机上部署mon,可以执行以下命令:

    ceph orch apply mon *<host1,host2,host3,...>*
    

    查看当前主机和标签

    # ceph orch host ls
    HOST   ADDR   LABELS  STATUS  
    node1  node1                  
    node2  node2                  
    node3  node3  
    

    禁用自动mon部署,执行以下命令:

    ceph orch apply mon --unmanaged
    

    要在不同网络中添加mon执行以下命令:

    ceph orch apply mon --unmanaged
    ceph orch daemon add mon newhost1:10.1.2.123
    ceph orch daemon add mon newhost2:10.1.2.0/24
    

    添加mon到多个主机,也可以用以下命令:

    ceph orch apply mon "host1,host2,host3"
    

    部署OSD

    可以用以下命令显示集群中的存储设备清单

    ceph orch device ls
    

    如果满足以下所有_条件_,则存储设备被视为可用:

    • 设备必须没有分区。
    • 设备不得具有任何 LVM 状态。
    • 不得安装设备。
    • 设备不能包含文件系统。
    • 设备不得包含 Ceph BlueStore OSD。
    • 设备必须大于 5 GB。

    Ceph 拒绝在不可用的设备上预配 OSD。为保证能成功添加osd,我刚才在每个node上新加了一块磁盘 创建新 OSD 的方法有几种方法:

    在未使用的设备上自动创建osd

    # ceph orch apply osd --all-available-devices
    Scheduled osd.all-available-devices update...
    

    可以看到已经在三块磁盘上创建了osd

      services:
        mon: 3 daemons, quorum node1,node2,node3 (age 52m)
        mgr: node2.urnpav(active, since 74m)
        osd: 3 osds: 2 up (since 17m), 2 in (since 7m)
    

    从特定主机上的特定设备创建 OSD

    ceph orch daemon add osd host1:/dev/sdb
    

    查看osd的map

    # ceph osd tree
    ID  CLASS  WEIGHT   TYPE NAME       STATUS  REWEIGHT  PRI-AFF
    -1         0.05846  root default                             
    -5         0.01949      host node1                           
     2    hdd  0.01949          osd.2     down         0  1.00000
    -3         0.01949      host node2                           
     0    hdd  0.01949          osd.0       up   1.00000  1.00000
    -7         0.01949      host node3                           
     1    hdd  0.01949          osd.1       up   1.00000  1.00000
    

    http://docs.ceph.org.cn/rados/operations/monitoring-osd-pg/ 官网关于osd状态文档

    http://docs.ceph.org.cn/rados/troubleshooting/troubleshooting-osd/#osd-not-running    osd not running问题排查

    启动一个down的osd

    sudo /etc/init.d/ceph -a start osd.1
    

    部署MDS

    使用 CephFS 文件系统需要一个或多个 MDS 守护程序。如果使用新的ceph fs卷接口来创建新文件系统,则会自动创建这些文件 部署元数据服务器:

    ceph orch apply mds *<fs-name>* --placement="*<num-daemons>* [*<host1>* ...]"
    

    CephFS 需要两个 Pools,cephfs-data 和 cephfs-metadata,分别存储文件数据和文件元数据

    # ceph osd pool create cephfs_data 64 64
    # ceph osd pool create cephfs_metadata 64 64
    创建一个 CephFS, 名字为 cephfs
    # ceph fs new cephfs cephfs_metadata cephfs_data
    # ceph orch apply mds cephfs --placement="3 node1 node2 node3"
    Scheduled mds.cephfs update...
    
    [root@node1 ~]# ceph  -s 
      data:
        pools:   3 pools, 129 pgs
        objects: 0 objects, 0 B
        usage:   3.0 GiB used, 57 GiB / 60 GiB avail
        pgs:     129 active+undersized
    

    验证至少有一个MDS已经进入active状态,默认情况下,ceph只支持一个活跃的MDS,其他的作为备用MDS

    # ceph fs status cephfs
    cephfs - 0 clients
    ======
    RANK  STATE           MDS             ACTIVITY     DNS    INOS  
     0    active  cephfs.node2.xdznta  Reqs:    0 /s    10     13   
          POOL         TYPE     USED  AVAIL  
    cephfs_metadata  metadata  1024k  26.9G  
      cephfs_data      data       0   17.9G  
        STANDBY MDS      
    cephfs.node1.pemzxl  
    MDS version: ceph version 15.2.8 (bdf3eebcd22d7d0b3dd4d5501bee5bac354d5b55) octopus (stable)
    

    部署RGW

    Cephadm将radosgw部署为管理特定领域和区域的守护程序的集合,RGW是Ceph对象存储网关服务RADOS Gateway的简称,是一套基于LIBRADOS接口封装而实现的FastCGI服务,对外提供RESTful风格的对象存储数据访问和管理接口。

    使用cephadm时,radosgw守护程序是通过mon配置数据库而不是通过ceph.conf或命令行配置的。如果该配置尚未就绪,则radosgw守护进程将使用默认设置启动(默认绑定到端口80)。要在node1、node2和node3上部署3个服务于myorg领域和us-east-1区域的rgw守护进程,在部署rgw守护进程之前,如果它们不存在,则自动创建提供的域和区域:

    ceph orch apply rgw myorg cn-east-1 --placement="3 node1 node2 node3"
    

    或者可以使用radosgw-admin命令手动创建区域、区域组和区域:

    radosgw-admin realm create --rgw-realm=myorg --default
    radosgw-admin zonegroup create --rgw-zonegroup=default --master --default
    radosgw-admin zone create --rgw-zonegroup=default --rgw-zone=cn-east-1 --master --default
    radosgw-admin period update --rgw-realm=myorg --c
    

    查看

    # ceph orch ls 
    NAME                       RUNNING  REFRESHED  AGE  PLACEMENT                  IMAGE NAME                            IMAGE ID      
    alertmanager                   1/1  6m ago     7d   count:1                    docker.io/prom/alertmanager:v0.20.0   0881eb8f169f  
    crash                          3/3  6m ago     7d   *                          docker.io/ceph/ceph:v15               5553b0cb212c  
    grafana                        1/1  6m ago     7d   count:1                    docker.io/ceph/ceph-grafana:6.6.2     a0dce381714a  
    mds.cephfs                     3/3  6m ago     6m   node1;node2;node3;count:3  docker.io/ceph/ceph:v15               5553b0cb212c  
    mgr                            2/2  6m ago     7d   count:2                    docker.io/ceph/ceph:v15               5553b0cb212c  
    mon                            3/3  6m ago     6d   label:mon                  docker.io/ceph/ceph:v15               5553b0cb212c  
    node-exporter                  3/3  6m ago     7d   *                          docker.io/prom/node-exporter:v0.18.1  e5a616e4b9cf  
    osd.all-available-devices      3/3  6m ago     80m  *                          docker.io/ceph/ceph:v15               5553b0cb212c  
    prometheus                     1/1  6m ago     7d   count:1                    docker.io/prom/prometheus:v2.18.1     de242295e225  
    rgw.myorg.cn-east-1            0/3  -          -    node1;node2;node3;count:3  <unknown>                             <unknown>     
    

    一个健康的测试三节点集群

    ceph常用命令

     1 ceph -s #查看集群状态
     2 ceph osd tree #查看osd的map
     3 ceph osd lspools #查看ceph集群所有的pool
     4 rbd create name --size 10G --image-feature layering#创建rbd
     5 rbd ls -l #查看rbd列表
     6 rbd  remove rbd-name #删除rbd
     7 rbd map disk01 #在客户端映射rbd map
     8 rbd showmapped #显示rbd map
     9 ceph osd pool create poolname pg的数量         #创建存储池
    10 ceph osd pool rm poolname poolname --yes-i-really-really-mean-it #删除存储池
    11 ceph fs new cephfs cephfs_metadata cephfs_data #开启ceph文件系统的pool
    12 ceph fs ls #显示ceph fs(文件系统)
    13 ceph mds stat #参看mds 状态
    14 ssh cent@mds-nodename "sudo ceph-authtool -p /etc/ceph/ceph.client.admin.keyring" > admin.key   #获取admin key
    15 systemctl stop ceph-mds@mds-nodename  #停止ceph-mds服务
    16 ceph mds fail 0 #把mds状态重置
    17 ceph fs rm cephfs --yes-i-really-mean-it #删除ceph-文件系统
    

    https://mp.weixin.qq.com/s/5KPLCSryefAmCCeA09vv1w   使用cephadm安装ceph octopus

    https://blog.csdn.net/caiyqn/article/details/106535070    CentOS8安装与配置Ceph Octopus教程

  • 相关阅读:
    BZOJ 3506 机械排序臂 splay
    BZOJ 2843 LCT
    BZOJ 3669 魔法森林
    BZOJ 2049 LCT
    BZOJ 3223 文艺平衡树 splay
    BZOJ 1433 假期的宿舍 二分图匹配
    BZOJ 1051 受欢迎的牛 强连通块
    BZOJ 1503 郁闷的出纳员 treap
    BZOJ 1096 ZJOI2007 仓库设计 斜率优化dp
    BZOJ 1396: 识别子串( 后缀数组 + 线段树 )
  • 原文地址:https://www.cnblogs.com/zjz20/p/14136349.html
Copyright © 2011-2022 走看看