MongoDB Config Servers

原文

IMPORTANT:在MongoDB3.4以后 ,使用mongod實(shí)例作為config servers已被棄用。在3.4以后,你必須將你的config server從SCCC升級(jí)到CSRS。

Config servers持有集群的元數(shù)據(jù)。元數(shù)據(jù)反應(yīng)了集群里所有數(shù)據(jù)和組建的狀態(tài)。元數(shù)據(jù)還包括了每個(gè)碎片的chunks list和chunks 定義的范圍。

mongos實(shí)例緩存這些數(shù)據(jù)用于將讀寫操作路由到正確的碎片上。當(dāng)集群的元數(shù)據(jù)發(fā)生改變的時(shí)候, mongos會(huì)更新緩存,例如Chunk Splits or adding a shard。碎片也是從config servers里面讀取chunk的元數(shù)據(jù)。

config server也保存集群里的認(rèn)證配置,例如 Role-Based Access Control or internal authentication。

MongoDB同時(shí)也使用config server來(lái)管理分布式鎖。

每一個(gè)集群必須擁有自己唯一的config servers。不要在不同的集群里使用一樣的config servers。

在config servers 上進(jìn)行權(quán)限操作或許會(huì)對(duì)集群的性能和可靠性造成重大影響。根據(jù)被影響的config servers的數(shù)量,一段時(shí)間內(nèi),集群可能只能進(jìn)行讀取操作甚至offline。

Replica Set Config Servers

在MongoDB 3.2開始,集群的config servers可以部署為replica set,替代以前的SCCC。當(dāng)config server利用replica set的標(biāo)準(zhǔn)來(lái)進(jìn)行讀寫操作的時(shí)候,可以提高config servers的一致性。集群擁有3個(gè)以上config servers運(yùn)行在已經(jīng)擁有50個(gè)成員的replica set的情況除外。要把config server是運(yùn)行在replica set上,config servers 必須使用WiredTiger storage engine.

replica set如要承當(dāng)config servers的載體,該replica set有以下限制:

  • 不能有arbiters成員
  • 不能有 delayed 成員
  • 必須建立indexes(i.e. 任何成員的buildIndexes必須設(shè)置為true)

Config servers 的讀寫操作

config servers 必須持有admin數(shù)據(jù)庫(kù)和config database

在Config servers上寫入

admin數(shù)據(jù)庫(kù)包含身份驗(yàn)證和其他像system.* collections的授權(quán)集合供內(nèi)部使用。
config database包含含有集群元數(shù)據(jù)的集合。當(dāng)元數(shù)據(jù)發(fā)生改變的時(shí)候,MongoDB將數(shù)據(jù)寫入 config database,例如在chunk migration or a chunk split.之后。

用戶在正常操作或維護(hù)的過(guò)程中應(yīng)該避免直接將數(shù)據(jù)寫入 config database。

當(dāng)寫入到 config database的時(shí)候,MongoDB將 write concern字段設(shè)置為"majority"。

從Config Servers讀取

MongoDB從admin數(shù)據(jù)庫(kù)讀取身份認(rèn)證或者授權(quán)或者其他內(nèi)部使用。

mongos將元數(shù)據(jù)改變之前或者之后,MongoDB會(huì)從config database讀取,例如在chunk遷移之后。碎片同樣也從config database讀取chunk元數(shù)據(jù)。

當(dāng)從replica set config servers(CSRS)讀取數(shù)據(jù),MongoDB將使用 Read Concern"majority".字段

Config server的可用性

如果config server的replica set沒(méi)有并無(wú)法選舉出primary成員,集群的元信息狀態(tài)變成只讀。你仍然可以在碎片上進(jìn)行讀寫操作,但在replica set選舉出一個(gè)primary之前,無(wú)法進(jìn)行chunk遷徙或者chunk split。

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

如果所有的config servers都不可用了,那么該集群就廢了。為了確保config servers的可用性和完整性,對(duì)config servers進(jìn)行備份是至關(guān)重要的。config servers的數(shù)據(jù)比集群里的數(shù)據(jù)小很多,并且相對(duì)負(fù)載較低。

對(duì)于MongDB3.2版本的集群,如果嘗試監(jiān)控config servers的replica set的連續(xù)失敗次數(shù)超過(guò) replMonitorMaxFailedChecks的值,那么mongos或者mongd的監(jiān)控機(jī)制在重啟前無(wú)法使用。

集群元數(shù)據(jù)

Config servers將元數(shù)據(jù)保存在Config database。

在對(duì)config server進(jìn)行任何形式的維護(hù)前先備份config database。

使用以下命令訪問(wèn)config database:

use config

通常情況下,你不應(yīng)該直接編輯config database里的內(nèi)容。config database包含以下內(nèi)容:

參照 Config Database.獲得以上集合和集合的權(quán)限的更多資訊。

集合安全性

使用 Internal Authentication來(lái)保證集群內(nèi)部的安全性和避免未經(jīng)授權(quán)用戶訪問(wèn)集群。為了保證集群內(nèi)部安全性,你必須為集群的每個(gè)mongod實(shí)例開啟身份驗(yàn)證。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容