Ceph手动部署(开发版本)

news2024/12/23 6:13:33

  • 手动部署
    • 监视器引导
    • 管理器守护程序配置
    • 添加 OSD
      • 简写形式
      • 长格式
    • 添加 MDS
    • 总结
  • 在 FreeBSD 上手动部署
    • FreeBSD 上的 Disklayout
      • 配置
    • 监视器引导
    • 添加 OSD
      • 长格式
    • 添加 MDS
    • 总结

手动部署

所有 Ceph 集群至少需要一个显示器,并且至少需要与 存储在群集上的对象的副本。引导初始监视器 是部署 Ceph 存储集群的第一步。同时监视部署 为整个群集设置重要条件,例如副本数 对于存储池,每个 OSD 的归置组数量、检测信号间隔、 是否需要身份验证等。这些值中的大多数由 默认,因此在设置 集群 生产。

我们将设置一个集群,其中作为监控节点,以及 OSD 节点。mon-node1osd-node1osd-node2

监视器引导

引导监视器(理论上是 Ceph 存储集群)需要 一些事情:

  • 唯一标识符:是群集的唯一标识符, 代表 Ceph 存储集群时代的文件系统 ID 主要用于 Ceph 文件系统。Ceph 现在支持本机接口, 块设备和对象存储网关接口也是如此,也是如此 有点用词不当。fsidfsid

  • 集群名称:Ceph 集群具有集群名称,这是一个简单的字符串 没有空格。默认群集名称为 ,但您可以指定 不同的群集名称。覆盖默认群集名称是 当您使用多个集群并且需要 清楚地了解您正在使用哪个集群。ceph

    例如,当您在多站点配置中运行多个集群时, 集群名称(例如,、)标识集群 当前 CLI 会话。注意:要在 命令行界面,使用 集群名称(例如、、、等)。 另请参阅 CLI 用法 ()。us-westus-eastceph.confus-west.confus-east.confceph --cluster {cluster-name}

  • 显示器名称:集群中的每个监控实例都有一个唯一的名称。 在通常的做法中,Ceph Monitor 名称是主机名(我们建议使用一个 每个主机的 Ceph 监视器,并且不会将 Ceph OSD 守护程序与 Ceph Monitors)。您可以使用 检索短主机名。hostname -s

  • 监控地图:引导初始监视器需要您 生成监控图。监控映射需要 、 群集 名称(或使用默认值),以及至少一个主机名及其 IP 地址。fsid

  • 监视器密钥环:监视器通过 密钥。您必须使用监视器密钥生成密钥环并提供 它在引导初始监视器时。

  • 管理员密钥环:要使用 CLI 工具,您必须具有 一个用户。因此,您必须生成管理员用户和密钥环, 并且您还必须将用户添加到监视器密钥环。cephclient.adminclient.admin

上述要求并不意味着创建 Ceph 配置 文件。但是,作为最佳实践,我们建议创建 Ceph 配置 文件,并用 、 和 设置填充它。fsidmon initial membersmon host

您也可以在运行时获取和设置所有监视器设置。然而 Ceph 配置文件可能仅包含那些覆盖 默认值。当您将设置添加到 Ceph 配置文件时,这些 设置将覆盖默认设置。在 借助 Ceph 配置文件,可以更轻松地维护集群。

程序如下:

  1. 登录到初始监控节点:

    ssh {hostname}
    

    例如:

    ssh mon-node1
    
  2. 确保您有 Ceph 配置文件的目录。默认情况下, Ceph 使用 .安装 时,安装程序将 自动创建目录。/etc/cephceph/etc/ceph

    ls /etc/ceph
    
  3. 创建 Ceph 配置文件。默认情况下,Ceph 使用 ,其中反映集群名称。添加一行 在配置文件中包含“[全局]”。ceph.confceph

    sudo vim /etc/ceph/ceph.conf
    
  4. 为集群生成唯一 ID(即 )。fsid

    uuidgen
    
  5. 将唯一 ID 添加到 Ceph 配置文件。

    fsid = {UUID}
    

    例如:

    fsid = a7f64266-0894-4f1e-a635-d0aeaca0e993
    
  6. 将初始监视器添加到 Ceph 配置文件。

    mon_initial_members = {hostname}[,{hostname}]
    

    例如:

    mon_initial_members = mon-node1
    
  7. 将初始监控器的 IP 地址添加到 Ceph 配置 文件并保存文件。

    mon_host = {ip-address}[,{ip-address}]
    

    例如:

    mon_host = 192.168.0.1
    

    注意:您可以使用 IPv6 地址而不是 IPv4 地址,但 必须设置为 。请参阅网络配置 有关网络配置的详细信息,请参阅。ms_bind_ipv6true

  8. 为群集创建密钥环并生成监视器密钥。

    sudo ceph-authtool --create-keyring /tmp/ceph.mon.keyring --gen-key -n mon. --cap mon 'allow *'
    
  9. 生成管理员密钥环,生成用户并添加 密钥环的用户。client.admin

    sudo ceph-authtool --create-keyring /etc/ceph/ceph.client.admin.keyring --gen-key -n client.admin --cap mon 'allow *' --cap osd 'allow *' --cap mds 'allow *' --cap mgr 'allow *'
    
  10. 生成引导 osd 密钥环,生成用户并添加 密钥环的用户。client.bootstrap-osd

    sudo ceph-authtool --create-keyring /var/lib/ceph/bootstrap-osd/ceph.keyring --gen-key -n client.bootstrap-osd --cap mon 'profile bootstrap-osd' --cap mgr 'allow r'
    
  11. 将生成的密钥添加到 .ceph.mon.keyring

    sudo ceph-authtool /tmp/ceph.mon.keyring --import-keyring /etc/ceph/ceph.client.admin.keyring
    sudo ceph-authtool /tmp/ceph.mon.keyring --import-keyring /var/lib/ceph/bootstrap-osd/ceph.keyring
    
  12. 更改 的所有者。ceph.mon.keyring

    sudo chown ceph:ceph /tmp/ceph.mon.keyring
    
  13. 使用主机名、主机 IP 地址和 FSID 生成监控映射。 另存为 :/tmp/monmap

    monmaptool --create --add {hostname} {ip-address} --fsid {uuid} /tmp/monmap
    

    例如:

    monmaptool --create --add mon-node1 192.168.0.1 --fsid a7f64266-0894-4f1e-a635-d0aeaca0e993 /tmp/monmap
    
  14. 在监视器主机上创建一个或多个默认数据目录。

    sudo mkdir /var/lib/ceph/mon/{cluster-name}-{hostname}
    

    例如:

    sudo -u ceph mkdir /var/lib/ceph/mon/ceph-mon-node1
    

    See Monitor Config Reference - Data for details.

  15. Populate the monitor daemon(s) with the monitor map and keyring.

    sudo -u ceph ceph-mon [--cluster {cluster-name}] --mkfs -i {hostname} --monmap /tmp/monmap --keyring /tmp/ceph.mon.keyring
    

    For example:

    sudo -u ceph ceph-mon --mkfs -i mon-node1 --monmap /tmp/monmap --keyring /tmp/ceph.mon.keyring
    
  16. 请考虑 Ceph 配置文件的设置。常见设置包括 以下内容:

    [global]
    fsid = {cluster-id}
    mon_initial_members = {hostname}[, {hostname}]
    mon_host = {ip-address}[, {ip-address}]
    public_network = {network}[, {network}]
    cluster_network = {network}[, {network}]
    auth_cluster required = cephx
    auth_service required = cephx
    auth_client required = cephx
    osd_pool_default_size = {n}  # Write an object n times.
    osd_pool_default_min_size = {n} # Allow writing n copies in a degraded state.
    osd_pool_default_pg_num = {n}
    osd_crush_chooseleaf_type = {n}
    

    在前面的示例中,配置部分可能 看起来像这样:[global]

    [global]
    fsid = a7f64266-0894-4f1e-a635-d0aeaca0e993
    mon_initial_members = mon-node1
    mon_host = 192.168.0.1
    public_network = 192.168.0.0/24
    auth_cluster_required = cephx
    auth_service_required = cephx
    auth_client_required = cephx
    osd_pool_default_size = 3
    osd_pool_default_min_size = 2
    osd_pool_default_pg_num = 333
    osd_crush_chooseleaf_type = 1
    
  17. 启动显示器。

    使用 systemd 启动服务:

    sudo systemctl start ceph-mon@mon-node1
    
  18. 确保为 ceph-mon 打开防火墙端口。

    使用防火墙打开端口:

    sudo firewall-cmd --zone=public --add-service=ceph-mon
    sudo firewall-cmd --zone=public --add-service=ceph-mon --permanent
    
  19. 验证监视器是否正在运行。

    sudo ceph -s
    

    您应该看到您启动的监视器已启动并正在运行的输出,并且 您应该会看到运行状况错误,指示归置组已停滞 无效。它应该看起来像这样:

    cluster:
      id:     a7f64266-0894-4f1e-a635-d0aeaca0e993
      health: HEALTH_OK
    
    services:
      mon: 1 daemons, quorum mon-node1
      mgr: mon-node1(active)
      osd: 0 osds: 0 up, 0 in
    
    data:
      pools:   0 pools, 0 pgs
      objects: 0 objects, 0 bytes
      usage:   0 kB used, 0 kB / 0 kB avail
      pgs:
    

    注意:添加并启动 OSD 后,归置组运行状况错误 应该消失。有关详细信息,请参阅添加 OSD。

管理器守护程序配置

在运行 ceph-mon 守护进程的每个节点上,您还应该设置 ceph-mgr 守护进程。

请参阅 ceph-mgr 管理员指南

添加 OSD

运行初始监视器后,应添加 OSD。您的集群 在有足够的 OSD 来处理 对象的副本数(例如,需要 至少两个 OSD)。引导监视器后,群集具有默认值 粉碎地图;但是,CRUSH 映射没有任何映射到的 Ceph OSD 守护进程 一个 Ceph 节点。active + cleanosd_pool_default_size = 2

简写形式

Ceph 提供了实用程序,可以准备逻辑卷、磁盘或分区 用于 Ceph。该实用程序通过以下方式创建 OSD ID 递增索引。此外,会将新的 OSD 添加到 粉碎主机下的地图为您。执行 CLI 详细信息。 该实用程序自动执行下面的长窗体步骤。自 使用简写过程创建前两个 OSD,为每个 OSD 执行以下操作:ceph-volumeceph-volumeceph-volumeceph-volume -hceph-volume

  1. 创建 OSD。

    copy /var/lib/ceph/bootstrap-osd/ceph.keyring from monitor node (mon-node1) to /var/lib/ceph/bootstrap-osd/ceph.keyring on osd node (osd-node1)
    ssh {osd node}
    sudo ceph-volume lvm create --data {data-path}
    

    例如:

    scp -3 root@mon-node1:/var/lib/ceph/bootstrap-osd/ceph.keyring root@osd-node1:/var/lib/ceph/bootstrap-osd/ceph.keyring
    
    ssh osd-node1
    sudo ceph-volume lvm create --data /dev/hdd1
    

或者,创建过程可以分为两个阶段(准备和 激活):

  1. 准备 OSD。

    ssh {osd node}
    sudo ceph-volume lvm prepare --data {data-path} {data-path}
    

    例如:

    ssh osd-node1
    sudo ceph-volume lvm prepare --data /dev/hdd1
    

    准备好后,需要准备好的 OSD 的 和 激活。这些可以通过列出当前服务器中的 OSD 来获得:IDFSID

    sudo ceph-volume lvm list
    
  2. 激活 OSD:

    sudo ceph-volume lvm activate {ID} {FSID}
    

    例如:

    sudo ceph-volume lvm activate 0 a7f64266-0894-4f1e-a635-d0aeaca0e993
    

长格式

在没有任何帮助程序实用程序的情况下,创建一个 OSD 并将其添加到 使用以下过程进行集群和 CRUSH 映射。创建前两个 OSD 使用长格式过程,对每个 OSD 执行以下步骤。

注意

此过程不描述在 dm-crypt 之上的部署 利用DM地穴“密码箱”。

  1. 连接到 OSD 主机并成为根用户。

    ssh {node-name}
    sudo bash
    
  2. 为 OSD 生成 UUID。

    UUID=$(uuidgen)
    
  3. 为 OSD 生成 cephx 密钥。

    OSD_SECRET=$(ceph-authtool --gen-print-key)
    
  4. 创建 OSD。请注意,OSD ID 可以作为 如果需要重用 以前已销毁的 OSD ID。我们假设密钥存在于计算机上。你可以 或者,像在 存在该密钥的不同主机。ceph osd newclient.bootstrap-osdclient.admin

    ID=$(echo "{\"cephx_secret\": \"$OSD_SECRET\"}" | \
       ceph osd new $UUID -i - \
       -n client.bootstrap-osd -k /var/lib/ceph/bootstrap-osd/ceph.keyring)
    

    也可以在 JSON 中包含属性 设置初始类以外的默认值( 或基于 自动检测的设备类型)。crush_device_classssdhdd

  5. 在新 OSD 上创建默认目录。

    mkdir /var/lib/ceph/osd/ceph-$ID
    
  6. 如果 OSD 用于操作系统驱动器以外的驱动器,请准备它 与 Ceph 一起使用,并将其挂载到您刚刚创建的目录中。

    mkfs.xfs /dev/{DEV}
    mount /dev/{DEV} /var/lib/ceph/osd/ceph-$ID
    
  7. 将密钥写入 OSD 密钥环文件。

    ceph-authtool --create-keyring /var/lib/ceph/osd/ceph-$ID/keyring \
         --name osd.$ID --add-key $OSD_SECRET
    
  8. 初始化 OSD 数据目录。

    ceph-osd -i $ID --mkfs --osd-uuid $UUID
    
  9. 修复所有权。

    chown -R ceph:ceph /var/lib/ceph/osd/ceph-$ID
    
  10. 将 OSD 添加到 Ceph 后,该 OSD 将位于您的配置中。然而 它尚未运行。你必须开始 您的新 OSD 才能开始接收数据。

    对于现代 systemd 发行版:

    systemctl enable ceph-osd@$ID
    systemctl start ceph-osd@$ID
    

    例如:

    systemctl enable ceph-osd@12
    systemctl start ceph-osd@12
    

添加 MDS

在下面的说明中,是一个任意名称,例如计算机的主机名。{id}

  1. 创建 mds 数据目录:

    mkdir -p /var/lib/ceph/mds/{cluster-name}-{id}
    
  2. Create a keyring.:

    ceph-authtool --create-keyring /var/lib/ceph/mds/{cluster-name}-{id}/keyring --gen-key -n mds.{id}
    
  3. Import the keyring and set caps.:

    ceph auth add mds.{id} osd "allow rwx" mds "allow *" mon "allow profile mds" -i /var/lib/ceph/mds/{cluster}-{id}/keyring
    
  4. Add to ceph.conf.:

    [mds.{id}]
    host = {id}
    
  5. Start the daemon the manual way.:

    ceph-mds --cluster {cluster-name} -i {id} -m {mon-hostname}:{mon-port} [-f]
    
  6. Start the daemon the right way (using ceph.conf entry).:

    service ceph start
    
  7. If starting the daemon fails with this error:

    mds.-1.0 ERROR: failed to authenticate: (22) Invalid argument
    

    Then make sure you do not have a keyring set in ceph.conf in the global section; move it to the client section; or add a keyring setting specific to this mds daemon. And verify that you see the same key in the mds data directory and output.ceph auth get mds.{id}

  8. Now you are ready to create a Ceph file system.

总结

启动并运行显示器和两个 OSD 后,您可以观看 归置组通过执行以下命令对等:

ceph -w

要查看树,请执行以下命令:

ceph osd tree

您应该看到如下所示的输出:

# id    weight  type name       up/down reweight
-1      2       root default
-2      2               host osd-node1
0       1                       osd.0   up      1
-3      1               host osd-node2
1       1                       osd.1   up      1

若要添加(或删除)其他监视器,请参阅添加/删除监视器。 要添加(或删除)其他 Ceph OSD 守护进程,请参阅添加/删除 OSD。

手动部署 — Ceph 文档

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

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

相关文章

Hacked某安汽车车机系统

很久之前尝试对某安汽车的车机系统进行渗透测试,但是却卡在入口无法进入,尝试暴力破解但是字典不够强大,没能成功。前段时间看到了绿盟科技博客的《新型车机,如何攻防?》感觉有点熟悉,再次探索发现可以获得…

京东商品评论数据爬虫,包含对数据的采集、清洗、可视化、分析等过程,作为数据库课程。

感谢大家的star和fork,为了感谢大家的关注,特意对代码进行了优化,对最新的url格式进行了更新,减少了一些冗余的参数,希望能够帮助大家入门爬虫,已经爬好的京东的商品评论数据已经存储在data目录下&#xff…

软件测试标准GB/T 25000.51-2016中的八大软件质量特性

GB/T25000标准由下图所示的21个部分组成,其中GB/T 25000.10和GB/T 25000.51是建立软件测试技术体系可以参考的部分,GB/T 25000.51尤为重要。 GB/T 25000标准总标题(21个部分) GB/T 25000.51标准pdf封面 GB/T 25000.51-2016 《系统…

现在有t1,t2,t3三个线程,实现t1,t2线程同步执行,然后再执行t3线程,使用Java实现该程序

目录 1、利用CountDownLatch 2、利用Future 最近在面试的时候,经常遇到这个题目,首先从题目上看,就知道考察的是多线程方面知识,我第一次看到这个题目的时候,就想到了使用CountDownLatch这个计数器来实现&#xff0c…

AUTOSAR网络管理

功能说明 目前车辆上ECU的数目越来越多,不同功能的ECU对电源有不同的要求,在点火钥匙打到OFF档(KL15停止供电)之后,有的ECU(如座椅模块)允许直接断电,有的ECU(如空调模块…

浅谈操作系统OS与计算机软硬件体系结构,自顶贯穿性与行为回归硬件性

操作系统OS与计算机软硬件体系结构 使计算机更好用! 这是操作系统的根本要义!! 操作系统这个概念基本上以后会讲一路的,今天的话就基本上讲一下轻量化的概念。所以操作系统到底是什么?操作系统首先是软件,那它是一款什么软件呢&#xff1f…

Java读取文件方式

IO流读取 文本内容 按行读取文件内容 指定编码格式(推荐) public static void main(String[] args) throws UnsupportedEncodingException {read("D:\\test.txt");}public static void read(String path) {BufferedReader reader null;try …

Spring Security 01 整体架构

目录 认证 AuthenticationManager ProviderManager AuthenticationProvider Authentication SecurityContextHolder 授权 AccessDecisionManager AccessDecisionVoter RoleVoter AuthenticatedVoter Custom Voters ConfigAttribute 在SpringSecurity的架构中&…

Linux如何使用宝塔面板搭建网站和内网穿透实现公网访问

文章目录 前言1. 环境安装2. 安装cpolar内网穿透3. 内网穿透4. 固定http地址5. 配置二级子域名6. 创建一个测试页面 转载自远程内网穿透的文章:Linux使用宝塔面板搭建网站,并内网穿透实现公网访问 前言 宝塔面板作为简单好用的服务器运维管理面板&#…

Flink从入门到精通之-06Flink 中的时间和窗口

Flink从入门到精通之-06Flink 中的时间和窗口 我们已经了解了基本 API 的用法,熟悉了 DataStream 进行简单转换、聚合的一些操作。除此之外,Flink 还提供了丰富的转换算子,可以用于更加复杂的处理场景。 在流数据处理应用中,一个…

NM储存卡数据丢失怎么办?四招数据恢复宝典

NM卡像其他类型的存储设备一样,也有可能因为各种原因导致数据丢失,比如误删除、格式化、病毒感染等。因此,在使用NM卡时,仍需注意数据备份和安全性,以避免面临重要数据丢失风险。如果不幸发生了数据丢失,应…

python中unexpected indent报错的解决办法

python中unexpected indent报错的解决办法 在我们初步学习pyton的时候,由于对python语言的学习掌握不充分,则会导致所编写的代码,运行时候报错。比如,容易报错的unexpected indent问题,下面举例说明问题。 1.举例&am…

Linux虚拟机中安装jdk的两种方法:

方法一:手动安装 1. 使用FinalShell自带的上传工具将jdk的二进制发布包上传到Linux 上传位置如图(底栏可以在图中的向下箭头位置自行打开与关闭): 注:默认上传地址为图片左侧的工作地址 2. 解压安装包,…

在vue2中用vue-echarts和v-charts绘制百度地图定制散点图

一、在vue-echarts中定制百度地图 效果 准备 安装依赖 echarts vue-echarts npm i echarts vue-echarts 在main.js中引入 import ECharts from “echarts” import VueECharts from “vue-echarts” Vue.prototype.$echarts ECharts Vue.component(“v-chart”, VueECharts…

SAS学习第4章:t检验

前话:分析试验数据的差异,一般都会假设样本值之间或者样本与标准值之间无差异,根据不同方法计算得出的t值、q值、F值等等,均表示两者之间的差异程度,值越大,两者差异越大,该假设越不成立&#x…

全网最全的AI绘画提示词网站,看这一篇就够了!

要说2023年什么最火,绝对是以ChatGPT为代表的AI工具了,特别是AI绘画,而用好AI的关键,就是要学会使用关键词,也叫提示词,提示词是AI绘画的核心,本次就给大家分享几个AI绘画关键词网站&#xff0c…

大型Android项目架构:基于组件化+模块化+Kotlin+协程+Flow+Retrofit+Jetpack+MVVM架构实现WanAndroid客户端

前言:苟有恒,何必三更眠五更起;最无益,莫过一日曝十日寒。 前言 之前一直想写个 WanAndroid 项目来巩固自己对 KotlinJetpack协程 等知识的学习,但是一直没有时间。这里重新行动起来,从项目搭建到完成前前…

奇异值分解SVD

概念 奇异值分解(singular value decomposition)是线性代数中一种重要的矩阵分解。奇异值分解在某些方面与对称矩阵或厄密矩阵基于特征向量的对角化类似。然而这两种矩阵分解尽管有其相关性,但还是有明显的不同。对称矩阵特征向量分解的基础…

数据分析师 ---- SQL强化(1)

文章目录 数据分析师 ---- SQL强化(1)写在前面题目第一步:表连接以及表拼接第二步:新建列以及填充值总结 数据分析师 ---- SQL强化(1) 写在前面 最近在找工作中发现,数据分析师的笔试多数会涉及SQL,但是笔试中SQL的难度和我们在学…

车载软件架构——闲聊几句AUTOSAR BSW(一)

我是穿拖鞋的汉子,魔都中坚持长期主义的工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 人生是用来体验的,不是用来演绎完美的。我慢慢能接受自己身上那些灰暗的部分,原谅自己的迟钝和平庸,允许自己出错,允许自己偶尔断电,带着缺憾拼命绽放,…