mongodb集群——配置服務器放分片meta信息,說明meta里包含了哪些數據信息


在搭建分片之前,先了解下分片中各個角色的作用。

① 配置服務器。是一個獨立的mongod進程,保存集群和分片的元數據,即各分片包含了哪些數據的信息。最先開始建立,啟用日志功能。像啟動普通的mongod一樣啟動配置服務器,指定configsvr選項。
不需要太多的空間和資源,配置服務器的1KB空間相當於真實數據的200MB。保存的只是數據的分布表。當服務不可用,則變成只讀,無法分塊、遷移數據。 ② 路由服務器。即mongos,起到一個路由的功能,供程序連接。本身不保存數據,在啟動時從配置服務器加載集群信息,開啟mongos進程需要知道配置服務器的地址,指定configdb選項。 ③ 分片服務器。是一個獨立普通的mongod進程,保存數據信息。可以是一個副本集也可以是單獨的一台服務器。

      在部署之前先明白片鍵的意義,一個好的片鍵對分片至關重要。片鍵必須是一個索引,數據根據這個片鍵進行拆分分散。通過sh.shardCollection加會自動創建索引。一個自增的片鍵對寫入和數據均勻分布就不是很好,因為自增的片鍵總會在一個分片上寫入,后續達到某個閥值可能會寫到別的分片。但是按照片鍵查詢會非常高效。隨機片鍵對數據的均勻分布效果很好。注意盡量避免在多個分片上進行查詢。在所有分片上查詢,mongos會對結果進行歸並排序。

配置服務器官方的最新說明:

Replica Set Config Servers

在 3.4 版更改.

Starting in MongoDB 3.2, config servers for sharded clusters can be deployed as a replica set (CSRS) instead of three mirrored config servers (SCCC). Using a replica set for the config servers improves consistency across the config servers, since MongoDB can take advantage of the standard replica set read and write protocols for the config data. In addition, using a replica set for config servers allows a sharded cluster to have more than 3 config servers since a replica set can have up to 50 members. To deploy config servers as a replica set, the config servers must run the WiredTiger storage engine.

來自:http://docs.mongoing.com/manual-zh/core/sharded-cluster-config-servers.html

其想表達的核心便是使用副本集來進行配置服務器部署。

 

基本概念

mongodb-001

  • 路由(mongos)

請求的入口,所有請求都經過mongos協調和分發。通常部署多個實例,以便當一個mongos失敗時,應用層驅動可以切換到其他正常的實例上。此外也可以通過一組mongos實例實現“池”的概念,在與應用層之間增加一層用於負載均衡的代理,將請求分配到“池”中的mongos實例上。mongos實例本身並不需要磁盤空間存儲數據,它啟動時會加載config server中的配置數據到內存,當config變化時會被通知更新。

  • 配置服務器(mongod. config server)

存儲整個集群的元數據配置信息(路由、分片),mongos通過這些配置作為導向,將讀寫請求分發到不同的shard上。

  • 分片(mongod. shard)

數據庫存儲數據的組件,通過多實例達到負載均衡可伸縮目的,通過多副本主備切換達到避免單點失敗的目的。

 

具體部署step by step見:

http://www.cnblogs.com/cyhe/p/5428436.html

http://www.wanghengbin.com/2016/03/18/mongodb-shard-cluster-app/

單機分片示意(對於2.6系列支持!):http://noodle.blog.51cto.com/2925423/1748149 實測沒有問題!如果是3.4版本則有問題,出現提示config server必須是副本集,但是配置了副本集后又會遇到timeout錯誤!!!

 

我的config server配置設置成下面,並且修改了mongos的port為8888才解決了timeout錯誤!

systemLog:
   destination: file
   path: "/srv/fuck_mongo/mongodb/var/config.log"
   logAppend: false
storage:
   dbPath: "/srv/fuck_mongo/mongodb/config"
   directoryPerDB: true
processManagement:
   fork: true
net:
   port: 21001
   bindIp: 0.0.0.0
sharding:
   clusterRole: "configsvr"
replication:
   replSetName: "cfg"

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM