部署一个新的ceph集群
Cephadm 通过在单个主机上"引导"来创建新的Ceph群集,然后扩展该群集以包括任何其他主机,最后部署所需的服务。
要求
- Python 3
- Systemd
- Podman 或 Docker
- 时间同步(如 chrony 或 NTP)
- 用于配置存储设备的 LVM2
大部分的 Linux 发行版都满足。下面的引导会自动安装依赖项。
安装CEPHADM
安装 cephadm 时有两个关键步骤:首先需要获取 cephadm 的初始副本
,然后第二步是确保是最新的 cephadm,有两种方法获取初始cephadm
:
- 特定发行版的安装方法
- 基于 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/24
或fe80::/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