OpenShift Container Storage is now OpenShift Data Foundation starting with version 4.9.
第 4 章 配置 Red Hat Ceph Storage 扩展集群
使用 cephadm 完全部署了红帽 Ceph 存储集群后,请使用以下步骤来配置扩展集群模式。新的扩展模式旨在处理两个站点情况。
步骤
使用 ceph mon dump 命令检查监视器所使用的当前选择策略。默认情况下,在 ceph 集群中,连接设置为经典。
ceph mon dump | grep election_strategy
ceph mon dump | grep election_strategyCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例:
dumped monmap epoch 9 election_strategy: 1
dumped monmap epoch 9 election_strategy: 1Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将 monitor 选举更改为连接性。
ceph mon set election_strategy connectivity
ceph mon set election_strategy connectivityCopy to Clipboard Copied! Toggle word wrap Toggle overflow 再次运行前面的 ceph mon dump 命令,以验证 election_strategy 值。
ceph mon dump | grep election_strategy
$ ceph mon dump | grep election_strategyCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例:
dumped monmap epoch 10 election_strategy: 3
dumped monmap epoch 10 election_strategy: 3Copy to Clipboard Copied! Toggle word wrap Toggle overflow 要了解有关不同选择策略的更多信息,请参阅配置监控选举策略。
设置所有 Ceph 监视器的位置:
ceph mon set_location ceph1 datacenter=DC1 ceph mon set_location ceph2 datacenter=DC1 ceph mon set_location ceph4 datacenter=DC2 ceph mon set_location ceph5 datacenter=DC2 ceph mon set_location ceph7 datacenter=DC3
ceph mon set_location ceph1 datacenter=DC1 ceph mon set_location ceph2 datacenter=DC1 ceph mon set_location ceph4 datacenter=DC2 ceph mon set_location ceph5 datacenter=DC2 ceph mon set_location ceph7 datacenter=DC3Copy to Clipboard Copied! Toggle word wrap Toggle overflow 验证每个监控器是否具有正确的位置。
ceph mon dump
$ ceph mon dumpCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 通过安装
ceph-baseRPM 软件包来创建使用此 OSD 拓扑的 CRUSH 规则,以便使用crushtool命令:dnf -y install ceph-base
$ dnf -y install ceph-baseCopy to Clipboard Copied! Toggle word wrap Toggle overflow 要了解有关 CRUSH 规则集的更多信息,请参见 Ceph CRUSH 规则集。
从集群获取编译的 CRUSH map:
ceph osd getcrushmap > /etc/ceph/crushmap.bin
$ ceph osd getcrushmap > /etc/ceph/crushmap.binCopy to Clipboard Copied! Toggle word wrap Toggle overflow 解译 CRUSH map,并将其转换为文本文件,以便能编辑它:
crushtool -d /etc/ceph/crushmap.bin -o /etc/ceph/crushmap.txt
$ crushtool -d /etc/ceph/crushmap.bin -o /etc/ceph/crushmap.txtCopy to Clipboard Copied! Toggle word wrap Toggle overflow 编辑文件
/etc/ceph/crushmap.txt,将以下规则添加到 CRUSH map。vim /etc/ceph/crushmap.txt
$ vim /etc/ceph/crushmap.txtCopy to Clipboard Copied! Toggle word wrap Toggle overflow Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意规则
ID必须是唯一的。在示例中,我们只有一个带有 id 0 的 crush 规则,因此我们正在使用 id 1。如果您的部署创建了更多规则,则使用下一个可用 ID。声明的 CRUSH 规则包含以下信息:
规则名称:- Description: 用于标识规则的唯一名称。
-
Value:
stretch_rule
id:- Description:用于标识规则的唯一整数。
-
Value:
1
type:- Description:描述存储驱动器复制或纠删代码的规则。
-
Value:
replicated
min_size:- Description: 如果池制作的副本数少于这个数字,CRUSH 不会选择这一规则。
-
Value:
1
max_size:- Description: 如果池制作的副本数多于这个数字,CRUSH 不会选择这一规则。
-
Value:
10
step take DC1- Description:获取存储桶名称(DC1),并开始迭代树。
step chooseleaf firstn 2 type host- Description:选择给定类型的存储桶数量,本例中为位于 DC1 中的两个不同的主机。
step emit- Description: 输出当前的值并清除堆栈。通常在规则末尾使用,但也可用于从同一规则的不同树中选取。
step take DC2- Description:获取存储桶名称(DC2),并开始迭代树。
step chooseleaf firstn 2 type host- Description:选择给定类型的存储桶数量,本例中为两个位于 DC2 的不同主机。
step emit- Description: 输出当前的值并清除堆栈。通常在规则末尾使用,但也可用于从同一规则的不同树中选取。
从文件
/etc/ceph/crushmap.txt中编译新的 CRUSH map,并将其转换为名为/etc/ceph/crushmap2.bin的二进制文件:crushtool -c /etc/ceph/crushmap.txt -o /etc/ceph/crushmap2.bin
$ crushtool -c /etc/ceph/crushmap.txt -o /etc/ceph/crushmap2.binCopy to Clipboard Copied! Toggle word wrap Toggle overflow 注入我们创建回集群的新 crushmap:
ceph osd setcrushmap -i /etc/ceph/crushmap2.bin
$ ceph osd setcrushmap -i /etc/ceph/crushmap2.binCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例:
17
17Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意数字 17 是一个计数器,它将根据您对 crush 映射所做的更改来增加(18,19 等)。
验证创建的扩展规则现已可供使用。
ceph osd crush rule ls
ceph osd crush rule lsCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例:
replicated_rule stretch_rule
replicated_rule stretch_ruleCopy to Clipboard Copied! Toggle word wrap Toggle overflow 启用扩展群集模式。
ceph mon enable_stretch_mode ceph7 stretch_rule datacenter
$ ceph mon enable_stretch_mode ceph7 stretch_rule datacenterCopy to Clipboard Copied! Toggle word wrap Toggle overflow 在本例中,
ceph7是仲裁节点,stretch_rule是在上一步中创建的 crush 规则,datacenter是分开的存储桶。验证我们的所有池正在使用我们在 Ceph 集群中创建的
stretch_ruleCRUSH 规则:for pool in $(rados lspools);do echo -n "Pool: ${pool}; ";ceph osd pool get ${pool} crush_rule;done$ for pool in $(rados lspools);do echo -n "Pool: ${pool}; ";ceph osd pool get ${pool} crush_rule;doneCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 这表明正在运行的红帽 Ceph 存储扩展群集,现在具有仲裁模式。