Openstack 与 Ceph集群搭建(中): Ceph部署

文章目录

  • 一、部署前说明
    • 1. ceph 版本选择依据
    • 2. ceph网络要求
    • 3. 硬件要求
  • 二、部署架构
  • 三、部署过程
    • 1. 通用步骤
    • 2. 部署管理节点
      • 创建账号
      • 安装Cephadm
      • 运行bootstrap
    • 3. 登录Ceph web
    • 4. 将其他节点加入集群
      • 同步ceph key
      • 安装ceph CLI命令行
      • 添加主机节点到集群
      • 添加OSD节点
      • 将监控节点添加到集群
      • 监控配置
  • 四、查看集群状态

一、部署前说明

本文采用cephadm进行安装Ceph,cephadm是官方推荐的ceph集群部署工具。

1. ceph 版本选择依据

在上一篇文章:Openstack 与 Ceph集群搭建(上)中说明了ceph版本选择, 这里提供相关依据:

在这里插入图片描述

2. ceph网络要求

根据官方要求,Ceph集群至少需要10Gb/s的网络带宽
在这里插入图片描述

官方链接:https://docs.ceph.com/en/latest/start/hardware-recommendations/#networks

3. 硬件要求

在这里插入图片描述

二、部署架构

Ceph 集群需要部署4个组件,OSD、MON、MDS ,各接点部署,如下图:
在这里插入图片描述

  • OSD:Ceph OSD(Object Storage 对象存储守护进程)存储数据,处理数据复制、恢复、重新平衡;并通过检查其他Ceph OSD守护进程的心跳来向Ceph监视器和管理器提供信息。通常至少要3个Ceph OSD节点来实现冗余和高可用性。本质上OSD就是一个个Host节点上的存储磁盘。
  • Monitors:Ceph Monitor (守护进程 ceph-mon)维护集群的映射,包括监视器映射、管理器映射、OSD映射、MDSS映射和CRUSH映射。这些映射是Ceph守护进程相互协调所需的关键集群状态。 监视器还负责管理守护进程和客户端之间的身份验证。 通常至少需要三个监视器才能实现冗余和高可用性。基于paxos协议实现节点间的信息同步。
  • Managers:Ceph管理器(守护进程ceph-mgr)负责跟踪运行时的指标和Ceph集群的当前状态,包括存储利用率、当前性能指标和系统负载。Ceph管理器守护进程还托管基于Python的模块来管理公开Ceph集群信息,包括基于Web的Ceph仪表盘和REST API。高可用通常至少要2个管理器。基于raft协议实现节点间的同步。
  • MDSs:Ceph元数据服务器(MDS Metadata Server、 ceph-mds)代表Ceph文件系统存储元数据。Ceph元数据服务器允许POSIX(为应用程序提供接口标准)文件系统用户执行基本命令(如ls、find等),而不会给Ceph存储集群带来巨大负担。
类型节点
部署节点node-03 172.16.250.248
OSD节点node-01 172.16.250.250;node-02 172.16.250.249 ;node-03 172.16.250.248
MON节点node-01 172.16.250.250;node-02 172.16.250.249 ;node-03 172.16.250.248
MDS节点node-01 172.16.250.250;node-02 172.16.250.249 ;node-03 172.16.250.248
MGR节点node-01 172.16.250.250;node-03 172.16.250.248

三、部署过程

1. 通用步骤

在全节点安装docker

apt install docker.io

2. 部署管理节点

这里的管理节点也是部署节点 node-03

创建账号

在部署节点添加ceph用户

useradd -d /home/ceph_user -m ceph_user 
passwd ceph_user

安装Cephadm

在部署节点安装Cephadm。cephadm是官方推荐的ceph集群部署工具。

选项一:

apt install -y cephadm

该步骤执行后,直接开始bootstrap安装环节。

选项一:这种安装方式不一定是最新版本ceph,故提供另一种安装方式

选项二(本文档采用):

# replace this with the active release
CEPH_RELEASE=18.2.2# 下载
curl --silent --remote-name --location https://download.ceph.com/rpm-${CEPH_RELEASE}/el9/noarch/cephadm# 添加可执行权限
chmod +x cephadm  # 对下载的cephadm添加可执行权限。# 安装cephadmin
./cephadm add-repo --release reef
./cephadm install#验证
root@ceph-mon-01:~# which cephadm
/usr/sbin/cephadm

最新版本号查询:https://docs.ceph.com/en/latest/releases/#active-releases

运行bootstrap

部署节点node-03上运行:

方式一:

# 指定第一台 监控主机IP为 172.16.249.248
cephadm bootstrap --mon-ip 172.16.250.248
# 或者使用下面的命令: 指定存储网络
cephadm bootstrap --mon-ip 172.16.250.248 --cluster-network 172.16.249.0/24

方式二(本文档采用):

可以新建/etc/ceph/initial-ceph.conf文件并 写入以下配置(刷配置时需要删除注释):

[global]
public_network = 172.16.250.0/24         # 指定ceph公共网络,用于用户访问
cluster_network = 172.16.249.0/24        # 指定集群内部网络,用于同步
# public_network = {IPv4 public-network/netmask}, {IPv6 public-network/netmask}
mon_host = 172.16.250.250
osd_journal_size = 10000
osd_pool_default_size = 2                # 副本数默认为3,这里修改为2; 即保留2份数据
osd_pool_default_pg_num = 512
osd_pool_default_pgp_num = 512
rbd_default_features = 3
mon_max_pg_per_osd =2000
mon_allow_pool_delete=true   

通过以上脚本进行bootstrap:

cephadm bootstrap --config /etc/ceph/initial-ceph.conf --mon-ip 172.16.250.248

输出如下:

Setting public_network to 172.16.250.0/24 in mon config section
Setting cluster_network to 172.16.249.0/24
Wrote config to /etc/ceph/ceph.conf
Wrote keyring to /etc/ceph/ceph.client.admin.keyring
Creating mgr...
Verifying port 0.0.0.0:9283 ...
Verifying port 0.0.0.0:8765 ...
Verifying port 0.0.0.0:8443 ...
Waiting for mgr to start...
Waiting for mgr...
mgr not available, waiting (1/15)...
mgr not available, waiting (2/15)...
mgr not available, waiting (3/15)...
mgr is available
Enabling cephadm module...
Waiting for the mgr to restart...
Waiting for mgr epoch 5...
mgr epoch 5 is available
Setting orchestrator backend to cephadm...
Generating ssh key...
Wrote public SSH key to /etc/ceph/ceph.pub
Adding key to root@localhost authorized_keys...
Adding host itlab...
Deploying mon service with default placement...
Deploying mgr service with default placement...
Deploying crash service with default placement...
Deploying ceph-exporter service with default placement...
Deploying prometheus service with default placement...
Deploying grafana service with default placement...
Deploying node-exporter service with default placement...
Deploying alertmanager service with default placement...
Enabling the dashboard module...
Waiting for the mgr to restart...
Waiting for mgr epoch 9...
mgr epoch 9 is available
Generating a dashboard self-signed certificate...
Creating initial admin user...
Fetching dashboard port number...
Ceph Dashboard is now available at:URL: https://itlab:8443/User: adminPassword: Dashabi#2024

Bootstrap 命令功能如下:

  • 为本地主机上的新群集创建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

此外:该命令会有如下输出,主要涉及用户名和密码:

URL: https://ceph_mon_01:8443/
User: admin
Password: kjephbnn09

在这里插入图片描述

3. 登录Ceph web

首次登录会要求修改密码。
在这里插入图片描述

4. 将其他节点加入集群

同步ceph key

在部署节点逐一对复制到集群所有节点,举例复制到osd01,如下:

ssh-copy-id -f -i /etc/ceph/ceph.pub node-01
ssh-copy-id -f -i /etc/ceph/ceph.pub node-02

安装ceph CLI命令行

在部署节点安装ceph-common

cephadm install ceph-common

添加主机节点到集群

在部署节点node-03 执行以下命令用于添加其他节点到集群:

ceph orch host add node-01
ceph orch host add node-02

添加OSD节点

作为OSD存储的磁盘必须满足以下条件:

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

在部署节点执行以下命令用于自动发现并上线OSD:

# 自动发现OSD
ceph orch apply osd --all-available-devices# 关闭自动发现
ceph orch apply osd --all-available-devices --unmanaged=true

在特定主机特定设备上创建osd(二选一)
根据你的环境进行替换node-02:/dev/sdb (/dev/sdb 为硬盘)

ceph orch daemon add osd node-02:/dev/sdb

若发现OSD未成功加入,可对目标磁盘做以下操作:

# 重置磁盘
parted /dev/sda mklabel gpt# 新建分区(若要将分区作为OSD)
sudo mkfs.ext4 /dev/sdc1# 初始化分区(硬盘)
wipefs -af /dev/sda

若磁盘被其他ceph占用,解决方案如下:

dmsetup ls
dmsetup remove ceph

将监控节点添加到集群

ceph orch daemon add mon node-01
ceph orch daemon add mgr node-01

添加管理节点lable,指定Managers进程节点:

ceph orch host label add node-01 _admin
ceph orch host label add node-03 _admin

添加额外监控主机:

https://docs.ceph.com/en/latest/cephadm/services/mon/#deploy-additional-monitors

# 限制监控主机仅在mon01,mon02,mon03
ceph orch apply mon "node-01,node-02,node-03"

监控配置

ceph mgr module enable prometheus

Enable ceph prometheus module on every cluster: ceph mgr module enable prometheus

Allow traffic through the port 9283 of the machines containing the ceph mgr

To ensure that you don’t lose the metrics between mgr fail-overs, add all the mgr to the target section in Prometheus (depending of the prometheus scrape interval some of the metrics could be lost during the failover)

访问:https://172.16.250.248:3000
在这里插入图片描述

四、查看集群状态

MON 节点:使用 ceph mon stat 和 ceph quorum_status 查看。
OSD 节点:使用 ceph osd stat 和 ceph osd tree 查看。
MDS 节点:使用 ceph fs status 查看。
Manager 节点:使用 ceph mgr stat 查看。
集群整体状态:使用 ceph -s 或 ceph status 查看。

ceph mgr stat
ceph fs status
ceph osd tree
ceph osd stat
ceph mon stat
ceph orch host ls
ceph orch device ls
ceph -s

在这里插入图片描述

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

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

相关文章

【Canvas与艺术】环形橄榄枝纹饰

【成图】 【代码】 <!DOCTYPE html> <html lang"utf-8"> <meta http-equiv"Content-Type" content"text/html; charsetutf-8"/> <head><title>环形橄榄枝(draft2)</title><style type"text/css&quo…

安卓蓝牙日志的获取方法

有过蓝牙调试经历的同学们可能都知道&#xff0c;在安卓系统中&#xff0c;在手机的设置–>开发人员页面下有一个开启蓝牙HCI信息收集日志选项开关&#xff0c;如下图中标红处&#xff0c; 打开该开关&#xff0c;就可以收集本机发送和接收的蓝牙HCI包。蓝牙包的数据会保存在…

git提交本地项目到远程仓库

1、查看项目目录&#xff0c;是否存在.git文件夹&#xff08;若存在则删除&#xff09; 2、登录git并新建一个空白项目 3、idea创建本地git仓库&#xff08;选择本地项目&#xff09; 4、添加要提交的项目&#xff08;项目右键&#xff09; 5、提交代码到本地仓库 6、配置远程…

轻松实现微服务间的无缝通信:OpenFeign入门指南

OpenFeign 前言1、导入依赖2、开启feign调用3、编写OpenFeign客户端4、Fegin接口实现5、Feign接口调用 前言 Spring Cloud OpenFeign是一种基于Spring Cloud的声明式REST客户端&#xff0c;它简化了与HTTP服务交互的过程。它将REST客户端的定义转化为Java接口&#xff0c;并且…

css 宫格样式内容上下结构

结构 <div class"sc-content-group"><div class"sc-content-item"><div class"sc-item-img"><el-image :src"src" :preview-src-list"[src]"></el-image></div><div class"s…

datax关于postsql数据增量迁移的问题

看官方文档是不支持的 数据源及同步方案_大数据开发治理平台 DataWorks(DataWorks)-阿里云帮助中心 (aliyun.com) 看了下源码有个postsqlwriter 看了下也就拼接sql 将 PostgresqlWriter中的不允许更新先注释了 让他过去先 然后看到 WriterUtil中的对应方法 getWriteTemplat…

咸鱼之王手游内购修复无bug运营版联网架设+后台

今天给大家带来一款单机游戏的架设&#xff1a;咸鱼之王手游。 另外&#xff1a;本人承接各种游戏架设&#xff08;单机联网&#xff09; 本人为了学习和研究软件内含的设计思想和原理&#xff0c;带了架设教程仅供娱乐。 教程是本人亲自搭建成功的&#xff0c;绝对是完整可…

【代码随想录训练营第42期 Day38打卡 - 动态规划Part6 - LeetCode 322. 零钱兑换 279.完全平方数 139.单词拆分

目录 一、做题心得 二、题目与题解 题目一&#xff1a;322. 零钱兑换 题目链接 题解&#xff1a;动态规划--完全背包 题目二&#xff1a; 279.完全平方数 题目链接 题解&#xff1a;动态规划--完全背包 题目三&#xff1a;139.单词拆分 题目链接 题解&#xff1a;动…

qt-16可扩展对话框--隐藏和展现

可扩展对话框 知识点extension.hextension.cppmain.cpp运行图初始化隐藏展现--点击--详细按钮 知识点 MainLayout->setSizeConstraint(QLayout::SetFixedSize);//固定窗口大小 extension.h #ifndef EXTENSION_H #define EXTENSION_H#include <QDialog>class Extens…

你是如何更精准地指引模型,激发其无尽的创造力?

随着大型语言模型日益凸显其重要性&#xff0c;发掘并充分利用它们的潜力&#xff0c;很大程度上依赖于我们如何巧妙构思和构造指令——即Prompt的精炼艺术。优化Prompt撰写技巧&#xff0c;将能够更好地引导大模型&#xff0c;为各类应用场景生成高质量的文本输出。分享出你的…

【STM32】C语言基础补充

学习过程中发现自己好些需要用到的C语言语法、特征都不太熟练了&#xff0c;特意记录一下&#xff0c;免得忘记了&#xff0c;以后遇到了新的也会继续更新 目录 1 全局变量 2 结构体 3 静态变量 4 memset()函数 5 使用8位的存储器存16位的数 1 全局变量…

Excel“取消工作表保护”忘记密码并恢复原始密码

文章目录 1.前言2.破解步骤3. 最终效果4.参考文献 1.前言 有时候别人发来的Excel中有些表格不能编辑&#xff0c;提示如下&#xff0c;但是又不知道原始密码 2.破解步骤 1、打开您需要破解保护密码的Excel文件&#xff1b; 2、依次点击菜单栏上的视图—宏----录制宏&#xf…

Keil C51 插件 快速复制一行

此插件解决的问题 目前 Keil 软件 只可以 先选中一行&#xff0c;再Ctrl C Ctrl V , 太麻烦了 Keil 插件 -- Python 代码 import sys# 插入当前行内容 def insert_line(current_file_path, line_number):line_to_insert # 读取文件内容with open(current_file_path, r, enc…

微信小游戏授权问题

微信小程序获取用户相关信息的接口&#xff0c;如wx.getUserCloudStorage&#xff0c;报错&#xff1a;please go to mp to announce your privacy usage。 需要在微信公众平台设置用户隐私保护。

APP支付宝授权获取code uniapp

1.点击使用plus.runtime跳转打开支付宝 //打开支付宝授权&#xff0c;在支付宝APP中授权后会在支付宝中跳转到你填写的h5地址//urls是授权地址可以后端拼接也可以前端写死 //以下是一个拼接示例&#xff0c;需修改app_id的值和redirect_uri的值即可 //app_id是商户的APPID&…

OpenDDS的Rtps_Udp传输协议可靠性QoS收发基本流程

OpenDDS中,实现了Rtps_Udp传输协议(非纯udp)的可靠性传输。传输的线程包括: 1)发送方线程主要线程和定时器 《1》应用线程 《2》网络异步发送线程 《3》Heartbeat定时器 《4》Nak_response定时器 2)接收方主要线程和定时器 《1》网络异步接收线程 《2》heartbeat_respons…

Ubuntu 16.04 通过deb包安装内核头文件

文章目录 前言通过deb包安装内核头文件 前言 Ubuntu16.04部分内核版本无法通过 apt-get install linux-headers-$(uname -r) 来进行安装&#xff1a; # cat /etc/lsb-release DISTRIB_IDUbuntu DISTRIB_RELEASE16.04 DISTRIB_CODENAMExenial DISTRIB_DESCRIPTION"Ubuntu…

汇编

汇编指令 随机数mov指令mov指令ldr指令&#xff08;伪指令&#xff09;add指令sub指令bic指令orr指令b指令cmp指令stmfd指令ldmfd指令import栈汇编指令的s后缀 随机数 1.如果某个数的数值范围是0~255之间&#xff0c;那么这个数一定是立即数&#xff1b; 2.把某个数展开成2进制…

网络工程师必备10个Linux网络命令,超好用

号主&#xff1a;老杨丨11年资深网络工程师&#xff0c;更多网工提升干货&#xff0c;请关注公众号&#xff1a;网络工程师俱乐部 下午好&#xff0c;我的网工朋友 掌握正确的工具对于提升工作效率的重要性不言而喻&#xff0c;尤其在网络工程领域&#xff0c;这一点更是至关重…

尚品汇-购物车列表、临时用户购物车与登录用户购物车合并实现(三十七)

目录&#xff1a; &#xff08;1&#xff09;功能—展示购物车列表 &#xff08;2&#xff09;在web-all添加前端实现 &#xff08;3&#xff09;功能--合并购物车 &#xff08;1&#xff09;功能—展示购物车列表 购物车列表接口&#xff1a;CartService /*** 通过用户Id …