6.3. 使用命令行界面配置双向镜像
此流程配置主存储集群和辅助存储集群之间的池的双向复制。
使用双向复制时,您只能在两个存储集群之间镜像。
本节中的示例通过将主镜像作为 site-a
引用主存储集群和您将要复制镜像的辅助存储集群作为 site-b
来区分两个存储集群。这些示例中使用的池名称称为 data
。
先决条件
- 至少两个健康状态并运行 Red Hat Ceph Storage 集群。
- 对每个存储集群的 Ceph 客户端节点的根级别访问权限。
- 具有管理员级别功能的 CephX 用户。
流程
在两个站点上登录到
cephadm
shell:示例
[root@site-a ~]# cephadm shell [root@site-b ~]# cephadm shell
在
site-a
主集群中运行以下命令:示例
[ceph: root@site-a /]# ceph orch apply rbd-mirror --placement=host01
注意nodename
是您要配置镜像的主机。在
site-b
上,调度在二级集群中部署 mirror 守护进程:语法
ceph orch apply rbd-mirror --placement=NODENAME
示例
[ceph: root@site-b /]# ceph orch apply rbd-mirror --placement=host04
注意nodename
是要在二级集群中配置镜像的主机。在
site-a
上的镜像上启用日志功能。对于新镜像,使用
--image-feature
选项:语法
rbd create IMAGE_NAME --size MEGABYTES --pool POOL_NAME --image-feature FEATURE FEATURE
示例
[ceph: root@site-a /]# rbd create image1 --size 1024 --pool data --image-feature exclusive-lock,journaling
注意如果已经启用了
exclusive-lock
,则使用journaling
作为唯一参数,否则会返回以下错误:one or more requested features are already enabled (22) Invalid argument
对于现有镜像,请使用
rbd feature enable
命令:语法
rbd feature enable POOL_NAME/IMAGE_NAME FEATURE, FEATURE
示例
[ceph: root@site-a /]# rbd feature enable data/image1 exclusive-lock, journaling
要默认在所有新镜像中启用日志,请使用
ceph config set
命令设置配置参数:示例
[ceph: root@site-a /]# ceph config set global rbd_default_features 125 [ceph: root@site-a /]# ceph config show mon.host01 rbd_default_features
在两个存储集群中选择 mirroring 模式(池模式或镜像模式)。
启用 池模式 :
语法
rbd mirror pool enable POOL_NAME MODE
示例
[ceph: root@site-a /]# rbd mirror pool enable data pool [ceph: root@site-b /]# rbd mirror pool enable data pool
这个示例启用对名为
data
的完整池进行镜像。启用 镜像模式 :
语法
rbd mirror pool enable POOL_NAME MODE
示例
[ceph: root@site-a /]# rbd mirror pool enable data image [ceph: root@site-b /]# rbd mirror pool enable data image
这个示例在名为
data
的池上启用镜像模式镜像。注意要在池中为特定镜像启用镜像功能,请参阅 Red Hat Ceph Storage 块设备指南中的 启用镜像镜像 部分。
验证两个站点都已成功启用了镜像:
语法
rbd mirror pool info POOL_NAME
示例
[ceph: root@site-a /]# rbd mirror pool info data Mode: pool Site Name: c13d8065-b33d-4cb5-b35f-127a02768e7f Peer Sites: none [ceph: root@site-b /]# rbd mirror pool info data Mode: pool Site Name: a4c667e2-b635-47ad-b462-6faeeee78df7 Peer Sites: none
在 Ceph 客户端节点上,引导存储集群对等点。
创建 Ceph 用户帐户,并将存储集群对等注册到池:
语法
rbd mirror pool peer bootstrap create --site-name PRIMARY_LOCAL_SITE_NAME POOL_NAME > PATH_TO_BOOTSTRAP_TOKEN
示例
[ceph: root@rbd-client-site-a /]# rbd mirror pool peer bootstrap create --site-name site-a data > /root/bootstrap_token_site-a
注意这个示例 bootstrap 命令创建
client.rbd-mirror.site-a
和client.rbd-mirror-peer
Ceph 用户。-
将 bootstrap 令牌文件复制到
site-b
存储集群。 在
site-b
存储集群中导入 bootstrap 令牌:语法
rbd mirror pool peer bootstrap import --site-name SECONDARY_LOCAL_SITE_NAME --direction rx-tx POOL_NAME PATH_TO_BOOTSTRAP_TOKEN
示例
[ceph: root@rbd-client-site-b /]# rbd mirror pool peer bootstrap import --site-name site-b --direction rx-tx data /root/bootstrap_token_site-a
注意--direction
参数是可选的,因为在 bootstrapping peers 时双向镜像是默认设置。
要验证镜像状态,请从主站点和次要站点的 Ceph monitor 节点运行以下命令:
语法
rbd mirror image status POOL_NAME/IMAGE_NAME
示例
[ceph: root@mon-site-a /]# rbd mirror image status data/image1 image1: global_id: a4c667e2-b635-47ad-b462-6faeeee78df7 state: up+stopped description: local image is primary service: host03.glsdbv on host03.ceph.redhat.com last_update: 2021-09-16 10:55:58 peer_sites: name: a state: up+stopped description: replaying, {"bytes_per_second":0.0,"entries_behind_primary":0,"entries_per_second":0.0,"non_primary_position":{"entry_tid":3,"object_number":3,"tag_tid":1},"primary_position":{"entry_tid":3,"object_number":3,"tag_tid":1}} last_update: 2021-09-16 10:55:50
在这里,
up
表示rbd-mirror
守护进程正在运行,stopped
意味着此镜像不是从另一个存储集群复制的目标。这是因为镜像是这个存储集群的主要部分。示例
[ceph: root@mon-site-b /]# rbd mirror image status data/image1 image1: global_id: a4c667e2-b635-47ad-b462-6faeeee78df7 state: up+replaying description: replaying, {"bytes_per_second":0.0,"entries_behind_primary":0,"entries_per_second":0.0,"non_primary_position":{"entry_tid":3,"object_number":3,"tag_tid":1},"primary_position":{"entry_tid":3,"object_number":3,"tag_tid":1}} service: host05.dtisty on host05 last_update: 2021-09-16 10:57:20 peer_sites: name: b state: up+stopped description: local image is primary last_update: 2021-09-16 10:57:28
如果镜像处于
up+replaying
状态,则镜像可以正常工作。在这里,up
表示rbd-mirror
守护进程正在运行,replaying
表示此镜像是从另一个存储集群复制的目标。注意根据站点之间的连接,镜像可能需要很长时间才能同步镜像。