注意
本文档适用于 Ceph 开发版本。
FreeBSD 上的手动部署
这基本上是常规手动部署的副本,但包含FreeBSD的特定内容。
所有 Ceph 集群至少需要一个监控节点,并且至少需要与集群中存储的对象副本数量相同的 OSD。引导初始监控节点是部署 Ceph 存储集群的第一步。监控节点的部署也为整个集群设定了重要标准,例如池的副本数量、每个 OSD 的放置组数量、心跳间隔、是否需要身份验证等。这些值中的大多数默认设置,因此在为生产环境设置集群时了解它们很有用。
我们将设置一个集群,使用node1
作为监控节点,并node2
和node3
作为 OSD 节点。
FreeBSD 上的磁盘布局
当前实现适用于ZFS池
所有Ceph数据都创建在/var/lib/ceph
日志文件存放在/var/log/ceph
PID文件存放在/var/log/run
每个OSD分配一个ZFS池,例如:
gpart create -s GPT ada1 gpart add -t freebsd-zfs -l osd.1 ada1 zpool create -m /var/lib/ceph/osd/osd.1 osd.1 gpt/osd.1
可以附加一些缓存和日志(ZIL)。
gpart create -s GPT ada2 gpart add -t freebsd-zfs -l osd.1-log -s 1G ada2 zpool add osd.1 log gpt/osd.1-log gpart add -t freebsd-zfs -l osd.1-cache -s 10G ada2 zpool add osd.1 log gpt/osd.1-cache
注意:UFS2不允许大型xattribs
配置
根据FreeBSD默认设置,额外软件的部分存放在/usr/local/
. 这意味着默认位置是/etc/ceph.conf
. 最明智的做法是创建一个软链接/usr/local/etc/ceph/ceph.conf
. Smartest thing to do is to create a softlink
from /etc/ceph
to/usr/local/etc/ceph
:
ln -s /usr/local/etc/ceph /etc/ceph
提供了一个示例文件在/usr/local/share/doc/ceph/sample.ceph.conf
注意/usr/local/etc/ceph/ceph.conf
大多数工具都能找到/etc/ceph/ceph.conf
将有助于任何在额外工具、脚本和/或讨论列表中找到的脚本。
监控节点引导
引导一个监控节点(理论上是一个 Ceph 存储集群)需要一些东西:
唯一标识符: The
fsid
是集群的唯一标识符,代表 Ceph 存储集群主要用于 Ceph 文件系统时代的文件系统 ID。Ceph 现在支持原生接口、块设备和对象存储网关接口,所以fsid
是有点不恰当的说法。集群名称:Ceph 集群有一个集群名称,它是一个简单的字符串,不包含空格。默认的集群名称是
ceph
,但你也可以指定不同的集群名称。覆盖默认集群名称在您使用多个集群并且需要清楚地了解您正在使用哪个集群时特别有用。例如,当您在一个多站点配置中运行多个集群时,集群名称(例如,
us-west
,us-east
)标识当前 CLI 会话的集群。注意:要在命令行界面中标识集群名称,请指定包含集群名称的Ceph配置文件(例如,ceph.conf
,us-west.conf
,us-east.conf
,等等)。ceph --cluster {cluster-name}
).监控节点名称:集群中的每个监控实例都有一个唯一名称。在常见实践中,Ceph 监控节点的名称是主机名(我们推荐每个主机一个 Ceph 监控节点,并且不要将 Ceph OSD 守护进程与 Ceph 监控节点混合)。您可以使用
hostname -s
.获取简短主机名。引导初始监控节点需要您生成一个监控映射。监控映射需要
fsid
,集群名称(或使用默认值),以及至少一个主机名及其 IP 地址。监控密钥环:监控节点通过密钥进行通信。您必须生成一个包含监控密钥的密钥环,并在引导初始监控节点时提供它。
管理员密钥环:要使用
ceph
CLI 工具,您必须有一个client.admin
用户。因此,您必须生成管理员用户和密钥环,并且您还必须将client.admin
用户添加到监控密钥环。
上述要求并不意味着创建 Ceph 配置文件。但是,作为一种最佳实践,我们建议创建 Ceph 配置文件并填充它fsid
,mon initial members
和mon host
设置。
您也可以在运行时获取和设置所有监控设置。但是,Ceph 配置文件可能只包含覆盖默认值的设置。当您向 Ceph 配置文件添加设置时,这些设置会覆盖默认设置。将设置维护在 Ceph 配置文件中可以使维护您的集群变得更容易。
程序如下:
登录初始监控节点:
ssh {hostname}
例如:
ssh 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 = node1
将初始监控节点的 IP 地址添加到您的 Ceph 配置文件并保存文件。
mon host = {ip-address}[,{ip-address}]
例如:
mon host = 192.168.0.1
注意:您可以使用 IPv6 地址而不是 IPv4 地址,但您必须设置
ms bind ipv6
totrue
。有关网络配置的详细信息,请参阅网络配置参考。为您的集群创建密钥环并生成监控密钥。
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 *'
添加
client.admin
密钥到ceph.mon.keyring
.ceph-authtool /tmp/ceph.mon.keyring --import-keyring /etc/ceph/ceph.client.admin.keyring
使用主机名生成监控映射。保存为
/tmp/monmap
:monmaptool --create --add {hostname} {ip-address} --fsid {uuid} /tmp/monmap
例如:
monmaptool --create --add node1 192.168.0.1 --fsid a7f64266-0894-4f1e-a635-d0aeaca0e993 /tmp/monmap
在监控主机上创建默认数据目录(或目录)。
sudo mkdir /var/lib/ceph/mon/{cluster-name}-{hostname}
例如:
sudo mkdir /var/lib/ceph/mon/ceph-node1
请参阅监控配置参考 - 数据 for details.
用监控映射和密钥环填充监控守护进程。
sudo -u ceph ceph-mon [--cluster {cluster-name}] --mkfs -i {hostname} --monmap /tmp/monmap --keyring /tmp/ceph.mon.keyring
例如:
sudo -u ceph ceph-mon --mkfs -i 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 journal size = {n} osd pool default size = {n} # Write an object n times. osd pool default min size = {n} # Allow writing n copy in a degraded state. osd pool default pg num = {n} osd pool default pgp num = {n} osd crush chooseleaf type = {n}
在前面的示例中,配置文件的
[global]
部分可能如下所示:[global] fsid = a7f64266-0894-4f1e-a635-d0aeaca0e993 mon initial members = 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 journal size = 1024 osd pool default size = 3 osd pool default min size = 2 osd pool default pg num = 333 osd pool default pgp num = 333 osd crush chooseleaf type = 1
触发
done
文件。标记监控器已创建并准备好启动:
sudo touch /var/lib/ceph/mon/ceph-node1/done
对于FreeBSD,需要在配置文件中为每个监控器添加一个条目。(未来版本将移除此要求)。
条目应如下所示:
[mon] [mon.node1] host = node1 # this name can be resolve
启动监控节点。
对于FreeBSD,我们使用rc.d初始化脚本(在Ceph中称为bsdrc):
sudo service ceph start start mon.node1
- 为使其生效,/etc/rc.conf也需要添加启用ceph的条目:
cat ‘ceph_enable=”YES”’ >> /etc/rc.conf
验证Ceph是否创建了默认池。
ceph osd lspools
你应该看到类似以下的输出:
0 data 1 metadata 2 rbd
验证监控节点是否正在运行。
ceph -s
您应该看到输出,表明您启动的监控节点正在运行,并且应该看到健康错误,表明放置组处于不活动状态。它应该看起来像这样:
cluster a7f64266-0894-4f1e-a635-d0aeaca0e993 health HEALTH_ERR 192 pgs stuck inactive; 192 pgs stuck unclean; no osds monmap e1: 1 mons at {node1=192.168.0.1:6789/0}, election epoch 1, quorum 0 node1 osdmap e1: 0 osds: 0 up, 0 in pgmap v2: 192 pgs, 3 pools, 0 bytes data, 0 objects 0 kB used, 0 kB / 0 kB avail 192 creating
注意:一旦你添加并启动OSD,放置组健康错误应该会消失。详情请见下一节。
添加 OSD
在您启动初始监控节点后,您应该添加 OSD。直到您有足够的 OSD 来处理对象副本的数量(例如,active + clean
状态。在引导监控节点后,您的集群有一个默认的 CRUSH 映射;但是,CRUSH 映射没有任何 Ceph OSD 守护进程映射到 Ceph 节点。osd pool default size = 2
至少需要两个 OSD),您的集群才能达到
长形式
没有任何辅助工具的帮助下,通过以下步骤创建OSD并将其添加到集群和CRUSH映射中。要使用长格式步骤创建前两个OSD,请在node2
和node3
:
连接到OSD主机。
ssh {node-name}
为 OSD 生成一个 UUID。
uuidgen
创建OSD。如果未给出UUID,它将在OSD启动时自动设置。以下命令将输出OSD编号,你需要在后续步骤中使用它。
ceph osd create [{uuid} [{id}]]
在新的 OSD 上创建默认目录。
ssh {new-osd-host} sudo mkdir /var/lib/ceph/osd/{cluster-name}-{osd-number}
以上是FreeBSD的ZFS说明,用于执行此操作。
如果 OSD 不是用于操作系统驱动器,请准备它以用于 Ceph,并将其挂载到您刚刚创建的目录。
初始化 OSD 数据目录。
ssh {new-osd-host} sudo ceph-osd -i {osd-num} --mkfs --mkkey --osd-uuid [{uuid}]
在运行
ceph-osd
使用--mkkey
选项之前,目录必须为空。此外,ceph-osd工具需要使用--cluster
option.注册OSD认证密钥。路径中
ceph
forceph-{osd-num}
的值是$cluster-$id
. 如果你的集群名称与ceph
不同,请使用你的集群名称:sudo ceph auth add osd.{osd-num} osd 'allow *' mon 'allow profile osd' -i /var/lib/ceph/osd/{cluster-name}-{osd-num}/keyring
将你的Ceph节点添加到CRUSH映射。
ceph [--cluster {cluster-name}] osd crush add-bucket {hostname} host
例如:
ceph osd crush add-bucket node1 host
将Ceph节点置于根
default
.ceph osd crush move node1 root=default
将OSD添加到CRUSH映射,以便它开始接收数据。你也可以解编译CRUSH映射,将OSD添加到设备列表,将主机作为桶添加(如果它不在CRUSH映射中),将设备作为主机中的项添加,分配权重,重新编译并设置。
ceph [--cluster {cluster-name}] osd crush add {id-or-name} {weight} [{bucket-type}={bucket-name} ...]
例如:
ceph osd crush add osd.0 1.0 host=node1
在将OSD添加到Ceph后,OSD会出现在你的配置中。但它尚未运行。OSD是
down
和in
. 你必须启动新的OSD,它才能开始接收数据。对于使用rc.d初始化的FreeBSD。
在将OSD添加到
ceph.conf
:sudo service ceph start osd.{osd-num}
例如:
sudo service ceph start osd.0 sudo service ceph start osd.1
在这种情况下,为了在每次重启时允许守护进程启动,你必须创建一个空文件,如下所示:
sudo touch /var/lib/ceph/osd/{cluster-name}-{osd-num}/bsdrc
例如:
sudo touch /var/lib/ceph/osd/ceph-0/bsdrc sudo touch /var/lib/ceph/osd/ceph-1/bsdrc
一旦你启动OSD,它就是
up
和in
.
添加 MDS
在以下说明中,{id}
是一个任意名称,例如机器的主机名。
创建 mds 数据目录。:
mkdir -p /var/lib/ceph/mds/{cluster-name}-{id}
创建密钥环。:
ceph-authtool --create-keyring /var/lib/ceph/mds/{cluster-name}-{id}/keyring --gen-key -n mds.{id}
导入密钥环并设置 caps。:
ceph auth add mds.{id} osd "allow rwx" mds "allow *" mon "allow profile mds" -i /var/lib/ceph/mds/{cluster}-{id}/keyring
添加到 ceph.conf。:
[mds.{id}] host = {id}
使用手动方式启动守护进程。:
ceph-mds --cluster {cluster-name} -i {id} -m {mon-hostname}:{mon-port} [-f]
使用 ceph.conf 条目正确启动守护进程。:
service ceph start
如果启动守护进程出现此错误:
mds.-1.0 ERROR: failed to authenticate: (22) Invalid argument
那么请确保您在 ceph.conf 的全局部分中没有设置密钥环;将其移动到客户端部分;或者添加特定于此 mds 守护进程的密钥环设置。并验证您在 mds 数据目录和
ceph auth get mds.{id}
输出中看到相同的密钥。现在您已经准备好手动创建 Ceph 文件系统.
总结
一旦您启动了监控节点和两个 OSD,您可以通过执行以下操作来观察放置组对等:
ceph -w
要查看树,请执行以下操作:
ceph osd tree
您应该看到类似于以下内容的输出:
# id weight type name up/down reweight
-1 2 root default
-2 2 host node1
0 1 osd.0 up 1
-3 1 host node2
1 1 osd.1 up 1
由 Ceph 基金会带给您
Ceph 文档是一个社区资源,由非盈利的 Ceph 基金会资助和托管Ceph Foundation. 如果您想支持这一点和我们的其他工作,请考虑加入现在加入.