cephfs如何配置多主(多活)MDS


title: cephfs如何配置多主(多活)MDS

2019/03/29 ypdai

配置多主MDS

MDS配置模式分为以下三种:

  • 冷备模式:同一时间,只有一个mds工作,单纯的进程备份。
  • 热备模式:同一时间,只有一个mds工作,但除了进程备份,也实时备份元数据,这样可以加快MDS故障切换时间。
  • 多主模式:多个MDS同时工作,各自管理自己负责的元数据。

默认情况下,每个cephfs文件系统的MDS都是以冷备模式配置的。有时候为了获取更高的性能,可以启用多个活动的MDS守护进程,也就是多主模式,它们将彼此分担元数据的工作负载。

下面主要介绍如何配置MDS多主模式。

1、什么时候需要配置多主MDS?

当cephfs的性能出现在MDS上时,就应该配置多个活动的MDS。通常是多个客户机应用程序并行的执行大量元数据操作,并且它们分别有自己单独的工作目录。这种情况下很适合使用多主MDS模式。

2、开始配置MDS多主模式

2.1、增加max_mds

每个cephfs文件系统都有一个max_mds设置,可以理解为它将控制创建多少个主MDS。注意只有当实际的MDS个数大于或等于max_mds设置的值时,mdx_mds设置才会生效。例如,如果只有一个MDS守护进程在运行,并且max_mds被设置为两个,则不会创建第二个主MDS。

将max_mds设置为所需的个数:

$ ceph fs set max_mds 2

2.2、配置备用MDS

即使有多个活动的MDS,如果其中一个MDS出现故障,仍然需要备用守护进程来接管。因此,对于高可用性系统,实际配置max_mds时,最好比系统中MDS的总数少一个。

但如果你确信你的MDS不会出现故障,可以通过以下设置来通知ceph不需要备用MDS,否则会出现insufficient standby daemons available告警信息:

$ ceph fs set  standby_count_wanted 0 

2.3、绑定集群目录到指定的MDS上

在多主MDS配置中,这些MDS可以在集群中均匀的动态的分配元数据负载。但还有一种情况就是我们需要把某个集群目录绑定到一个指定MDS上,只让这个MDS来负责这个目录的元数据处理,比如我有两个集群目录dir01、dir02,然后我配置MDS01、MDS02为双主模式同时工作,这样我就可以让MDS01负责dir01的元数据,MDS02负责dir02的元数据。这样配置好处显而易见。

配置方式:

$ setfattr -n ceph.dir.pin -v {mds-rank} {path-to-dir}

{mds-rank}从0开始,ceph -s命令输出里面可以看到:

# node01节点上mds-rank为0,node02节点上的mds-rank为1
mds: ceph-2/2/2 up  {0=node01=up:active,1=node02=up:active}

{path-to-dir}表示需要绑定到指定mds-rank上的集群目录。

这样就配置好了,步骤比较简单。

2.4、还原为单主MDS

恢复也就两步:

# 设置max_mds
$ ceph fs set max_mds 1

# 删除不需要的rank
$ ceph mds deactivate {cephfs-name}:{mds-rank}

注意所有的rank,包括要被移除的rank,必须先激活。这意味着必须至少有max_mds个MDS守护进程可用。

在一段时间内,停用的rank将首先进入停止状态,同时将其负责的元数据传递给剩余的活动的MDS。这个阶段可能需要几秒钟到几分钟。

你可能感兴趣的:(cephfs如何配置多主(多活)MDS)