Ceph手动部署(开发版本)

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

手动部署

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

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

Ceph手动部署(开发版本)_第1张图片

监视器引导

引导监视器(理论上是 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 文档

你可能感兴趣的:(Ceph入门到精通,ceph)