当前位置: 首页 > news >正文

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

在这里插入图片描述

相关文章:

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

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

上市公司上下游、客户数据匹配数据集(2001-2023年)

参考《中国工业经济》中陶锋(2023)的做法,对上市公司的上下游供应商和客户数据进行匹配。形成“上游供应商—目标企业—下游客户一年度数据集” 一、数据介绍 数据名称:上市公司-上下游和客户数据匹配 数据范围:上市…...

Promise 对象

Promise 对象是 JavaScript 中用于处理异步操作的一种机制。它代表了一个最终可能完成(fulfilled)或失败(rejected)的异步操作及其结果值。Promise 对象使得异步代码更加容易编写、理解和维护,因为它提供了一种链式调用…...

扫码头测试检测适配步骤

需求分析:适配扫码头看是否能正常工作即适配其能否调用相应的节点其能点亮扫码头并进一步获取其扫码的值。 1.首先先检验其串口是否正常通讯。 2.检验扫码头是否正常工作。 3.上电后拉高是否正常操作触发脚拉高其扫码头有无正常点亮。 4.按侧边键是否正常点亮扫…...

解决k8s分布式集群,子节点加入到主节点失败的问题

1.问题情况 Master主节点在 使用 kubeadm init 成功进行初始化后,如下所示 Your Kubernetes control-plane has initialized successfully!To start using your cluster, you need to run the following as a regular user:mkdir -p $HOME/.kubesudo cp -i /etc/k…...

什么是XSS跨站攻击?如何防护?

什么是XSS跨站攻击?如何防护? 什么是XSS攻击 XSS攻击,即跨站脚本攻击(Cross-Site Scripting),是一种常见的网络安全威胁。其本质是通过在网页中注入恶意的脚本代码,当其他用户浏览这些网页时&…...

谷粒商城实战笔记-问题记录-首页没有显示用户名-跨域session问题

文章目录 一,首页无用户信息二,定位三,两个问题1,跨域名session共享 一,首页无用户信息 谷粒商城首页,点击超链接您好,请登录,正常情况下应该跳转到Auth模块的login页面,…...

【面试宝典】redis常见面试题总结(上)

一、为什么使用 redis? 使用缓存的目的就是提升读写性能。为了提高读写性能,带来更高的并发量。减少对 MySQL 的请求量。 二、redis 有哪些好处? 读写速度快,因为数据存储在内存中,所以数据获取快。支持多种数据结构…...

数据仓库: 3- ETL过程

目录 3- ETL过程3.1 数据抽取(Extract)3.1.1 数据抽取的挑战3.1.2 数据抽取的方式3.1.2.1 全量抽取3.1.2.2 增量抽取3.1.2.3 实时抽取 3.1.3 数据抽取的技术3.1.4 数据抽取工具3.1.5 总结 3.2 数据转换(Transform)3.2.1 定义3.2.2…...

js数组变字符串

let array [1,2,3]; let string array.join(,); // 使用空格作为分隔符 console.log(string); // 输出: "1,2,3"...

日常问题笔记1

th:insert&#xff1a;将被引用的模板片段插⼊到自己的标签体中 th:replace&#xff1a;将被引用的模板片段替换掉自己 th:include&#xff1a;类似于 th:insert&#xff0c;⽽不是插⼊⽚段&#xff0c;它只插⼊此⽚段的内容 <!--1、比如抽取的公用代码片段如下--> <…...

位图与布隆过滤器 —— 海量数据处理

&#x1f308; 个人主页&#xff1a;Zfox_ &#x1f525; 系列专栏&#xff1a;C从入门到精通 目录 &#x1f680; 位图 一&#xff1a; &#x1f525; 位图概念 二&#xff1a; &#x1f525; 位图的实现思路及代码实现三&#xff1a; &#x1f525; 位图的应用四&#xff1a;…...

二:《Python基础语法汇总》— 条件判断与循环结构

一&#xff1a;条件判断 1.程序执行的三大流程&#xff1a; ​ 顺序流程&#xff1a;无缩进代码&#xff0c;从上往下依次执行 ​ 分支流程&#xff1a;选择性执行某块代码&#xff0c;或跳过某行代码去执行&#xff0c;与缩进&#xff08;TAB&#xff09;有关 ​ 循环流程&…...

【威锋网-注册安全分析报告-无验证方式导致安全隐患】

前言 由于网站注册入口容易被黑客攻击&#xff0c;存在如下安全问题&#xff1a; 1. 暴力破解密码&#xff0c;造成用户信息泄露 2. 短信盗刷的安全问题&#xff0c;影响业务及导致用户投诉 3. 带来经济损失&#xff0c;尤其是后付费客户&#xff0c;风险巨大&#xff0c;造…...

01_React简介、基础入门

React 简介、基础入门 一、React 简介1、是什么&#xff1f;2、谁开发的&#xff1f;3、为什么要学&#xff1f;4、React 的特点5、学习 React 之前你要掌握的 Javascript 基础知识 二、React 入门1、相关 js 库2、Hello React 入门小例子---React16.8.0 版本3、为什么不用 js …...

【Java 内存区域】

Java内存区域 JDK1.7 VS JDK1.8堆 (Heap)方法区 (Method Area)String 常量池 (String Pool)运行时常量池 (Runtime Constant Pool)虚拟机栈 (JVM Stack)局部变量表操作数栈动态链接方法返回信息 本地方法栈 (Native Method Stack)程序计数器 (Program Counter Register)元空间 …...

你是如何克服编程学习中的挫折感的?

一&#xff1a;学习之路 在编程学习的过程中&#xff0c;挫折和挑战是不可避免的。面对这些困难&#xff0c;我个人的一些经验和方法如下&#xff0c;或许能为你提供一些启示&#xff1a; 1. 学会分解问题 当遇到复杂的算法或者Bug时&#xff0c;我会将问题分解成更小的部分。…...

【AI应用实战】灵办AI插件集成详细指南

一、写在前面 随着AI技术的日新月异&#xff0c;大型模型应用如雨后春笋般涌现&#xff0c;从ChatGPT到文心一言&#xff0c;再到讯飞星火&#xff0c;无一不彰显着智能科技的无限潜力。而在这股浪潮中&#xff0c;我们欣喜地发现&#xff0c;一些创新的浏览器插件正悄然兴起&a…...

MySQL数据库连接超时问题排查报告

1、问题描述 边端设备访问云端过程中有概率出现MySQL数据库连接超时报错&#xff0c;具体报错代码如下&#xff1a; [2024-08-13 13:47:44,036] ERROR in app: Exception on /est-tasks/start [POST] Traceback (most recent call last): File "/usr/local/lib/python3.1…...

代码随想录第三天 | 链表

文章目录 链表理论知识定义链表删除链表 Leetcode203 移除链表元素代码实现 Leetcode707 设计链表代码实现复杂度分析错误点 Leetcode206 反转链表新建链表双指针法 链表理论知识 链接: https://programmercarl.com/%E9%93%BE%E8%A1%A8%E7%90%86%E8%AE%BA%E5%9F%BA%E7%A1%80.h…...

C++:std::is_convertible

C++标志库中提供is_convertible,可以测试一种类型是否可以转换为另一只类型: template <class From, class To> struct is_convertible; 使用举例: #include <iostream> #include <string>using namespace std;struct A { }; struct B : A { };int main…...

如何在看板中有效管理突发紧急任务

在看板中有效管理突发紧急任务需要&#xff1a;设立专门的紧急任务通道、重新调整任务优先级、保持适度的WIP&#xff08;Work-in-Progress&#xff09;弹性、优化任务处理流程、提高团队应对突发情况的敏捷性。其中&#xff0c;设立专门的紧急任务通道尤为重要&#xff0c;这能…...

视频字幕质量评估的大规模细粒度基准

大家读完觉得有帮助记得关注和点赞&#xff01;&#xff01;&#xff01; 摘要 视频字幕在文本到视频生成任务中起着至关重要的作用&#xff0c;因为它们的质量直接影响所生成视频的语义连贯性和视觉保真度。尽管大型视觉-语言模型&#xff08;VLMs&#xff09;在字幕生成方面…...

USB Over IP专用硬件的5个特点

USB over IP技术通过将USB协议数据封装在标准TCP/IP网络数据包中&#xff0c;从根本上改变了USB连接。这允许客户端通过局域网或广域网远程访问和控制物理连接到服务器的USB设备&#xff08;如专用硬件设备&#xff09;&#xff0c;从而消除了直接物理连接的需要。USB over IP的…...

C++课设:简易日历程序(支持传统节假日 + 二十四节气 + 个人纪念日管理)

名人说:路漫漫其修远兮,吾将上下而求索。—— 屈原《离骚》 创作者:Code_流苏(CSDN)(一个喜欢古诗词和编程的Coder😊) 专栏介绍:《编程项目实战》 目录 一、为什么要开发一个日历程序?1. 深入理解时间算法2. 练习面向对象设计3. 学习数据结构应用二、核心算法深度解析…...

【 java 虚拟机知识 第一篇 】

目录 1.内存模型 1.1.JVM内存模型的介绍 1.2.堆和栈的区别 1.3.栈的存储细节 1.4.堆的部分 1.5.程序计数器的作用 1.6.方法区的内容 1.7.字符串池 1.8.引用类型 1.9.内存泄漏与内存溢出 1.10.会出现内存溢出的结构 1.内存模型 1.1.JVM内存模型的介绍 内存模型主要分…...

uniapp 实现腾讯云IM群文件上传下载功能

UniApp 集成腾讯云IM实现群文件上传下载功能全攻略 一、功能背景与技术选型 在团队协作场景中&#xff0c;群文件共享是核心需求之一。本文将介绍如何基于腾讯云IMCOS&#xff0c;在uniapp中实现&#xff1a; 群内文件上传/下载文件元数据管理下载进度追踪跨平台文件预览 二…...

软件工程 期末复习

瀑布模型&#xff1a;计划 螺旋模型&#xff1a;风险低 原型模型: 用户反馈 喷泉模型:代码复用 高内聚 低耦合&#xff1a;模块内部功能紧密 模块之间依赖程度小 高内聚&#xff1a;指的是一个模块内部的功能应该紧密相关。换句话说&#xff0c;一个模块应当只实现单一的功能…...

人工智能 - 在Dify、Coze、n8n、FastGPT和RAGFlow之间做出技术选型

在Dify、Coze、n8n、FastGPT和RAGFlow之间做出技术选型。这些平台各有侧重&#xff0c;适用场景差异显著。下面我将从核心功能定位、典型应用场景、真实体验痛点、选型决策关键点进行拆解&#xff0c;并提供具体场景下的推荐方案。 一、核心功能定位速览 平台核心定位技术栈亮…...

深入浅出WebGL:在浏览器中解锁3D世界的魔法钥匙

WebGL&#xff1a;在浏览器中解锁3D世界的魔法钥匙 引言&#xff1a;网页的边界正在消失 在数字化浪潮的推动下&#xff0c;网页早已不再是静态信息的展示窗口。如今&#xff0c;我们可以在浏览器中体验逼真的3D游戏、交互式数据可视化、虚拟实验室&#xff0c;甚至沉浸式的V…...