On this page
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 migration或chunk split之后,MongoDB 会将数据写入config database。
用户应避免在正常操作或维护过程中直接写入 config 数据库。
写入配置服务器时,MongoDB 使用write concern或"majority"
。
从配置服务器读取
MongoDB 从admin
数据库读取身份验证和授权数据以及其他内部用途。
当mongos启动时或在元数据更改之后(例如在块迁移之后),MongoDB 将从config
数据库读取。分片还从配置服务器读取块元数据。
从副本集配置服务器读取时,MongoDB 使用Read Concern级别"majority"。
配置服务器可用性
如果配置服务器副本集丢失了主服务器并且无法选择主服务器,则集群的元数据将变为只读。您仍然可以从分片读取和写入数据,但是在副本集可以选择主副本之前,不会发生任何块迁移或块拆分。
在分片群集中,mongod和mongos实例监视分片群集中的副本集(例如,分片副本集,配置服务器副本集)。
如果所有配置服务器都不可用,则群集可能无法运行。为了确保配置服务器保持可用和完整,配置服务器的备份至关重要。与集群中存储的数据相比,配置服务器上的数据很小,并且配置服务器的活动负载相对较低。
对于 3.2 分片群集,如果监视配置服务器副本集的连续不成功尝试次数超过replMonitorMaxFailedChecks参数值,则在重新启动实例之前,无法监视mongos或mongod实例。解决方法请参见MongoDB 3.2。
有关更多信息,请参见配置服务器副本集成员不可用。
分片群集元数据
配置服务器将元数据存储在Config Database中。
Important
在配置服务器上进行任何维护之前,请始终备份config
数据库。
要访问config
数据库,请从mongo shell 发出以下命令:
use config
通常,您永远不应*直接编辑config
数据库的内容。 config
数据库包含以下集合:
分片群集安全性
使用Internal Authentication来增强群集内部的安全性,并防止未经授权的群集组件访问群集。您必须使用适当的安全设置启动群集中的每个mongod,以强制执行内部身份验证。