- 手动部署
- 监视器引导
- 管理器守护程序配置
- 添加 OSD
- 简写形式
- 长格式
- 添加 MDS
- 总结
- 在 FreeBSD 上手动部署
- FreeBSD 上的 Disklayout
- 配置
- 监视器引导
- 添加 OSD
- 长格式
- 添加 MDS
- 总结
- FreeBSD 上的 Disklayout
手动部署
所有 Ceph 集群至少需要一个显示器,并且至少需要与 存储在群集上的对象的副本。引导初始监视器 是部署 Ceph 存储集群的第一步。同时监视部署 为整个群集设置重要条件,例如副本数 对于存储池,每个 OSD 的归置组数量、检测信号间隔、 是否需要身份验证等。这些值中的大多数由 默认,因此在设置 集群 生产。
我们将设置一个集群,其中作为监控节点,以及 OSD 节点。mon-node1
osd-node1
osd-node2
监视器引导
引导监视器(理论上是 Ceph 存储集群)需要 一些事情:
-
唯一标识符:是群集的唯一标识符, 代表 Ceph 存储集群时代的文件系统 ID 主要用于 Ceph 文件系统。Ceph 现在支持本机接口, 块设备和对象存储网关接口也是如此,也是如此 有点用词不当。
fsid
fsid
-
集群名称:Ceph 集群具有集群名称,这是一个简单的字符串 没有空格。默认群集名称为 ,但您可以指定 不同的群集名称。覆盖默认群集名称是 当您使用多个集群并且需要 清楚地了解您正在使用哪个集群。
ceph
例如,当您在多站点配置中运行多个集群时, 集群名称(例如,、)标识集群 当前 CLI 会话。注意:要在 命令行界面,使用 集群名称(例如、、、等)。 另请参阅 CLI 用法 ()。
us-west
us-east
ceph.conf
us-west.conf
us-east.conf
ceph --cluster {cluster-name}
-
显示器名称:集群中的每个监控实例都有一个唯一的名称。 在通常的做法中,Ceph Monitor 名称是主机名(我们建议使用一个 每个主机的 Ceph 监视器,并且不会将 Ceph OSD 守护程序与 Ceph Monitors)。您可以使用 检索短主机名。
hostname -s
-
监控地图:引导初始监视器需要您 生成监控图。监控映射需要 、 群集 名称(或使用默认值),以及至少一个主机名及其 IP 地址。
fsid
-
监视器密钥环:监视器通过 密钥。您必须使用监视器密钥生成密钥环并提供 它在引导初始监视器时。
-
管理员密钥环:要使用 CLI 工具,您必须具有 一个用户。因此,您必须生成管理员用户和密钥环, 并且您还必须将用户添加到监视器密钥环。
ceph
client.admin
client.admin
上述要求并不意味着创建 Ceph 配置 文件。但是,作为最佳实践,我们建议创建 Ceph 配置 文件,并用 、 和 设置填充它。fsid
mon initial members
mon host
您也可以在运行时获取和设置所有监视器设置。然而 Ceph 配置文件可能仅包含那些覆盖 默认值。当您将设置添加到 Ceph 配置文件时,这些 设置将覆盖默认设置。在 借助 Ceph 配置文件,可以更轻松地维护集群。
程序如下:
-
登录到初始监控节点:
ssh {hostname}
例如:
ssh mon-node1
-
确保您有 Ceph 配置文件的目录。默认情况下, Ceph 使用 .安装 时,安装程序将 自动创建目录。
/etc/ceph
ceph
/etc/ceph
ls /etc/ceph
-
创建 Ceph 配置文件。默认情况下,Ceph 使用 ,其中反映集群名称。添加一行 在配置文件中包含“[全局]”。
ceph.conf
ceph
sudo vim /etc/ceph/ceph.conf
-
为集群生成唯一 ID(即 )。
fsid
uuidgen
-
将唯一 ID 添加到 Ceph 配置文件。
fsid = {UUID}
例如:
fsid = a7f64266-0894-4f1e-a635-d0aeaca0e993
-
将初始监视器添加到 Ceph 配置文件。
mon_initial_members = {hostname}[,{hostname}]
例如:
mon_initial_members = mon-node1
-
将初始监控器的 IP 地址添加到 Ceph 配置 文件并保存文件。
mon_host = {ip-address}[,{ip-address}]
例如:
mon_host = 192.168.0.1
注意:您可以使用 IPv6 地址而不是 IPv4 地址,但 必须设置为 。请参阅网络配置 有关网络配置的详细信息,请参阅。
ms_bind_ipv6
true
-
为群集创建密钥环并生成监视器密钥。
sudo ceph-authtool --create-keyring /tmp/ceph.mon.keyring --gen-key -n mon. --cap mon 'allow *'
-
生成管理员密钥环,生成用户并添加 密钥环的用户。
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 *'
-
生成引导 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'
-
将生成的密钥添加到 .
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
-
更改 的所有者。
ceph.mon.keyring
sudo chown ceph:ceph /tmp/ceph.mon.keyring
-
使用主机名、主机 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
-
在监视器主机上创建一个或多个默认数据目录。
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.
-
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
-
请考虑 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
-
启动显示器。
使用 systemd 启动服务:
sudo systemctl start ceph-mon@mon-node1
-
确保为 ceph-mon 打开防火墙端口。
使用防火墙打开端口:
sudo firewall-cmd --zone=public --add-service=ceph-mon sudo firewall-cmd --zone=public --add-service=ceph-mon --permanent
-
验证监视器是否正在运行。
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 + clean
osd_pool_default_size = 2
简写形式
Ceph 提供了实用程序,可以准备逻辑卷、磁盘或分区 用于 Ceph。该实用程序通过以下方式创建 OSD ID 递增索引。此外,会将新的 OSD 添加到 粉碎主机下的地图为您。执行 CLI 详细信息。 该实用程序自动执行下面的长窗体步骤。自 使用简写过程创建前两个 OSD,为每个 OSD 执行以下操作:ceph-volume
ceph-volume
ceph-volume
ceph-volume -h
ceph-volume
-
创建 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
或者,创建过程可以分为两个阶段(准备和 激活):
-
准备 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 来获得:
ID
FSID
sudo ceph-volume lvm list
-
激活 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地穴“密码箱”。
-
连接到 OSD 主机并成为根用户。
ssh {node-name} sudo bash
-
为 OSD 生成 UUID。
UUID=$(uuidgen)
-
为 OSD 生成 cephx 密钥。
OSD_SECRET=$(ceph-authtool --gen-print-key)
-
创建 OSD。请注意,OSD ID 可以作为 如果需要重用 以前已销毁的 OSD ID。我们假设密钥存在于计算机上。你可以 或者,像在 存在该密钥的不同主机。
ceph osd new
client.bootstrap-osd
client.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_class
ssd
hdd
-
在新 OSD 上创建默认目录。
mkdir /var/lib/ceph/osd/ceph-$ID
-
如果 OSD 用于操作系统驱动器以外的驱动器,请准备它 与 Ceph 一起使用,并将其挂载到您刚刚创建的目录中。
mkfs.xfs /dev/{DEV} mount /dev/{DEV} /var/lib/ceph/osd/ceph-$ID
-
将密钥写入 OSD 密钥环文件。
ceph-authtool --create-keyring /var/lib/ceph/osd/ceph-$ID/keyring \ --name osd.$ID --add-key $OSD_SECRET
-
初始化 OSD 数据目录。
ceph-osd -i $ID --mkfs --osd-uuid $UUID
-
修复所有权。
chown -R ceph:ceph /var/lib/ceph/osd/ceph-$ID
-
将 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}
-
创建 mds 数据目录:
mkdir -p /var/lib/ceph/mds/{cluster-name}-{id}
-
Create a keyring.:
ceph-authtool --create-keyring /var/lib/ceph/mds/{cluster-name}-{id}/keyring --gen-key -n mds.{id}
-
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
-
Add to ceph.conf.:
[mds.{id}] host = {id}
-
Start the daemon the manual way.:
ceph-mds --cluster {cluster-name} -i {id} -m {mon-hostname}:{mon-port} [-f]
-
Start the daemon the right way (using ceph.conf entry).:
service ceph start
-
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}
-
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 文档