• Cephadm部署ceph octopus (15.2.13 )


       

    Cephadm通过SSH连接manager daemon到主机,从而部署和管理Ceph群集。manager daemon能够添加,删除或更新Ceph containers。Cephadm首先在单节点上引导一个微小的Ceph集群(one monitor and one manager),然后自动将集群扩展到多个节点,并提供所有Ceph守护程序和服务。

    A Ceph Storage Cluster requires at least one Ceph Monitor, Ceph Manager, and Ceph OSD (Object Storage Daemon). The Ceph Metadata Server is also required when running Ceph File System clients.

    规划:

    主机名

    Public Network

    Cluster Network

    角色

    ceph-mon1

    192.168.0.151 

    192.168.200.101 

    monitor,mgr,rgw,mds,osd,nfs,cephadm

    ceph-mon2 

    192.168.0.152 

    192.168.200.102 

    monitor,mgr,rgw,mds,osd,nfs 

    ceph-mon3 

    192.168.0.153 

    192.168.200.103 

    monitor,mgr,rgw,mds,osd,nfs 

    ceph-osd4 

    192.168.0.154 

    192.168.200.104 

      

         

    说明:

    • ceph版本: 15.2.13 octopus (stable)
    • 集群的第一个节点也作为cephadm部署节点使用。

      Cluster Network 用于集群的内部通信

      Public Network 用于对外提供服务

      每台节点额外挂载两个硬盘用于部署osd

            

    环境初始化

    修改主机名

    hostnamectl set-hostname ceph-mon1

    exec bash -l

    # 注意,由于ceph的进程会在自己的UNIX socket文件里面把主机名也加进去作为文件名,所以主机名和hosts文件中配置的主机名必须一致

          

    关闭selinux

    setenforce 0

    sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config

         

    关闭防火墙

    systemctl stop firewalld

    systemctl disable firewalld

    systemctl status firewalld

        

    iptables为空

    iptables -L

    Chain INPUT (policy ACCEPT)

    target prot opt source destination

       

    Chain FORWARD (policy ACCEPT)

    target prot opt source destination

       

    Chain OUTPUT (policy ACCEPT)

    target prot opt source destination

          

    硬盘信息 

    lsblk

       

         

    Public Network    

    服务器如果是克隆的注意删除UUID (推荐使用MobaXterm多窗口同时编辑)

       

     Cluster Network

         

    复制配置文件并修改

    cp /etc/sysconfig/network-scripts/ifcfg-ens33 /etc/sysconfig/network-scripts/ifcfg-ens34

    cp: overwrite '/etc/sysconfig/network-scripts/ifcfg-ens34'? y

       

    [root@ceph-mon1 ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens34

    [root@ceph-mon1 ~]# systemctl restart network

            

       

    配置时间同步(CentOS 7.9默认已安装)

    在所有 Ceph 节点上安装并运行chrony服务,特别是监控节点以免因时钟漂移导致故障
    yum install -y chrony
    systemctl enable --now chronyd

       

    如果未安装时间同步,运行cephadmin shell将出错 

       

    解决方法

    内网时间同步也可以使用NTP服务器,搭建方法:https://www.cnblogs.com/st2021/p/14970131.html)

    所有节点上都要运行时间服务

    yum install ntp ntpdate -y

       

    systemctl start ntpd.service
    systemctl enable ntpd.service

         

       

    配置hosts解析 

    cat >> /etc/hosts << EOF

    192.168.0.151 ceph-mon1

    192.168.0.152 ceph-mon2

    192.168.0.153 ceph-mon3

    192.168.0.154 ceph-osd4

       

    192.168.200.101 ceph-mon1

    192.168.200.102 ceph-mon2

    192.168.200.103 ceph-mon3

    192.168.200.104 ceph-osd4

    EOF

       

       

    配置免密登录

    在ceph-mon1上新建ssh公钥对,并配置免密登录至集群其它节点

    ssh-keygen -t rsa -P ''

       

    for i in `tail -n 4 /etc/hosts | awk '{print $1}'`; do ssh-copy-id $i;done

       

    复制hosts文件至其他节点

    for i in `tail -n 4 /etc/hosts | awk '{print $1}'`; do scp /etc/hosts $i:/etc/ ;done

       

         

    配置ceph yum源

    注意,根据CentOS的版本不同,选择如下两个配置中的其中一个

    CentOS 7

    # 在所有节点上配置,或者配置好一份之后分法到其他节点上去
    # 注意需要配置EPEL源
    vi /etc/yum.repos.d/ceph.repo

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

    [Ceph-noarch]
    name=Ceph noarch packages
    baseurl=http://mirrors.aliyun.com/ceph/rpm-octopus/el7/noarch
    enabled=1
    gpgcheck=0
    type=rpm-md

    [ceph-source]
    name=Ceph source packages
    baseurl=http://mirrors.aliyun.com/ceph/rpm-octopus/el7/SRPMS
    enabled=1
    gpgcheck=0
    type=rpm-md

       

         

    CentOS 8

    # 在所有节点上配置,或者配置好一份之后分法到其他节点上去
    # 注意需要配置EPEL源
    # vi /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=http://mirrors.aliyun.com/ceph/rpm-octopus/el8/noarch
    enabled=1
    gpgcheck=0
    type=rpm-md

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

         

    复制ceph yum源到其他节点上去

    for i in `tail -n 4 /etc/hosts | awk '{print $1}'`; do scp /etc/yum.repos.d/ceph.repo $i:/etc/yum.repos.d/;done

         

    yum clear all;yum makecache 

    for i in `tail -n 4 /etc/hosts | awk '{print $1}'`; do ssh $i exec yum clear all;yum makecache ;done

       

    yum 时候出现Another app is currently holding the yum lock; waiting for it to exit...解决方法

    rm -rf /var/run/yum.pid 

       

         

    安装依赖

    安装python3  

    for i in `tail -n 4 /etc/hosts | awk '{print $1}'`; do ssh $i exec yum install python3 -y ;done

         

    安装docker

    cephadm基于容器运行所有ceph组件,所有节点需要安装docker或podman,这里以安装docker为例。

         

    配置阿里云yum源
    yum-config-manager \

    --add-repo \

    http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

    或:清华大学源

    yum-config-manager \

    --add-repo \

    https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/centos/docker-ce.repo

       

    for i in `tail -n 4 /etc/hosts | awk '{print $1}'`; do ssh $i exec yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -y ;done

         

    for i in `tail -n 4 /etc/hosts | awk '{print $1}'`; do ssh $i exec yum clear all;yum makecache ;done

       

       

    安装 Docker Engine-Community 和 containerd

    yum install docker-ce docker-ce-cli containerd.io -y  

    for i in `tail -n 4 /etc/hosts | awk '{print $1}'`; do ssh $i exec yum install docker-ce docker-ce-cli containerd.io -y ;done

            

    配置docker镜像加速
    mkdir -p /etc/docker

    cat > /etc/docker/daemon.json <<EOF

    {

    "registry-mirrors": [

    "https://registry.docker-cn.com",

    "http://hub-mirror.c.163.com",

    "https://docker.mirrors.ustc.edu.cn"

    ]

    }

    EOF

       

    Docker中国区官方镜像

    https://registry.docker-cn.com

    网易

    http://hub-mirror.c.163.com

    中国科技大学

    https://docker.mirrors.ustc.edu.cn  

       

    for i in `tail -n 4 /etc/hosts | awk '{print $1}'`; do scp /etc/docker/daemon.json $i:/etc/docker/daemon.json ;done

       

    启动docker服务
    systemctl start docker

    systemctl enable docker  

    systemctl daemon-reload

    systemctl restart docker

       

    查看是否成功

    docker info

       

         

    安装cephadm

    在ceph-mon1执行

    wget https://github.com/ceph/ceph/raw/octopus/src/cephadm/cephadm

         

    或者直接从github下载
    curl https://raw.githubusercontent.com/ceph/ceph/v15.2.13/src/cephadm/cephadm -o cephadm

       

    再不行直接在浏览器打开并复制代码即可

       

     chmod a+x cephadm && cp cephadm /usr/bin/cephadm

       

    cephadm其实就是一个python3脚本,可以直接运行,而不用安装。

         

    查看最新版本

       

         

       

    引导新群集

    ceph-mon1执行

    mkdir -p /etc/ceph
    cephadm bootstrap --mon-ip 192.168.0.151

       

    mon-ip 就是第一个monitor daemon的IP地址     

    该命令执行以下操作:

    • 在本地主机上为新集群创建monitor 和 manager daemon守护程序。
    • 为Ceph集群生成一个新的SSH密钥,并将其添加到root用户的/root/.ssh/authorized_keys文件中。
    • 将public key的副本写入/etc/ceph/ceph.pub。
    • 将与新群集进行通信所需的最小配置文件保存到/etc/ceph/ceph.conf。
    • 向/etc/ceph/ceph.client.admin.keyring写入client.admin可特权管理secret key的副本。
    • Add the _admin label to the bootstrap host. By default, any host with this label will (also) get a copy of /etc/ceph/ceph.conf and /etc/ceph/ceph.client.admin.keyring.

      注意 这个会生成密码,需提前保存,方便后面访问dashboard。

         

    查看当前配置文件变化: 生成3个文件

    ll /etc/ceph/

       

    查看拉取的镜像和启动的容器

    docker images

         

    docker ps -a

       此时已经运行了以下组件

    • ceph-mgr ceph管理程序
    • ceph-monitor ceph监视器
    • ceph-crash 崩溃数据收集模块
    • prometheus prometheus监控组件
    • grafana 监控数据展示dashboard
    • alertmanager prometheus告警组件
    • node_exporter prometheus节点数据收集组件

         

    启用CEPH命令

    Cephadm不需要在主机上安装任何Ceph包

    Cephadm shell命令在安装了所有Ceph包的容器中启动bash shell。默认情况下,如果在主机上的/etc/ceph中找到配置和keyring文件,则会将它们传递到容器环境中,以便shell完全正常工作。注意,在MON主机上执行时,cephadm shell将从MON容器推断配置,而不是使用默认配置。如果给定--mount,则主机(文件或目录)将显示在容器中的/mnt下面。

       

    进入命令状态

    cephadm shell

    查看所有组件运行状态

    ceph orch ps

       

    查看某个组件运行状态

    ceph orch ps --daemon-type mon

    ceph orch ps --daemon-type mgr

    ceph orch ps --daemon-type mds

       

    集群状态

    ceph status

       

    ceph -v

    ceph version 15.2.13 (c44bc49e7a57a87d84dfff2a077a2058aa2172e2) octopus (stable)

       

         

    创建别名,非常实用的操作

    alias ceph='cephadm shell -- ceph'

       

    永久生效

    vi /root/.bashrc

    alias ceph='cephadm shell -- ceph'

       

    source /root/.bashrc

       

         

     

       

    将主机添加到集群中  

    在新节点的root用户的authorized_keys文件中安装集群的公共SSH密钥:
    cd /etc/ceph/
    ssh-copy-id -f -i ceph.pub root@ceph-mon2
    ssh-copy-id -f -i ceph.pub root@ceph-mon3
    ssh-copy-id -f -i ceph.pub root@ceph-osd4

       

    添加节点

    cephadm shell -- ceph orch apply mon --unmanaged

       

    # 禁用自动部署mon节点,如果不做这一步,cephadm会自动在已添加的host上去部署mon和mgr进程。

    一个典型的Ceph集群有3到5个monitor daemon。如果超过5个节点,官网建议使用5个monitor

    守护程序  

    cephadm shell -- ceph orch host add ceph-mon2
    cephadm shell -- ceph orch host add ceph-mon3
    cephadm shell -- ceph orch host add ceph-osd4

       

    如果前面没有执行ceph.pub的添加到新节点root用户的authorized_keys文件,将报以下错误:

       

    一个是系统的免密登录,一个是集群的cephadm SSH密钥

       

    查看节点

    ceph orch host ls

       

    给需要部署mon进程的节点打上标签

    cephadm shell -- ceph orch host label add ceph-mon1 mon
    cephadm shell -- ceph orch host label add ceph-mon2 mon
    cephadm shell -- ceph orch host label add ceph-mon3 mon

       

    根据标签部署monitor

    cephadm shell -- ceph orch apply mon label:mon

       

    或者,将monitor部署在一组特定的主机上:

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

    注意,需确保在列表中包括第一台(引导)主机  

       

    添加完成后ceph会自动扩展monitor和manager到另外2个节点,在另外2个节点查看,自动运行了以下容器

    docker ps

       

         

    验证

    cephadm shell -- ceph status

       

         

    部署osd

    列出节点上的所有可用设备

    cephadm shell -- ceph orch device ls        

       

    如果满足以下所有条件,则认为存储设备可用

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

       

    创建osd

    方法1:从特定主机上的特定设备创建OSD

    cephadm shell -- ceph orch daemon add osd ceph-mon1:/dev/sdb
    cephadm shell -- ceph orch daemon add osd ceph-mon1:/dev/sdc
    cephadm shell -- ceph orch daemon add osd ceph-mon2:/dev/sdb
    cephadm shell -- ceph orch daemon add osd ceph-mon2:/dev/sdc
    cephadm shell -- ceph orch daemon add osd ceph-mon3:/dev/sdb
    cephadm shell -- ceph orch daemon add osd ceph-mon3:/dev/sdc
    cephadm shell -- ceph orch daemon add osd ceph-osd4:/dev/sdb
    cephadm shell -- ceph orch daemon add osd ceph-osd4:/dev/sdc

       

    方法2:添加任何可用和未使用的存储设备

    ceph orch apply osd --all-available-devices

       

    验证

    cephadm shell -- ceph orch device ls

    cephadm shell -- ceph status
    cephadm shell -- ceph osd tree

       

    至此,ceph的基本环境已搭建完成,其他操作待续。

  • 相关阅读:
    12.1
    11.26
    12.5Java日报
    11.25
    11.27
    12.03
    11.28
    12.04
    如何在TortoiseGit中使用sshkeygen生成的key
    leetcode 39 组合总和
  • 原文地址:https://www.cnblogs.com/st2021/p/14970266.html
Copyright © 2020-2023  润新知