ubuntu使用cephadm安装ceph集群

准备工作

每个节点都需要做的

配置hosts解析
cat >> /etc/hosts << EOF
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
安装docker 或者 podman

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

安装时间服务器
sudo apt install -y chrony && sudo systemctl enable --now chronyd
允许root用户登录
$ sudo sed -i 's/#PermitRootLogin prohibit-password/PermitRootLogin yes/g' /etc/ssh/sshd_config
# 重启ssh服务
$ systemctl restart ssh
# 设置root用户密码,执行命令后输入两次自定义密码
$ sudo passwd

安装cephadm (起始的主机或主节点)

$ sudo apt install -y cephadm

引导新群集(起始的主机或主节点)

$ 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的副本。

注意: 此步骤执行成功会生成密码,需提前保存,方便后面访问dashboard。建议先按照提示登录修改密码。

此时当前已经运行了以下组件

  • ceph-mgr ceph管理程序
  • ceph-monitor ceph监视器
  • ceph-crash 崩溃数据收集模块
  • prometheus prometheus监控组件
  • grafana 监控数据展示dashboard
  • alertmanager prometheus告警组件
  • node_exporter prometheus节点数据收集组件
启用CEPH命令
# 进入命令状态
$ sudo 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)
将主机添加到集群中
# 在新节点的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

# 添加节点,一个典型的Ceph集群有3到5个monitor daemon。如果超过5个节点,官网建议使用5个monitor
# 禁用自动部署mon节点,如果不做这一步,cephadm会自动在已添加的host上去部署mon和mgr进程。
$ cephadm shell -- ceph orch apply mon --unmanaged

# 添加节点,有多少节点添加几次
$ cephadm shell -- ceph orch host add ceph-mon2

# 查看节点
ceph orch host ls
部署mon 服务
# 第一种方式: 给需要部署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到其他节点

# 验证:可以看到 mgr RUNNING 数量为2
$ ceph orch ls  
NAME                       PORTS        RUNNING  REFRESHED  AGE  PLACEMENT    
alertmanager               ?:9093,9094      1/1  4m ago     0h   count:1      
crash                                       4/4  4m ago     0h   *            
grafana                    ?:3000           1/1  4m ago     0h   count:1      
mgr                                         2/2  4m ago     0h   count:2      
mon                                         3/3  4m ago     0h   label:mon    
node-exporter              ?:9100           4/4  4m ago     0h   *            
prometheus                 ?:9095           1/1  4m ago     0h   count:1      
部署osd

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

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

如果有已经用过的磁盘或清理之前ceph使用的磁盘可使用一下脚本(官方文档引用)

#!/bin/bash
DISK="/dev/sdb"

# Zap the disk to a fresh, usable state (zap-all is important, b/c MBR has to be clean)
sgdisk --zap-all $DISK

# Wipe a large portion of the beginning of the disk to remove more LVM metadata that may be present
dd if=/dev/zero of="$DISK" bs=1M count=100 oflag=direct,dsync

# SSDs may be better cleaned with blkdiscard instead of dd
blkdiscard $DISK

# Inform the OS of partition table changes
partprobe $DISK
# 列出节点上的所有可用设备
$ ceph orch device ls    

# 创建osd
# 方法1:从特定主机上的特定设备创建OSD
# 在无法自动正确识别但能够确定使用特定设备时也可用此方法。
$ ceph orch daemon add osd ceph-mon1:/dev/sdb
$ ceph orch daemon add osd ceph-mon1:/dev/sdc

#方法2:添加任何可用和未使用的存储设备
$ ceph orch apply osd --all-available-devices

# 查看当前存储设备情况
$ ceph orch device ls
HOST    PATH      TYPE  DEVICE ID                   SIZE  AVAILABLE  REFRESHED  REJECT REASONS                                                 
ceph01  /dev/sdb  hdd   QEMU_HARDDISK_drive-scsi1   536G             18s ago    Insufficient space (<10 extents) on vgs, LVM detected, locked  
ceph02  /dev/sdb  hdd   QEMU_HARDDISK_drive-scsi1   536G             18s ago    Insufficient space (<10 extents) on vgs, LVM detected, locked  
ceph03  /dev/sdb  ssd   QEMU_HARDDISK_drive-scsi1   536G             18s ago    Insufficient space (<10 extents) on vgs, LVM detected, locked  
ceph04  /dev/sdb  ssd   QEMU_HARDDISK_drive-scsi1   536G             18s ago    Insufficient space (<10 extents) on vgs, LVM detected, locked  

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

其他问题处理

ceph 删除操作

# 先开启允许删除
ceph config set mon mon_allow_pool_delete true
## 删除 cn-hangzho.rgw.buckets.non-ec(此名称需重复两次)存储 pool
ceph osd pool rm cn-hangzho.rgw.buckets.non-ec cn-hangzho.rgw.buckets.non-ec --yes-i-really-really-mean-it

ceph 告警处理

# 默认值 0.05,监视器允许监测到各个 node 节点的时间偏差在 0.05 秒内
ceph config set mon mon_clock_drift_allowed 3
# 如果监测到时间偏差连续 10 次超过上面设置的时长,则会在 ceph -s 输出告警信息 
ceph config set mon mon_clock_drift_warn_backoff 10

# 在所有 mon 节点执行重启 ceph-mon 服务操作
ceph orch restart mon
  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值