Cephadm部署新的Ceph集群

半兽人 发表于: 2023-02-08   最后更新时间: 2023-11-10 15:59:25  
{{totalSubscript}} 订阅, 469 游览

部署一个新的ceph集群

Cephadm 通过在单个主机上"引导"来创建新的Ceph群集,然后扩展该群集以包括任何其他主机,最后部署所需的服务。

要求

  • Python 3
  • Systemd
  • Podman 或 Docker
  • 时间同步(如 chrony 或 NTP)
  • 用于配置存储设备的 LVM2

大部分的 Linux 发行版都满足。下面的引导会自动安装依赖项。

安装CEPHADM

安装 cephadm 时有两个关键步骤:首先需要获取 cephadm 的初始副本,然后第二步是确保是最新的 cephadm,有两种方法获取初始cephadm

  1. 特定发行版的安装方法
  2. 基于 curl 的安装方法

重要事项
这些安装 cephadm 的方法是相互排斥的。请选择特定于发行版的方法或基于 curl 的方法。不要尝试在一个系统上同时使用这两种方法。

基于 curl 的安装

首先,确定您需要的 Ceph 版本。可以在版本页面查找最新的版本。例如,我们可能会查看该页面,发现 18.2.0 是最新的活动版本。

使用 curl 获取该版本的 cephadm 构建。

CEPH_RELEASE=18.2.0 # replace this with the active release
curl --silent --remote-name --location https://download.ceph.com/rpm-${CEPH_RELEASE}/el9/noarch/cephadm

确保 cephadm 文件是可执行的:

chmod +x cephadm

你可以在当前目录直接运行:

./cephadm <arguments...>

如果在运行 cephadm 时遇到错误,包括解释器错误信息,则可能是没有安装 Python 或 Python 的正确版本。cephadm 工具需要 Python 3.6 及以上版本。通过在命令前加上已安装的 Python 版本,您可以使用特定版本的 Python 手动运行 cephadm。例如

python3.8 ./cephadm <arguments...>

虽然单机版 cephadm 就足以启动群集,但在主机上安装 cephadm 命令还是很方便的。要安装提供 cephadm 命令的软件包,请运行以下命令:

./cephadm add-repo --release reef
./cephadm install

运行 which 命令,确认 cephadm 已在您的 PATH 中:

which cephadm

成功的 cephadm 命令将返回以下内容:

/usr/sbin/cephadm

创建一个新集群

安装前需知

创建新 Ceph 集群的第一步是在 Ceph 集群的第一台主机上运行 cephadm bootstrap 命令。 在 Ceph 集群的第一台主机上运行 cephadm bootstrap 命令的行为会创建 Ceph 集群的第一个监控守护进程,并且该监控守护进程需要一个 IP 地址。 你必须将 Ceph 集群第一台主机的 IP 地址传递给 ceph bootstrap 命令,因此您需要知道该主机的 IP 地址。

重要的:
必须安装并运行 ssh 才能使引导过程成功。

注意:
如果有多个网络和接口,请确保选择一个可供任何访问 Ceph 集群的主机访问的网络和接口。

运行引导命令

运行ceph bootstrap命令:

cephadm bootstrap --mon-ip *<mon-ip>*

该命令将:

  • 在本地主机上为新群集创建监控器和管理器守护进程。
  • 为 Ceph 集群生成新 SSH 密钥,并将其添加到根用户的/root/.ssh/authorized_keys 文件中。
  • 将公钥的副本写入/etc/ceph/ceph.pub
  • 将最小配置文件写入/etc/ceph/ceph.conf。需要此文件与新集群进行通信。
  • client.admin 管理(特权!)密钥的副本写入/etc/ceph/ceph.client.admin.keyring
  • _admin 标签添加到引导主机。 默认情况下,任何具有此标签的主机都将(也)获得 /etc/ceph/ceph.conf/etc/ceph/ceph.client.admin.keyring 的副本。

关于 cephadm BOOTSTRAP的更多信息

默认的引导行为对大多数用户都适用。但如果你想立即了解有关 cephadm 引导的更多信息,请阅读下面的列表。

此外,还可以运行 cephadm bootstrap -h 查看 cephadm 的所有可用选项。

  • 默认情况下,Ceph 守护进程会将日志输出发送到 stdout/stderr,然后由容器运行时(docker 或 podman)接收,并(在大多数系统上)发送到 journald。如果希望 Ceph 将传统日志文件写入 /var/log/ceph/$fsid,可在启动时使用 --log-to-file 选项。

  • 当(Ceph 集群外部)公共网络流量与(Ceph 集群内部)集群流量分开时,大型 Ceph 集群的性能会更好。集群内部流量用于处理 OSD 守护进程之间的复制、恢复和心跳。您可以通过向引导子命令提供 --cluster-network 选项来定义集群网络。该参数必须以 CIDR 符号定义子网(例如 10.90.90.0/24fe80::/64)。

  • cephadm bootstrap 会将访问新群集所需的文件写入 /etc/ceph。主机上安装的 Ceph 软件包(例如,允许访问 cephadm 命令行界面的软件包)可以通过这哥位置找到这些文件。

    使用 cephadm 部署的守护进程容器则完全不需要 /etc/ceph。使用 --output-dir *<directory>* 选项可将它们放到不同的目录(例如 .)中。这有助于避免与同一主机上的现有 Ceph 配置(cephadm 或其他)发生冲突。

  • 可以通过将任何初始 Ceph 配置选项放入标准 ini-style 配置文件并使用 --config *<config-file>*选项,将其传递给新集群。例如
    $ cat <<EOF > initial-ceph.conf
    [global]
    osd crush chooseleaf type = 0
    EOF
    $ ./cephadm bootstrap --config initial-ceph.conf ...
    
  • 通过 --ssh-user *<user>* 选项,可以选择 cephadm 使用哪个 SSH 用户连接主机。相关 SSH 密钥将添加到 /home/*<user>*/.ssh/authorized_keys 中。使用此选项指定的用户必须拥有无密码 sudo 访问权限。

  • 如果在需要登录的验证注册表上使用容器,可以添加参数:

    --registry-json <path to json file>
    

    包含登录信息的 JSON 文件内容示例:

    {"url":"REGISTRY_URL", "username":"REGISTRY_USERNAME", "password":"REGISTRY_PASSWORD"}
    

    Cephadm 将尝试登录到此注册表,以便它可以拉取你的容器,然后将登录信息存储在其配置数据库中。添加到集群的其他主机也将能够使用经过身份验证的注册表。

启动CEPH CLI

Cephadm 不需要在主机上安装任何 Ceph 软件包。不过,我们建议启用对 ceph 命令的轻松访问。有几种方法可以做到这一点:

  • cephadm shell 命令会在安装了所有 Ceph 软件包的容器中启动一个 bash shell。默认情况下,如果在主机上的 /etc/ceph 中找到配置和密钥文件,它们将被传递到容器环境中,这样 shell 就能完全正常运行。请注意,在 MON 主机上执行 cephadm shell 时,它将从 MON 容器中推断配置,而不是使用默认配置。如果给出 --mount <path>,那么主机 <path>(文件或目录)将显示在容器内 /mnt 下:

    cephadm shell
    
  • 要执行 ceph 命令,也可以运行类似命令:

    cephadm shell -- ceph -s
    
  • 可以安装 ceph-common 软件包,其中包含所有 ceph 命令,包括 ceph、rbd、mount.ceph(用于挂载 CephFS 文件系统)等:

    cephadm add-repo --release reef
    cephadm install ceph-common
    

确认可以使用 ceph 命令:

ceph -v

确认 ceph 命令可以连接到集群及其状态:

ceph status

添加主机

按照添加主机中的说明将所有主机添加到集群。

默认情况下,所有带有 _admin 标签的主机上都会在 /etc/ceph 中维护 ceph.conf 文件和 client.admin 密钥的副本。该标签最初只应用于引导主机。我们通常建议给其他一台或多台主机贴上 _admin 标签,以便在多台主机上轻松访问 Ceph CLI(例如,通过 cephadm shell)。要在其他主机上添加 _admin 标签,请运行以下命令:

ceph orch host label add *<host>* _admin

添加更多的 MON

典型的 Ceph 集群有三个或五个监控守护进程,分布在不同的主机上。如果集群中有五个或更多节点,我们建议部署五个监控器。

请按照部署更多的监控的步骤部署其他监控程序。

添加存储

要向集群添加存储,可以让 Ceph 使用任何可用和未使用的设备:

ceph orch apply osd --all-available-devices

有关更详细的说明,请参阅部署 OSD

启用 OSD 内存自动调整

默认情况下,cephadm 会在启动时启用 osd_memory_target_autotune,并将 mgr/cephadm/autotune_memory_target_ratio 设置为主机内存总量的 .7

请参阅自动调整 OSD 内存

要使用 TripleO 部署超融合 Ceph,请参阅 TripleO 文档: 场景: 部署超融合 Ceph

在集群硬件不完全由 Ceph 使用(超融合)的其他情况下,请按以下方式减少 Ceph 的内存消耗:

# 仅超融合:
ceph config set mgr mgr/cephadm/autotune_memory_target_ratio 0.2

然后启用内存自动调整:

ceph config set osd osd_memory_target_autotune true

REF

https://docs.ceph.com/en/latest/cephadm/install/

https://docs.ceph.com/en/latest/install/#other-methods

https://docs.ceph.com/en/latest/install/

https://docs.openstack.org/python-openstackclient/3.2.1/man/openstack.html

https://mp.weixin.qq.com/s?__biz=MzIyMDY2MTE3Mw==&mid=2247486480&idx=1&sn=2acfacadfe42a61483848598e8a5a5c5&chksm=97c9d8caa0be51dc3249d0846a9915263ab6be47e1f0cc5f1637f4cb229af65d43bcb15866c1&scene=21#wechat_redirect

更新于 2023-11-10

查看Cephadm更多相关的文章或提一个关于Cephadm的问题,也可以与我们一起分享文章