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

使用cephadm离线部署reef 18版并配置对接openstack

curl --silent --remote-name --location https://download.ceph.com/rpm-squid/el9/noarch/cephadm
chmod +x cephadm./cephadm add-repo --release reef

监视节点

离线下载

apt-get --download-only install ceph ceph-mon ceph-mgr ceph-commonmkdir /reef/mon
mv /var/cache/apt/archives/*.deb /reef/mon/
dpkg -i /reef/mon/*.deb

在一个mon节点操作

# 生成ssh密钥并拷贝
ssh-keygen -t ed25519ssh-copy-id root@mon1
ssh-copy-id root@mon2
ssh-copy-id root@mon3
ssh-copy-id root@stor1
ssh-copy-id root@stor2
ssh-copy-id root@stor3# 测试
ssh stor1
# bootstrapc初始化:在mon1上完成mon、mgr、dashboard部署,并生成ceph.conf、keyring等
cephadm bootstrap --mon-ip <ip1> --cluster-network <cluster_cidr> --public-network <public_cidr> --initial-dashboard-user admin --initial-dashboard-password 'Os#123'
  • 将配置文件:/etc/ceph/ceph.conf,admin密钥环:client.admin.keyring,拷贝到其他mon节点
# 进入cephadm shell环境
cephadm shell
# 节点加入集群
ceph orch host add mon2 ip2
ceph orch host add mon3 ip3
# 分配为角色
ceph orch daemon add mon mon2
ceph orch daemon add mon mon3ceph orch daemon add mgr mon1
ceph orch daemon add mgr mon2
ceph orch daemon add mgr mon3# 验证:
ceph -s
# monmap中3个节点都已加入,状态为quorumceph mgr stat
# 1 mgr: mon1(active), standbys: mon2, mon3
# 启用dashboard
ceph mgr module enable dashboard
# 如果没有自动生成自签名证书,则:ceph dashboard create-self-signed-cert# 查看Dashboard的端口、地址
ceph config get mgr mgr/dashboard/server_addr
ceph config get mgr mgr/dashboard/server_port

存储节点

离线下载

apt-get --download-only install ceph ceph-osd ceph-common lvm2mkdir /reef/stor
mv /var/cache/apt/archives/*.deb /reef/stor/
dpkg -i /reef/stor/*.deb

在一个mon节点操作

  • 将配置文件:/etc/ceph/ceph.conf,拷贝到osd节点
# 添加stor节点,举例
ceph orch host add stor1 ip11
ceph orch host add stor2 ip12# 举例osd1的数据盘/dev/sdb,ceph orch daemon add osd stor1:/dev/sdb
# 自动发现盘
ceph orch daemon add osd --all-available-devices --hosts stor1
ceph orch daemon add osd --all-available-devices --hosts stor2# 验证:osd为up、in状态
ceph -s
ceph osd tree
ceph osd df

整体方案

  • stor节点的nvme ssd作wal写缓冲、db元数据,sata hdd作容量盘
  • 采用bluestore存储引擎,自动创建crush rule

在这里插入图片描述

# lv_capacity = nvme_total / num_of_hdd
pvcreate /dev/nvme0n1
vgcreate nvme-vg /dev/nvme0n1lvcreate -L <lv_capacity> -n waldb1 nvme-vg
lvcreate -L <lv_capacity> -n waldb2 nvme-vg
lvcreate -L <lv_capacity> -n waldb3 nvme-vg
lvcreate -L <lv_capacity> -n waldb4 nvme-vg# 逐一绑定
ceph-volume lvm create --data /dev/sdb --block.db /dev/nvme-vg/waldb1
ceph-volume lvm create --data /dev/sdc --block.db /dev/nvme-vg/waldb2
ceph-volume lvm create --data /dev/sdd --block.db /dev/nvme-vg/waldb3
ceph-volume lvm create --data /dev/sdd --block.db /dev/nvme-vg/waldb4

划分池

在这里插入图片描述

# pg_num = osd_total * 100 / 副本数
# pg_num:一个pool中的放置组数量
# pgp_num:对象写入时参与哈希的放置组数量
ceph osd pool create volumes <pg_num> <pgp_num> replicated
ceph osd pool create images <pg_num> <pgp_num> replicated
ceph osd pool create vms <pg_num> <pgp_num> replicated# pool属性
ceph osd pool application enable volumes rbd
ceph osd pool application enable images rbd
ceph osd pool application enable vms rbd# 副本数
ceph osd pool set volumes size 3
ceph osd pool set images size 3
ceph osd pool set vms size 3

划分用户

# admin:集群初始化时自动生成的超级管理员,拥有对整个Ceph集群的完全管理权限(一般只分发到运维节点,不给OpenStack服务用)
# glance:只授予images池的读写权限
# nova:只授予vms池的读写权限
# cinder:只授予volumes池的读写权限
ceph auth get-or-create client.glance mon 'allow r' osd 'allow rwx pool=images'
ceph auth get-or-create client.nova mon 'allow r' osd 'allow rwx pool=vms'
ceph auth get-or-create client.cinder mon 'allow r' osd 'allow rwx pool=volumes'# 获取密钥环
ceph auth get client.glance -o /etc/ceph/ceph.client.glance.keyring
ceph auth get client.nova -o /etc/ceph/ceph.client.nova.keyring
ceph auth get client.cinder -o /etc/ceph/ceph.client.cinder.keyring# 查看用户及密钥环
ceph auth list
ceph auth get-key client.<user>

crushmap介绍

  • crush算法通过计算位置来确定数据的存储、检索,授权客户端直接连接osd
  • 对象通过算法被切分成数据片,分布在不同的osd上
  • 提供很多种的bucket,最小的节点是osd
  • 结构如下:
osd (or device)
# 主机
host
# 机箱
chassis
# 机柜
rack
row
pdu
pod
# 机房
room
# 数据中心
datacenter
# 地区
zone
# 地域
region
# 最高:根
root

举例

在这里插入图片描述

# 创建根桶
ceph osd crush add-bucket ssd-b root# 创建主机桶
ceph osd crush add-bucket n1-ssd-b host
ceph osd crush add-bucket n2-ssd-b host# 主机桶添加到根桶
ceph osd crush move n1-ssd-b root=ssd-b
ceph osd crush move n2-ssd-b root=ssd-b# osd添加到主机桶
ceph osd crush move osd.3 host=n1-ssd-b root=ssd-b
ceph osd crush move osd.4 host=n2-ssd-b root=ssd-b# 创建规则:<rule-name> <root> <failure-domain>
# failure-domain:副本分布时的最小容错单元
ceph osd crush rule create-replicated rule1 ssd-b host# 关联pool和rule
ceph osd pool set pool1 crush_rule rule1
# 规则名称、rootbucket名称、容灾机制(默认default)、host类型、磁盘类型
ceph osd tree
ceph osd crush tree# 详细查看
ceph osd crush dump# 查看规则
ceph osd crush rule ls
http://www.lryc.cn/news/2400987.html

相关文章:

  • Redis最佳实践——性能优化技巧之缓存预热与淘汰策略
  • 2024年数维杯国际大学生数学建模挑战赛D题城市弹性与可持续发展能力评价解题全过程论文及程序
  • 3D Gaussian splatting 06: 代码阅读-训练参数
  • QT聊天项目DAY13
  • Web3如何重塑数据隐私的未来
  • 【鸿蒙】HarmonyOS NEXT之如何正常加载地图组件
  • 前端框架进化史
  • “轻量应用服务器” vs. “云服务器CVM”:小白入门腾讯云,哪款“云机”更适合你?(场景、配置、价格对比解析)
  • day63—回溯—全排列(LeetCode-46)
  • (二)stm32使用4g模块(移远ec800k)连接mqtt
  • 防火墙iptables项目实战
  • webpack继续学习
  • Scrapy爬虫框架Spiders爬虫脚本使用技巧
  • PowerBI企业运营分析—全动态盈亏平衡分析
  • docker的基本命令
  • 【运维实战】Rsync将一台主Web服务器上的文件和目录同步到另一台备份服务器!
  • 实时通信RTC与传统直播的异同
  • Python-正则表达式(re 模块)
  • AgenticSeek 本地部署教程(Windows 系统)
  • 基于 qiankun + vite + vue3 构建微前端应用实践
  • VR教育:开启教育新时代的钥匙
  • 机器学习:逻辑回归与混淆矩阵
  • 20250602在荣品的PRO-RK3566开发板的Android13下打开HDMI显示
  • 【学习记录】快速上手 PyQt6:设置 Qt Designer、PyUIC 和 PyRCC 在 PyCharm中的应用
  • AI在网络安全领域的应用现状和实践
  • DrissionPage 异常处理实战指南:构建稳健的网页自动化防线
  • 鸿蒙任务项设置案例实战
  • TDengine 的 AI 应用实战——运维异常检测
  • DHCP与DNS的配置
  • 使用Plop.js高效生成模板文件