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

位图与布隆过滤器 —— 海量数据处理
🌈 个人主页:Zfox_ 🔥 系列专栏:C从入门到精通 目录 🚀 位图 一: 🔥 位图概念 二: 🔥 位图的实现思路及代码实现三: 🔥 位图的应用四:…...

二:《Python基础语法汇总》— 条件判断与循环结构
一:条件判断 1.程序执行的三大流程: 顺序流程:无缩进代码,从上往下依次执行 分支流程:选择性执行某块代码,或跳过某行代码去执行,与缩进(TAB)有关 循环流程&…...

【威锋网-注册安全分析报告-无验证方式导致安全隐患】
前言 由于网站注册入口容易被黑客攻击,存在如下安全问题: 1. 暴力破解密码,造成用户信息泄露 2. 短信盗刷的安全问题,影响业务及导致用户投诉 3. 带来经济损失,尤其是后付费客户,风险巨大,造…...

01_React简介、基础入门
React 简介、基础入门 一、React 简介1、是什么?2、谁开发的?3、为什么要学?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)元空间 …...

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

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

MySQL数据库连接超时问题排查报告
1、问题描述 边端设备访问云端过程中有概率出现MySQL数据库连接超时报错,具体报错代码如下: [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…...

Python编码系列—Python数据可视化:Matplotlib与Seaborn的实战应用
🌟🌟 欢迎来到我的技术小筑,一个专为技术探索者打造的交流空间。在这里,我们不仅分享代码的智慧,还探讨技术的深度与广度。无论您是资深开发者还是技术新手,这里都有一片属于您的天空。让我们在知识的海洋中…...

putty中修改默认窗口大小和字体、字号
在WinSCP中调用putty,发现默认窗口太小,字号也很小,非常不友好。现在显示器都是1080p起步,所以很有必要修改之。 以中文版v0.70为例,方法: 1. 点击左上角图标 ,选择下拉菜单中的“修改设置”&…...

Windows下网络编与ESP8266-WiFi通信(win32-API)
一、前言 络编程是指编写程序使不同计算机之间能够通过网络进行通信和数据交换。网络编程涉及使用网络协议和编程接口来建立、管理和终止网络上的数据通信。在这一领域中,TCP/IP协议族是核心组成部分,尤其TCP(传输控制协议)是面向…...

【Golang】golang安装一些依赖包时总是失败
Golang安装一些依赖包失败: 比如安装gin包:go get -u github.com/gin-gonic/gin 可能会报错:连接网络失败、超时等 这时可能需要修改go的环境配置,修改代理即可: go env -w GO111MO…...

ubuntu如何监控Xvfb虚拟显示器
在Ubuntu中监控Xvfb显示器主要涉及到使用VNC服务器来远程访问这个环境。以下是一些基本步骤: 安装Xvfb和相关工具: 使用apt安装Xvfb和x11vnc,x11vnc是一个VNC服务器,可以远程访问Xvfb创建的虚拟桌面环境。 sudo apt-get install xvfb sudo ap…...

小型需求管理软件盘点:8款功能强大的工具
本文介绍了以下8款工具:PingCode、Worktile、易得云、Ping、燃草、Gitee、Monday.com、Slack。 在现代企业管理中,需求管理一直是个让人头疼的问题,特别是对于小型企业来说,选择一款合适的需求管理软件往往比想象中更复杂。如果选…...

Labelme的安装与使用教程
文章目录 一、Labelme是什么?二、安装步骤1.新建虚拟环境2.安装Labelme3.Labelme的使用 三、json2yolo 一、Labelme是什么? Labelme是一个用于图像标注的开源工具,可以实现图像标注、语义分割、实例分割等。 本文记录一下labelme的安装与使…...

C#基础:数据库中使用Linq作分组处理(反射/直接分组)
目录 一、使用反射分组 二、不使用反射分组 三、调用示例 四、代码demo 一、使用反射分组 private static List<GroupList<T>> GetGroupList<T>(List<T> entities, string groupByProperty) {// 获取分组字段的类型var propertyInfo typeof(T).…...

Revite二次开发_使用WPF和WebView2制作一个访问网站的窗口
如果想在revit里打开网页,可以使用WebView2来实现,下面是一个代码示例。 也尝试过使用CefSharp,但由于Revit本身也使用了CefSharp,所以需要根据不同的Revit版本选择适合的CefSharp版本,比较麻烦,所以最好还…...

Java Spring Boot 连接数据库
要在Java Spring Boot应用程序中连接数据库,您需要遵循以下步骤: 1. 添加数据库依赖项:在您的Spring Boot项目中的pom.xml文件中添加数据库依赖项,例如MySQL或PostgreSQL等。例如,如果您要连接MySQL数据库,…...