Ubuntu20.04LTS环境docker+cephadm方式部署Ceph 17.2.5

news2024/11/18 14:41:48

Ubuntu20.04LTS环境docker+cephadm方式部署Ceph 17.2.5

  • 1. 前言
  • 2. 环境准备
    • 2.1. 主机信息
    • 2.2. NTP时间同步
    • 2.3. 关闭 iptable 和 firewalld
    • 2.4. 关闭 SElinux
    • 2.5. 生成SSH证书,并分发到其他节点
    • 2.6. 依赖安装
  • 3. 安装部署Ceph17.2.5
    • 3.1. 安装cephadm,拉取ceph镜像
    • 3.2. 创建集群
      • 3.2.1. 初始化 mon 节点
      • 3.2.2. cephadm shell 介绍
      • 3.2.3. 向集群加入其他节点
      • 3.2.4. 添加OSD
  • 4. 删除集群
  • 5. 部署遇到的问题以及解决办法
    • 5.1. ERROR: Cannot infer an fsid, one must be specified: ['xx', 'xxx', 'xxxx']
    • 5.2. ceph-mon起来后,ceph -s 命令无任何输出,卡住
    • 5.3. 指定磁盘添加OSD时报错Device /dev/xxx has a filesystem.

1. 前言

参照本文档将指导您,如何在Ubuntu20.0.4服务器采用docker+cephadm方式安装 17.2版本的Ceph。

2. 环境准备

2.1. 主机信息

主机名称IP系统版本服务信息
controller192.168.201.34ubuntu20.04mon,osd
compute1192.168.201.35ubuntu20.04mgr,osd,mds
compute2192.168.201.36ubuntu20.04raw,osd

2.2. NTP时间同步

  1. 在controller上执行以下命令,从阿里云的NTP服务器上同步时间。

    apt -y install chrony
     
    # 备份NTP服务的原始配置文件
    mv /etc/chrony/chrony.conf /etc/chrony/chrony.conf.bak
     
    # 编写一个空的配置文件,文件只有两行配置
    vim /etc/chrony/chrony.conf
    --------------------
    server ntp.aliyun.com iburst
    allow 192.168.201.34/24
    # 保存退出
     
    #重启系统的ntp服务
    service chrony restart
    
  2. 再配置computu1和computu2的NTP服务,从controller上拉去时间。

    apt -y install chrony
     
    # 备份NTP服务的原始配置文件
    mv /etc/chrony/chrony.conf /etc/chrony/chrony.conf.bak
     
    # 编写一个空的配置文件,文件只有一行配置
    vim /etc/chrony/chrony.conf
    --------------------
    server controller iburst
     
    #重启系统的ntp服务
    service chrony restart
    
  3. 三台节点执行以下命令。

    chronyc sources
    

2.3. 关闭 iptable 和 firewalld

systemctl stop iptables
systemctl stop firewalld
systemctl disable iptables
systemctl disable firewalld

2.4. 关闭 SElinux

修改/etc/selinux/config文件中设置为

SELINUX=disabled

2.5. 生成SSH证书,并分发到其他节点

ssh-keygen -t rsa -P ''
ssh-copy-id -i .ssh/id_rsa.pub cephadm@192.168.201.35
ssh-copy-id -i .ssh/id_rsa.pub cephadm@192.168.201.36

2.6. 依赖安装

cephadm 部署 ceph 集群时,需要如下依赖:

  • python3
  • 安装Docker/Podman
  • systemd
  • lvm2
    如有缺失请自行安装依赖,本文不做过多阐述。

3. 安装部署Ceph17.2.5

3.1. 安装cephadm,拉取ceph镜像

以下命令在controller节点执行

# 下面的命令会自动安装 docker 等依赖
apt install -y cephadm
 
# 拉取ceph镜像
docker pull quay.io/ceph/ceph:v17.2
 
# 查看cpeh版本
$ cephadm version
ceph version 17.2.5 (98318ae89f1a893a6ded3a640405cdbb33e08757) quincy (stable)
 
# 查看docker镜像
$ docker images
REPOSITORY          TAG         IMAGE ID       CREATED       SIZE
quay.io/ceph/ceph   v17.2       cc65afd6173a   2 months ago   1.36GB
 
# 添加控制节点主机
ceph orch host add controller --addr 192.168.201.34

配置 ceph 源,可以将 /etc/apt/sources.list.d/ceph.list 中的地址替换为国内的

cephadm add-repo --release octopus

3.2. 创建集群

使用 cephadm 创建 Ceph 集群的流程为:

  • 初始化第一个 mon 节点
  • 配置 ceph 命令行
  • 扩展集群 osd 节点

3.2.1. 初始化 mon 节点

$ cephadm --image quay.io/ceph/ceph:v17.2 bootstrap --mon-ip 192.168.201.34 --allow-fqdn-hostname --skip-firewalld --skip-mon-network --dashboard-password-noupdate --skip-monitoring-stack  --allow-overwrite
 
Ceph Dashboard is now available at:
 
         URL: https://controller:8443/
        User: admin
    Password: q3hfarwiar
 
You can access the Ceph CLI with:
 
    sudo /usr/sbin/cephadm shell --fsid 7b3a8c96-80da-11ed-9433-570310474c9e -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.

显示出 Bootstrap complete. 表示部署成功。使用:

  1. –image quay.io/ceph/ceph:v17.2 指定镜像地址
  2. –registry-url 指定仓库 https://hub.docker.com/u/quayioceph
  3. –single-host-defaults
    可以登陆输出的地址输入账号密码进入dashboard界面查看ceph运行情况如下图所示。
    在这里插入图片描述

3.2.2. cephadm shell 介绍

使用 cephadm 安装的环境,执行 cephadm shell 时实际是启动一个容器并进入,使用如下命令进入容器:

$ cephadm shell
Inferring fsid 7b3a8c96-80da-11ed-9433-570310474c9e
Inferring config /var/lib/ceph/7b3a8c96-80da-11ed-9433-570310474c9e/mon.controller/config
Using recent ceph image quay.io/ceph/ceph@sha256:0560b16bec6e84345f29fb6693cd2430884e6efff16a95d5bdd0bb06d7661c45  
root@controller:/# ceph -s
  cluster:
    id:     7b3a8c96-80da-11ed-9433-570310474c9e
    health: HEALTH_WARN
            OSD count 0 < osd_pool_default_size 3
  
  services:
    mon: 1 daemons, quorum controller (age 29s)
    mgr: controller.idxakq(active, since 2h)
    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:    
root@controller:/# ceph -v
ceph version 17.2.5 (98318ae89f1a893a6ded3a640405cdbb33e08757) quincy (stable)

也可以在宿主机上安装 ceph 的 client 客户端:

apt install -y ceph-common

3.2.3. 向集群加入其他节点

复制 mon 容器的公钥到其他节点

ssh-copy-id -f -i /etc/ceph/ceph.pub compute1
ssh-copy-id -f -i /etc/ceph/ceph.pub compute2

添加主机到集群

root@controller:/etc/selinux# ceph orch host label add controller _admin
Added label _admin to host controller
root@controller:/etc/selinux# ceph orch host add compute1 192.168.201.34
Added host 'compute1' with addr '192.168.201.35'
root@controller:/etc/selinux# ceph orch host add compute2 192.168.201.34
Added host 'compute2' with addr '192.168.201.36'

说明:

  1. controller 为主机的 hostname,使用 hostname 命令获取
  2. 192.168.201.34 为 public network 的 ip
  3. _admin 为 label,带有 _admin 的会自动赋值 ceph.conf 指定的 keyring 文件,即 Ceph 集群的管理权限

3.2.4. 添加OSD

一个机器可以有多个磁盘,每一个磁盘都需要启动一个OSD进程进行管理。cephadm 支持两种方式:

  1. 批量磁盘添加,OSD是无序的
  2. 指定磁盘添加,可控

查看每个机器上的块设备

root@controller:/etc/selinux# ceph orch device ls
HOST        PATH      TYPE  DEVICE ID                       SIZE  AVAILABLE  REFRESHED  REJECT REASONS 
compute1    /dev/sdb  hdd   TOSHIBA_MG06ACA1_3250A1XRFKQE  10.0T  Yes        106s ago                  
compute1    /dev/sdc  hdd   TOSHIBA_MG06ACA1_3250A10CFKQE  10.0T  Yes        106s ago                  
compute2    /dev/sdb  hdd   TOSHIBA_MG06ACA1_3250A1XRFKQE  10.0T  Yes        103s ago                  
compute2    /dev/sdc  hdd   TOSHIBA_MG06ACA1_3250A10CFKQE  10.0T  Yes        103s ago                  
controller  /dev/sdb  hdd   TOSHIBA_MG06ACA1_3250A1XRFKQE  10.0T  Yes        9m ago                    
controller  /dev/sdc  hdd   TOSHIBA_MG06ACA1_3250A10CFKQE  10.0T  Yes        9m ago

磁盘通过 ceph-volume 容器在机器上周期扫描获取的,可使用的磁盘需满足如下条件:

  1. The device must have no partitions.
  2. The device must not have any LVM state.
  3. The device must not be mounted.
  4. The device must not contain a file system.
  5. The device must not contain a Ceph BlueStore OSD.
  6. The device must be larger than 5 GB.
    一次性添加所有磁盘,该方式一旦设置,只有机器上新增磁盘就会自动创建对象的OSD
root@controller:/etc/selinux# ceph orch apply osd --all-available-devices --dry-run
WARNING! Dry-Runs are snapshots of a certain point in time and are bound
to the current inventory setup. If any of these conditions change, the
preview will be invalid. Please make sure to have a minimal
timeframe between planning and applying the specs.
####################
SERVICESPEC PREVIEWS
####################
+---------+------+--------+-------------+
|SERVICE  |NAME  |ADD_TO  |REMOVE_FROM  |
+---------+------+--------+-------------+
+---------+------+--------+-------------+
################
OSDSPEC PREVIEWS
################
+---------+------+------+------+----+-----+
|SERVICE  |NAME  |HOST  |DATA  |DB  |WAL  |
+---------+------+------+------+----+-----+
+---------+------+------+------+----+-----+

关闭自动发现磁盘自动创建OSD

root@controller:/etc/selinux# ceph orch apply osd --all-available-devices --unmanaged=true
Scheduled osd.all-available-devices update...

指定磁盘添加OSD

root@controller:/var/lib/ceph/osd# ceph orch daemon add osd controller:/dev/sdc

4. 删除集群

cephadm rm-cluster --fsid <fsid> --force

5. 部署遇到的问题以及解决办法

5.1. ERROR: Cannot infer an fsid, one must be specified: [‘xx’, ‘xxx’, ‘xxxx’]

此问题推断为多个ceph集群数据存在,导致cephadm shell命令 无法推断打开哪一个cpeh集群命令行。
解决方法为删除掉old集群数据,只留新集群文件夹即可。

root@controller:/etc/ceph# cd /var/lib/ceph
root@controller:/var/lib/ceph# ls
7b3a8c96-80da-11ed-9433-570310474c9e  e9a3d784-80d8-11ed-9433-570310474c9e  f8646be8-80d9-11ed-9433-570310474c9e
root@controller:/var/lib/ceph# rm -rf e9a3d784-80d8-11ed-9433-570310474c9e/
root@controller:/var/lib/ceph# rm -rf f8646be8-80d9-11ed-9433-570310474c9e/
root@controller:/var/lib/ceph# ll
total 12
drwxr-x---  3 ceph ceph 4096 Dec 21 11:56 ./
drwxr-xr-x 75 root root 4096 Dec 21 10:06 ../
drwx------  7  167  167 4096 Dec 21 10:54 7b3a8c96-80da-11ed-9433-570310474c9e/

5.2. ceph-mon起来后,ceph -s 命令无任何输出,卡住

问题原因:此类问题出在mon服务上
解决办法:
可以查看/etc/ceph/ceph.conf文件mon_host地址是否正确
可以尝试重启ceph-mon服务
本文中遇到的问题为ceph-mon服务没有正确启动,正确启动后问题解决。

root@controller:/etc/selinux# systemctl |grep ceph
  ceph-7b3a8c96-80da-11ed-9433-570310474c9e@crash.controller.service                                    loaded active running   Ceph crash.controller for 7b3a8c96-80da-11ed-9433-570310474c9e                                 
● ceph-7b3a8c96-80da-11ed-9433-570310474c9e@mgr.controller.idxakq.service                               loaded failed failed    Ceph mgr.controller.idxakq for 7b3a8c96-80da-11ed-9433-570310474c9e                            
● ceph-7b3a8c96-80da-11ed-9433-570310474c9e@mon.controller.service                                      loaded failed failed    Ceph mon.controller for 7b3a8c96-80da-11ed-9433-570310474c9e                                   
● ceph-e9a3d784-80d8-11ed-9433-570310474c9e@mgr.controller.pmdlwp.service                               loaded failed failed    Ceph mgr.controller.pmdlwp for e9a3d784-80d8-11ed-9433-570310474c9e                            
● ceph-e9a3d784-80d8-11ed-9433-570310474c9e@mon.controller.service                                      loaded failed failed    Ceph mon.controller for e9a3d784-80d8-11ed-9433-570310474c9e                                   
  ceph-f8646be8-80d9-11ed-9433-570310474c9e@mgr.controller.zblhlv.service                               loaded active running   Ceph mgr.controller.zblhlv for f8646be8-80d9-11ed-9433-570310474c9e                            
● ceph-f8646be8-80d9-11ed-9433-570310474c9e@mon.controller.service                                      loaded failed failed    Ceph mon.controller for f8646be8-80d9-11ed-9433-570310474c9e                                   
  system-ceph\x2d7b3a8c96\x2d80da\x2d11ed\x2d9433\x2d570310474c9e.slice                                 loaded active active    system-ceph\x2d7b3a8c96\x2d80da\x2d11ed\x2d9433\x2d570310474c9e.slice                          
  system-ceph\x2de9a3d784\x2d80d8\x2d11ed\x2d9433\x2d570310474c9e.slice                                 loaded active active    system-ceph\x2de9a3d784\x2d80d8\x2d11ed\x2d9433\x2d570310474c9e.slice                          
  system-ceph\x2df8646be8\x2d80d9\x2d11ed\x2d9433\x2d570310474c9e.slice                                 loaded active active    system-ceph\x2df8646be8\x2d80d9\x2d11ed\x2d9433\x2d570310474c9e.slice                          
  ceph-7b3a8c96-80da-11ed-9433-570310474c9e.target                                                      loaded active active    Ceph cluster 7b3a8c96-80da-11ed-9433-570310474c9e                                              
  ceph-e9a3d784-80d8-11ed-9433-570310474c9e.target                                                      loaded active active    Ceph cluster e9a3d784-80d8-11ed-9433-570310474c9e                                              
  ceph-f8646be8-80d9-11ed-9433-570310474c9e.target                                                      loaded active active    Ceph cluster f8646be8-80d9-11ed-9433-570310474c9e                                              
  ceph.target                                                                                           loaded active active    All Ceph clusters and services                                                                 
root@controller:/etc/selinux# systemctl start ceph-7b3a8c96-80da-11ed-9433-570310474c9e@mon.controller.service

5.3. 指定磁盘添加OSD时报错Device /dev/xxx has a filesystem.

问题原因:磁盘上有一个文件系统存在
解决办法:格式化磁盘后在挂载osd

root@controller:/etc/selinux# mkfs.xfs -f /dev/sdc
meta-data=/dev/sdc               isize=512    agcount=10, agsize=268435455 blks
         =                       sectsz=4096  attr=2, projid32bit=1
         =                       crc=1        finobt=1, sparse=1, rmapbt=0
         =                       reflink=1
data     =                       bsize=4096   blocks=2441609216, imaxpct=5
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0, ftype=1
log      =internal log           bsize=4096   blocks=521728, version=2
         =                       sectsz=4096  sunit=1 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/107201.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

玩转ast- 手写babel插件篇

AST抽象语法树是什么&#xff1f;抽象语法树&#xff08;Abstract Syntax Tree&#xff0c;AST&#xff09;是源代码语法结构的一种抽象表示它以树状的形式表现编程语言的语法结构&#xff0c;树上的每个节点都表示源代码中的一种结构每个包含type属性的数据结构&#xff0c;都…

基于Amlogic T972:结合DTS、驱动、Datasheet,解析Pinctrl子系统、GPIO脚的复用方法

文章目录前言一、概念1.1 Pinctrl devices1.2 Pinctrl client devices二、例&#xff08;1&#xff09;GPIOZ_9/10 复用为 i2c2_z2.1 Pin controller devices2.1.1 设备树配置: dts2.1.2 源码&#xff1a;驱动配置2.1.3 Datasheet2.2 Pinctrl client devices2.2.1 设备树配置&a…

华为云桌面,开启云上高效办公之旅!

在传统办公模式中&#xff0c;企业必须自己购买服务器和数据库软件才能进行日常管理&#xff0c;部署繁琐&#xff0c;还需要日常运维。而云桌面办公系统通过将传统的计算机终端与云计算平台有机地结合起来&#xff0c;使企业能够轻松应对各种变化带来的威胁和压力。 其中华为云…

用户与技术双向推动,小游戏赛道迎来新一轮增长机会

2017 年 12 月 28 日&#xff0c;微信小游戏正式上线。“跳一跳”刷爆了微信朋友圈&#xff0c;随后欢乐斗地主、坦克大战、纪念碑谷、拳皇等经典游戏纷纷出现在小游戏平台上。在过去的5年间&#xff0c;各大平台纷纷紧跟微信的步伐&#xff0c;纷纷入局小游戏&#xff0c;当前…

回调函数的基本使用

&#x1f3d6;️作者&#xff1a;malloc不出对象 ⛺专栏&#xff1a;《初识C语言》 &#x1f466;个人简介&#xff1a;一名双非本科院校大二在读的科班编程菜鸟&#xff0c;努力编程只为赶上各位大佬的步伐&#x1f648;&#x1f648; 目录前言一、什么是回调函数二、为什么要…

打开新世界大门,测试人可以用Chrome插件干什么?

什么是Chrome插件 这篇文章所说的Chrome插件&#xff0c;也就是我们通常说的Chrome扩展 (Chrome Extension)&#xff0c;是一个用Web技术开发、用来增强浏览器功能的软件&#xff0c;它其实就是一个由 HTML、CSS、JS、图片等资源组成的一个 .crx 后缀的压缩包。 让我们来看看…

Android12屏下指纹解析

版权声明&#xff1a;本文为梦想全栈程序猿原创文章&#xff0c;转载请附上原文出处链接和本声明 前言&#xff1a;google官方更新了Android12的指纹架构&#xff0c;新添加了关于屏下指纹(屏下光学跟屏下超声波)的支持&#xff0c; 刚好近期要研究这个&#xff0c;想把自己的…

移动硬盘安装ubuntu系统二——启动U盘安装

一. 简介 在之前的一篇文章中记录了使用VMware Workstation给移动硬盘中安装Ubuntu系统过程&#xff0c;本篇文章简单记录使用启动盘安装 Ubuntu 20.04.5系统到移动硬盘。 二. 制作Ubuntu镜像的系统启动盘 按照官网 Install Ubuntu desktop上介绍&#xff0c;在 Windows 上可…

【Transformer】——李宏毅机器学习笔记

Transformer 前言 transformer是一个sequence-to-sequence(seq2seq) 的 model input a sequence&#xff0c;output a sequence. The output length is determined by model. 例如 语音辨识&#xff1a; 那么为什么不能把以上三种模型结合起来&#xff0c;进行语音识别呢&…

代码随想录拓展day3 922. 按奇偶排序数组II;24. 两两交换链表中的节点;234.回文链表;143.重排链表

代码随想录拓展day3 922. 按奇偶排序数组II&#xff1b;24. 两两交换链表中的节点&#xff1b;234.回文链表&#xff1b;35.搜索插入位置 数组和链表的题目。链表的操作几天没看又忘了&#xff0c;果然是要及时复习加反复复习。 922. 按奇偶排序数组II 922. 按奇偶排序数组 …

【小程序】宿主环境之通信模型和运行机制

目录 宿主环境 1. 什么是宿主环境 2. 小程序的宿主环境 通行模型 1. 通信的主体 2. 小程序的通信模型 运行机制 5. 小程序启动的过程 6. 页面渲染的过程 宿主环境 1. 什么是宿主环境 宿主环境&#xff08;host environment&#xff09;指的是程序运行所必须的依赖环…

论文笔记Point·E: A System for Generating 3D Point Clouds from Complex Prompts

之前的文本生成3D模型的方法生成一个模型需要多块GPU跑好几个小时&#xff0c;该文章提出的方法生成一个3D模型只需要单GPU1-2分钟。 该文章生成的3D模型的质量并不是当下最好的&#xff0c;但是生成速度很快&#xff0c;因此在现实中很有意义。 从文本生成3D模型的过程分为三…

Redis 对象

在 Redis底层数据结构介绍1 中我们介绍了Redis用到的所有主要数据结构&#xff0c;比如简单动态字符串&#xff08;SDS&#xff09;、双端链表、字典、压缩列表、整数集合等等。Redis并没有直接使用这些数据结构来实现键值对数据库&#xff0c;而是基于这些数据结构创建了一个对…

第7章 数据库设计和ER模型

第7章 数据库设计和ER模型 考试范围 7.1-7.7 考试题型&#xff1a;数据库设计题 考试内容&#xff1a; 掌握基本ER模型的概念与ER图的设计&#xff1b; 掌握将ER模型转换成关系模式的方法。 1、掌握基本ER模型的概念与ER图的设计 概念 E-R 模型是数据库设计中广泛使用的数…

2022-金盾信安杯

web 有来无回 考察xxe盲注 参考博客&#xff1a;https://blog.csdn.net/m0_49623330/article/details/113641498 <!ENTITY % a SYSTEM "http://vps/test.dtd"> %a; ] > 在自己服务器上编写dtd文件 <!ENTITY % dtd "<!ENTITY % hack SYSTEM ht…

零基础小白如何提高学Python的效率?

Python在所有的编成语言对小白来说是最友好的一种语言&#xff0c;简单、清晰、易学&#xff0c;但是有句话说万事开头难&#xff0c;对于很多连计算机基础都没有的伙伴来说&#xff0c;Python学习的效率极其低&#xff0c;这也导致了一部分放弃学习Python。 为了能够解决大家…

Android MAT的使用

下载与配置 MAT下载地址&#xff1a; Eclipse Memory Analyzer Open Source Project | The Eclipse Foundation JAVA 11下载地址&#xff1a; Java Downloads | Oracle 由于最新版的MAT还需要JAVA 11&#xff0c;所以还需要配置JAVA 11的环境。 JAVA 11环境配置&#xff…

ssm药店药品进销存管理系统idea maven mysql

任何系统都要遵循系统设计的基本流程&#xff0c;本系统也不例外&#xff0c;同样需要经过市场调研&#xff0c;需求分析&#xff0c;概要设计&#xff0c;详细设计&#xff0c;编码&#xff0c;测试这些步骤&#xff0c;基于JSP技术、SSM框架、B/S机构、Mysql数据库设计并实现…

【项目实战:核酸检测平台】第五章 众志诚城

本章目标 完成转运人员、接收人员、数据上传人员端 用到技术&#xff1a; EasyExcel、ElementUIPlus。lodop打印 概述 这一章要完成转运人员、接收人员、数据上传人员端的业务模块&#xff0c;从网上的资料我并没有找到相关的界面&#xff0c;没关系自己脑补就好了&#x…

React DAY05

复习&#xff1a; 1.JSX中的数据绑定 内容绑定&#xff1a;<div>{表达式}</div> 属性绑定&#xff1a;<img src{表达式}/> 样式绑定&#xff1a;<div className{表达式} style{样式对象}></div> 事件绑定&#xff1a;<button onClick{函数} …