MongoDB Config Servers

原文

IMPORTANT:在MongoDB3.4以后 ,使用mongod实例作为config servers已被弃用。在3.4以后,你必须将你的config server从SCCC升级到CSRS。

Config servers持有集群的元数据。元数据反应了集群里所有数据和组建的状态。元数据还包括了每个碎片的chunks list和chunks 定义的范围。

mongos实例缓存这些数据用于将读写操作路由到正确的碎片上。当集群的元数据发生改变的时候, mongos会更新缓存,例如Chunk Splits or adding a shard。碎片也是从config servers里面读取chunk的元数据。

config server也保存集群里的认证配置,例如 Role-Based Access Control or internal authentication

MongoDB同时也使用config server来管理分布式锁。

每一个集群必须拥有自己唯一的config servers。不要在不同的集群里使用一样的config servers。

在config servers 上进行权限操作或许会对集群的性能和可靠性造成重大影响。根据被影响的config servers的数量,一段时间内,集群可能只能进行读取操作甚至offline。

Replica Set Config Servers

在MongoDB 3.2开始,集群的config servers可以部署为replica set,替代以前的SCCC。当config server利用replica set的标准来进行读写操作的时候,可以提高config servers的一致性。集群拥有3个以上config servers运行在已经拥有50个成员的replica set的情况除外。要把config server是运行在replica set上,config servers 必须使用WiredTiger storage engine.

replica set如要承当config servers的载体,该replica set有以下限制:

  • 不能有arbiters成员
  • 不能有 delayed 成员
  • 必须建立indexes(i.e. 任何成员的buildIndexes必须设置为true)

Config servers 的读写操作

config servers 必须持有admin数据库和config database

在Config servers上写入

admin数据库包含身份验证和其他像system.* collections的授权集合供内部使用。
config database包含含有集群元数据的集合。当元数据发生改变的时候,MongoDB将数据写入 config database,例如在chunk migration or a chunk split.之后。

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

当写入到 config database的时候,MongoDB将 write concern字段设置为”majority”。

从Config Servers读取

MongoDB从admin数据库读取身份认证或者授权或者其他内部使用。

mongos将元数据改变之前或者之后,MongoDB会从config database读取,例如在chunk迁移之后。碎片同样也从config database读取chunk元数据。

当从replica set config servers(CSRS)读取数据,MongoDB将使用 Read Concern"majority".字段

Config server的可用性

如果config server的replica set没有并无法选举出primary成员,集群的元信息状态变成只读。你仍然可以在碎片上进行读写操作,但在replica set选举出一个primary之前,无法进行chunk迁徙或者chunk split。

在集群中,mongod和mongos监控集群里的replica set。(e.g. 碎片replica set, config server replica set)

如果所有的config servers都不可用了,那么该集群就废了。为了确保config servers的可用性和完整性,对config servers进行备份是至关重要的。config servers的数据比集群里的数据小很多,并且相对负载较低。

对于MongDB3.2版本的集群,如果尝试监控config servers的replica set的连续失败次数超过 replMonitorMaxFailedChecks的值,那么mongos或者mongd的监控机制在重启前无法使用。

集群元数据

Config servers将元数据保存在Config database。

在对config server进行任何形式的维护前先备份config database。

使用以下命令访问config database:

use config

通常情况下,你不应该直接编辑config database里的内容。config database包含以下内容:

参照 Config Database.获得以上集合和集合的权限的更多资讯。

集合安全性

使用 Internal Authentication来保证集群内部的安全性和避免未经授权用户访问集群。为了保证集群内部安全性,你必须为集群的每个mongod实例开启身份验证。

    原文作者:ChanZeeBm
    原文地址: https://www.jianshu.com/p/f57add23b474
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞