• 使用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教程

  • 相关阅读:
    Ajax XMLHttpRequest对象的三个属性以及open和send方法
    去空格
    绑定事件中 如可控制函数的执行次数
    我之理解---计时器setTimeout 和clearTimeout
    关于border边框重叠颜色设置问题
    YbtOj练习:二分5 飞离地球
    YbtOj练习:二分4 分割矩阵
    YbtOj练习:二分3 攻击法坛
    YbtOj练习:贪心3 最优密码
    YbtOj练习:二分2 最小时间
  • 原文地址:https://www.cnblogs.com/zjz20/p/14136349.html
Copyright © 2020-2023  润新知