5.3. 使用 Ansible 配置单向镜像
此流程使用 ceph-ansible
,在称为 site-a
的主存储集群上配置镜像的单向复制,到名为 site-b
的辅助存储集群。在以下示例中,data
是包含要镜像的镜像的池名称。
先决条件
- 两个正在运行的 Red Hat Ceph Storage 集群。
- Ceph 客户端节点.
- 两个集群中都存在具有相同名称的池。
- 池中的镜像必须为基于日志的镜像启用 exclusive-lock 和日志记录。
使用单向复制时,您可以镜像到多个次要存储集群。
流程
在镜像源自的集群中,在镜像上启用 exclusive-lock 和 journaling 功能。
对于新镜像,使用
--image-feature
选项:语法
Copy to Clipboard Copied! Toggle word wrap Toggle overflow rbd create IMAGE_NAME --size MEGABYTES --pool POOL_NAME --image-feature FEATURE[,FEATURE]
rbd create IMAGE_NAME --size MEGABYTES --pool POOL_NAME --image-feature FEATURE[,FEATURE]
示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow rbd create image1 --size 1024 --pool data --image-feature exclusive-lock,journaling
[root@rbd-client ~]# rbd create image1 --size 1024 --pool data --image-feature exclusive-lock,journaling
对于现有镜像,请使用
rbd feature enable
命令:语法
Copy to Clipboard Copied! Toggle word wrap Toggle overflow rbd feature enable POOL_NAME/IMAGE_NAME FEATURE_NAME
rbd feature enable POOL_NAME/IMAGE_NAME FEATURE_NAME
示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow rbd feature enable data/image1 exclusive-lock,journaling
[root@rbd-client ~]# rbd feature enable data/image1 exclusive-lock,journaling
要默认在所有新镜像上启用专用锁定和日志记录功能,请在 Ceph 配置文件中添加以下设置:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow rbd_default_features = 125
rbd_default_features = 125
在
site-a
集群中,完成以下步骤:在 monitor 节点上,创建
rbd-mirror
守护进程将用于连接集群的用户。这个示例创建一个site-a
用户,并将密钥输出到名为site-a.client.site-a.keyring
的文件中:语法
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ceph auth get-or-create client.CLUSTER_NAME mon 'profile rbd' osd 'profile rbd pool=data' -o /etc/ceph/CLUSTER_NAME.client.USER_NAME.keyring
ceph auth get-or-create client.CLUSTER_NAME mon 'profile rbd' osd 'profile rbd pool=data' -o /etc/ceph/CLUSTER_NAME.client.USER_NAME.keyring
示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ceph auth get-or-create client.site-a mon 'profile rbd' osd 'profile rbd pool=data' -o /etc/ceph/site-a.client.site-a.keyring
[root@mon ~]# ceph auth get-or-create client.site-a mon 'profile rbd' osd 'profile rbd pool=data' -o /etc/ceph/site-a.client.site-a.keyring
-
将 Ceph 配置文件和新创建的密钥文件从 monitor 节点复制到
site-b
监控器和客户端节点。 -
将 Ceph 配置文件从
ceph.conf
重命名为 CLUSTER-NAME.conf。在这些示例中,该文件是/etc/ceph/site-a.conf
。
在
site-b
集群中,完成以下步骤:-
在 Ansible 管理节点上,在 Ansible 清单文件中添加
[rbdmirrors]
组。通常的清单文件为/etc/ansible/hosts
。 在
[rbdmirrors]
组下,添加将在其上运行rbd-mirror
守护进程的site-b
客户端节点的名称。守护进程将从site-a
拉取镜像更改到site-b
。Copy to Clipboard Copied! Toggle word wrap Toggle overflow [rbdmirrors] ceph-client
[rbdmirrors] ceph-client
进入
/usr/share/ceph-ansible/
目录:Copy to Clipboard Copied! Toggle word wrap Toggle overflow cd /usr/share/ceph-ansible
[root@admin ~]# cd /usr/share/ceph-ansible
通过将 group_vars/rbdmirrors.yml.
sample 复制到
.yml 来创建新的group_vars/rbdmirrors.yml
rbdmirrors.yml
文件:Copy to Clipboard Copied! Toggle word wrap Toggle overflow cp group_vars/rbdmirrors.yml.sample group_vars/rbdmirrors.yml
[root@admin ceph-ansible]# cp group_vars/rbdmirrors.yml.sample group_vars/rbdmirrors.yml
-
打开
group_vars/rbdmirrors.yml
文件进行编辑。 将
ceph_rbd_mirror_configure
设置为true
。将ceph_rbd_mirror_pool
设置为您要在其中镜像镜像的池。在这些示例中,data
是池的名称。Copy to Clipboard Copied! Toggle word wrap Toggle overflow ceph_rbd_mirror_configure: true ceph_rbd_mirror_pool: "data"
ceph_rbd_mirror_configure: true ceph_rbd_mirror_pool: "data"
默认情况下,
ceph-ansible
使用池模式配置镜像功能,它会镜像池中的所有镜像。启用镜像(mirror)镜像(mirror)的镜像模式。要启用镜像模式,将ceph_rbd_mirror_mode
设置为image
:Copy to Clipboard Copied! Toggle word wrap Toggle overflow ceph_rbd_mirror_mode: image
ceph_rbd_mirror_mode: image
rbd-mirror
将从中拉取的集群设置名称。在这些示例中,其他集群是site-a
。Copy to Clipboard Copied! Toggle word wrap Toggle overflow ceph_rbd_mirror_remote_cluster: "site-a"
ceph_rbd_mirror_remote_cluster: "site-a"
在 Ansible 管理节点上,使用
ceph_rbd_mirror_remote_user
设置密钥的用户名。使用您在创建密钥时使用的相同名称。在这些示例中,该用户命名为client.site-a
。Copy to Clipboard Copied! Toggle word wrap Toggle overflow ceph_rbd_mirror_remote_user: "client.site-a"
ceph_rbd_mirror_remote_user: "client.site-a"
以 ceph-ansible 用户身份,运行 Ansible playbook:
裸机部署:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ansible-playbook site.yml --limit rbdmirrors -i hosts
[user@admin ceph-ansible]$ ansible-playbook site.yml --limit rbdmirrors -i hosts
容器部署:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ansible-playbook site-container.yml --limit rbdmirrors -i hosts
[ansible@admin ceph-ansible]$ ansible-playbook site-container.yml --limit rbdmirrors -i hosts
-
在 Ansible 管理节点上,在 Ansible 清单文件中添加
在
site-a
和site-b
集群中明确启用镜像的镜像:语法
基于日志的镜像:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow rbd mirror image enable POOL/IMAGE
rbd mirror image enable POOL/IMAGE
基于快照的镜像:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow rbd mirror image enable POOL/IMAGE snapshot
rbd mirror image enable POOL/IMAGE snapshot
示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow rbd mirror image enable data/image1 rbd mirror image enable data/image1 snapshot
[root@mon ~]# rbd mirror image enable data/image1 [root@mon ~]# rbd mirror image enable data/image1 snapshot
注意每当您想要将新镜像镜像到对等集群时,请重复此步骤。
验证镜像状态。从
site-b
集群的 Ceph 监控节点运行以下命令:示例
基于日志的镜像:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow rbd mirror image status data/image1
[root@mon ~]# rbd mirror image status data/image1 image1: global_id: 7d486c3f-d5a1-4bee-ae53-6c4f1e0c8eac state: up+replaying
1 description: replaying, master_position=[object_number=3, tag_tid=1, entry_tid=3], mirror_position=[object_number=3, tag_tid=1, entry_tid=3], entries_behind_master=0 last_update: 2019-04-22 13:19:27
基于快照的镜像:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow rbd mirror image status data/image1
[root@mon ~]# rbd mirror image status data/image1 image1: global_id: 06acc9e6-a63d-4aa1-bd0d-4f3a79b0ae33 state: up+replaying
1 description: replaying, {"bytes_per_second":0.0,"bytes_per_snapshot":0.0,"local_snapshot_timestamp":1642689843,"remote_snapshot_timestamp":1642689843,"replay_state":"idle"} service: admin on ceph-rbd2-vasi-43-5hwia4-node2 last_update: 2022-01-20 12:41:57
注意根据站点之间的连接,镜像可能需要很长时间才能同步镜像。