Config Servers

在本页面

Important

从 3.4 开始,不再支持将已弃用的镜像mongod实例用作配置服务器(SCCC)。在将分片群集升级到 3.4 之前,必须将配置服务器从 SCCC 转换为 CSRS。

要将配置服务器从 SCCC 转换为 CSRS,请参见 MongoDB 3.4 手册将配置服务器升级到副本集

配置服务器存储sharded cluster的元数据。元数据反映分片群集内所有数据和组件的状态和组织。元数据包括每个分片上的块列表以及定义块的范围。

mongos实例会缓存此数据,并使用其将读取和写入操作路由到正确的分片。当集群的元数据发生更改时,例如Chunk Splits添加一个碎片mongos更新缓存。分片还从配置服务器读取块元数据。

配置服务器还存储Authentication配置信息,例如群集的基于角色的访问控制internal authentication设置。

MongoDB 还使用配置服务器来 Management 分布式锁。

每个分片群集必须具有自己的配置服务器。不要将相同的配置服务器用于不同的分片群集。

Warning

在配置服务器上执行的 Management 操作可能会对分片群集的性能和可用性产生重大影响。根据受影响的配置服务器的数量,群集可能会在一段时间内处于只读或脱机状态。

副本集配置服务器

在版本 3.4 中更改。

从 MongoDB 3.2 开始,分片群集的配置服务器可以部署为replica set(CSRS),而不是三个镜像配置服务器(SCCC)。对配置服务器使用副本集可提高配置服务器之间的一致性,因为 MongoDB 可以利用配置文件的标准副本集读写协议。此外,将副本集用于配置服务器允许分片群集具有 3 个以上的配置服务器,因为副本集最多可具有 50 个成员。要将配置服务器部署为副本集,配置服务器必须运行WiredTiger 存储引擎

在 3.4 版中,MongoDB 删除对 SCCC 配置服务器的支持

当用于配置服务器时,以下限制适用于副本集配置:

  • 必须为零arbiters

  • 不得包含delayed members

  • 必须构建索引(即,没有成员应将buildIndexes设置设为 false)。

配置服务器上的读取和写入操作

admin数据库和config database存在于配置服务器上。

写入配置服务器

admin数据库包含与身份验证和授权相关的集合以及供内部使用的其他system.* collections

config database包含包含分片群集元数据的集合。当元数据更改时,例如chunk migrationchunk split之后,MongoDB 会将数据写入config database

用户应避免在正常操作或维护过程中直接写入 config 数据库。

写入配置服务器时,MongoDB 使用write concern"majority"

从配置服务器读取

MongoDB 从admin数据库读取身份验证和授权数据以及其他内部用途。

mongos启动时或在元数据更改之后(例如在块迁移之后),MongoDB 将从config数据库读取。分片还从配置服务器读取块元数据。

从副本集配置服务器读取时,MongoDB 使用Read Concern级别"majority"

配置服务器可用性

如果配置服务器副本集丢失了主服务器并且无法选择主服务器,则集群的元数据将变为只读。您仍然可以从分片读取和写入数据,但是在副本集可以选择主副本之前,不会发生任何块迁移或块拆分。

在分片群集中,mongodmongos实例监视分片群集中的副本集(例如,分片副本集,配置服务器副本集)。

如果所有配置服务器都不可用,则群集可能无法运行。为了确保配置服务器保持可用和完整,配置服务器的备份至关重要。与集群中存储的数据相比,配置服务器上的数据很小,并且配置服务器的活动负载相对较低。

对于 3.2 分片群集,如果监视配置服务器副本集的连续不成功尝试次数超过replMonitorMaxFailedChecks参数值,则在重新启动实例之前,无法监视mongosmongod实例。解决方法请参见MongoDB 3.2

有关更多信息,请参见配置服务器副本集成员不可用

分片群集元数据

配置服务器将元数据存储在Config Database中。

Important

在配置服务器上进行任何维护之前,请始终备份config数据库。

要访问config数据库,请从mongo shell 发出以下命令:

use config

通常,您永远不应*直接编辑config数据库的内容。 config数据库包含以下集合:

有关这些集合及其在分片群集中的作用的更多信息,请参见Config Database。有关读取和更新元数据的更多信息,请参见在配置服务器上的读写操作

分片群集安全性

使用Internal Authentication来增强群集内部的安全性,并防止未经授权的群集组件访问群集。您必须使用适当的安全设置启动群集中的每个mongod,以强制执行内部身份验证。

有关部署安全分片群集的教程,请参见使用密钥文件访问控制部署分片群集