真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

mongodb分片群集怎么配置?

配置MongoDB分片群集
Sharding cluster介紹
這是一種可以水平擴展的模式,在數(shù)據(jù)量很大時特給力,數(shù)據(jù)量很大時一般會采用這種架構(gòu)去構(gòu)建monodb系統(tǒng)。

創(chuàng)新互聯(lián)公司服務(wù)項目包括閬中網(wǎng)站建設(shè)、閬中網(wǎng)站制作、閬中網(wǎng)頁制作以及閬中網(wǎng)絡(luò)營銷策劃等。多年來,我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢、行業(yè)經(jīng)驗、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,閬中網(wǎng)站推廣取得了明顯的社會效益與經(jīng)濟效益。目前,我們服務(wù)的客戶以成都為中心已經(jīng)輻射到閬中省份的部分城市,未來相信會繼續(xù)擴大服務(wù)區(qū)域并繼續(xù)獲得客戶的支持與信任!

要構(gòu)建一個 MongoDB Sharding Cluster,需要三種角色:
Shard Server: mongod 實例,用于存儲實際的數(shù)據(jù)塊,實際生產(chǎn)環(huán)境中一個shard server角色可由幾臺機器組個一個relica set承擔(dān),防止主機單點故障
Config Server: mongod 實例,存儲了整個 Cluster Metadata,其中包括 chunk 信息。
Route Server: mongos 實例,前端路由,客戶端由此接入,且讓整個集群看上去像單一數(shù)據(jù)庫,前端應(yīng)用可以透明使用。

Sharding架構(gòu)圖:

實際環(huán)境架構(gòu)
本例架構(gòu)示例圖:

1.分別在10.10.1.[107~109]機器運行一個mongod實例(稱為mongod shard11,mongod shard12,mongod shard13)組織replica set1,作為cluster的shard1
2.分別在10.10.1.[107~109]機器運行一個mongod實例(稱為mongod shard21,mongod shard22,mongod shard23)組織replica set2,作為cluster的shard2
3.分別在10.10.2.[89~91]機器運行一個mongod實例(稱為mongod shard31,mongod shard32,mongod shard33)組織replica set3,作為cluster的shard3
4.分別在10.10.2.[89~91]機器運行一個mongod實例(稱為mongod shard41,mongod shard42,mongod shard43)組織replica set4,作為cluster的shard4
5.1.107、1.108、2.89機器運行一個mongod實例,作為3個config server
6.每臺機器運行一個mongs進(jìn)程,用于客戶端連接
主機  IP  端口信息
Server1 10.10.1.107 mongod shard11:27017
mongod shard21:27018
mongod config1:20000
mongs1:30000
Server2 10.10.1.108 mongod shard12:27017
mongod shard22:27018
mongod config2:20000
mongs2:30000
Server3 10.10.1.109 mongod shard13:27017
mongod shard23:27018
mongs3:30000
Server4 10.10.2.89  mongod shard31:27017
mongod shard41:27018
mongod config3:20000
mongs4:30000
Server5 10.10.2.90  mongod shard32:27017
mongod shard42:27018
mongs5:30000
Server6 10.10.2.91  mongod shard33:27017
mongod shard43:27018
mongs6:30000

各節(jié)點hosts文件添加
#shard1
10.10.1.107 MongoDB_shard11.itings.com  
10.10.1.108 MongoDB_shard12.itings.com
10.10.1.109 MongoDB_shard13.itings.com

#shard2
10.10.1.107 MongoDB_shard21.itings.com  
10.10.1.108 MongoDB_shard22.itings.com 
10.10.1.109 MongoDB_shard23.itings.com 

#shard3
10.10.2.89  MongoDB_shard31.itings.com  
10.10.2.90  MongoDB_shard32.itings.com 
10.10.2.91  MongoDB_shard33.itings.com 

#shard4
10.10.2.89  MongoDB_shard41.itings.com  
10.10.2.90  MongoDB_shard42.itings.com 
10.10.2.91  MongoDB_shard43.itings.com 

#config1 
10.10.1.107 MongoDB_config1.itings.com  
10.10.1.108 MongoDB_config2.itings.com 
10.10.2.89  MongoDB_config3.itings.com 

#mongos
10.10.1.107 MongoDB_mongos1.itings.com  
10.10.1.108 MongoDB_mongos2.itings.com 
10.10.1.109 MongoDB_mongos3.itings.com 
10.10.2.89  MongoDB_mongos4.itings.com  
10.10.2.90  MongoDB_mongos5.itings.com 
10.10.2.91  MongoDB_mongos6.itings.com

軟件準(zhǔn)備
1.安裝monodb軟件
wget http://fastdl.mongodb.org/linux/mongodb-linux-x86_64-2.4.9.tgz
tar xvzf mongodb-linux-x86_64-2.4.9.tgz
mv mongodb-linux-x86_64-2.4.9 /usr/local/mongodb

安裝好后,目錄結(jié)構(gòu)如下:
tree mongodb-linux-x86_64-2.4.9
mongodb-linux-x86_64-1.6.2
|-- GNU-AGPL-3.0
|-- README
|-- THIRD-PARTY-NOTICES
-- bin
|-- bsondump
|-- mongo
|-- mongod
|-- mongodump
|-- mongoexport
|-- mongofiles
|-- mongoimport
|-- mongorestore
|-- mongos
|-- mongosniff
-- mongostat
1 directory, 14 files

2.創(chuàng)建數(shù)據(jù)目錄
根據(jù)本例sharding架構(gòu)圖所示,在各臺sever上創(chuàng)建shard數(shù)據(jù)文件目錄
Server1:
mkdir -p  /data/mongodb/data/shard11
mkdir -p  /data/mongodb/data/shard21

Server2:
mkdir -p  /data/mongodb/data/shard12
mkdir -p  /data/mongodb/data/shard22

Server3:
mkdir -p  /data/mongodb/data/shard13
mkdir -p  /data/mongodb/data/shard23

Server4:
mkdir -p  /data/mongodb/data/shard31
mkdir -p  /data/mongodb/data/shard41

Server5:
mkdir -p  /data/mongodb/data/shard32
mkdir -p  /data/mongodb/data/shard42
Server6:
mkdir -p  /data/mongodb/data/shard33
mkdir -p  /data/mongodb/data/shard43

配置relica sets
1.配置replica sets:
Server1:
/usr/local/mongodb/bin/mongod  --shardsvr --replSet shard1 --port 27017 --dbpath /data/mongodb/data/shard11 --oplogSize 8192 --logpath /data/mongodb/data/shard11.log --logappend --fork

/usr/local/mongodb/bin/mongod  --shardsvr --replSet shard2 --port 27018 --dbpath /data/mongodb/data/shard21 --oplogSize 8192 --logpath /data/mongodb/data/shard21.log --logappend --fork

Server2:
/usr/local/mongodb/bin/mongod  --shardsvr --replSet shard1 --port 27017 --dbpath /data/mongodb/data/shard12 --oplogSize 8192 --logpath /data/mongodb/data/shard12.log --logappend --fork

/usr/local/mongodb/bin/mongod  --shardsvr --replSet shard2 --port 27018 --dbpath /data/mongodb/data/shard22 --oplogSize 8192 --logpath /data/mongodb/data/shard22.log --logappend --fork

Server3:
/usr/local/mongodb/bin/mongod  --shardsvr --replSet shard1 --port 27017 --dbpath /data/mongodb/data/shard13 --oplogSize 8192 --logpath /data/mongodb/data/shard13.log --logappend --fork

/usr/local/mongodb/bin/mongod  --shardsvr --replSet shard2 --port 27018 --dbpath /data/mongodb/data/shard23 --oplogSize 8192 --logpath /data/mongodb/data/shard23.log --logappend --fork

Server4:
/usr/local/mongodb/bin/mongod  --shardsvr --replSet shard3 --port 27017 --dbpath /data/mongodb/data/shard31 --oplogSize 8192 --logpath /data/mongodb/data/shard31.log --logappend --fork

/usr/local/mongodb/bin/mongod  --shardsvr --replSet shard4 --port 27018 --dbpath /data/mongodb/data/shard41 --oplogSize 8192 --logpath /data/mongodb/data/shard41.log --logappend --fork

Server5:
/usr/local/mongodb/bin/mongod  --shardsvr --replSet shard3 --port 27017 --dbpath /data/mongodb/data/shard32 --oplogSize 8192 --logpath /data/mongodb/data/shard32.log --logappend --fork

/usr/local/mongodb/bin/mongod  --shardsvr --replSet shard4 --port 27018 --dbpath /data/mongodb/data/shard42 --oplogSize 8192 --logpath /data/mongodb/data/shard42.log --logappend --fork

Server6:
/usr/local/mongodb/bin/mongod  --shardsvr --replSet shard3 --port 27017 --dbpath /data/mongodb/data/shard33 --oplogSize 8192 --logpath /data/mongodb/data/shard33.log --logappend --fork

/usr/local/mongodb/bin/mongod  --shardsvr --replSet shard4 --port 27018 --dbpath /data/mongodb/data/shard43 --oplogSize 8192 --logpath /data/mongodb/data/shard43.log --logappend --fork

初始化replica set
用mongo連接其中一個mongod,執(zhí)行:
/usr/local/mongodb/bin/mongo --host 10.10.1.107 --port 27017
config = {_id: 'shard1', members: [
{_id: 0, host: 'MongoDB_shard11.itings.com:27017'},
{_id: 1, host: 'MongoDB_shard12.itings.com:27017'},
{_id: 2, host: 'MongoDB_shard13.itings.com:27017'}]
}

rs.initiate(config);

/usr/local/mongodb/bin/mongo --host 10.10.1.107 --port 27018
config = {_id: 'shard2', members: [
{_id: 0, host: 'MongoDB_shard21.itings.com:27018'},
{_id: 1, host: 'MongoDB_shard22.itings.com:27018'},
{_id: 2, host: 'MongoDB_shard23.itings.com:27018'}]
}
rs.initiate(config);

初始化節(jié)點
/usr/local/mongodb/bin/mongo --host 10.10.2.89 --port 27017
config = {_id: 'shard3', members: [
{_id: 0, host: 'MongoDB_shard31.itings.com:27017'},
{_id: 1, host: 'MongoDB_shard32.itings.com:27017'},
{_id: 2, host: 'MongoDB_shard33.itings.com:27017'}]
}
rs.initiate(config);

/usr/local/mongodb/bin/mongo --host 10.10.2.89 --port 27018
初始化節(jié)點
config = {_id: 'shard4', members: [
{_id: 0, host: 'MongoDB_shard41.itings.com:27018'},
{_id: 1, host: 'MongoDB_shard42.itings.com:27018'},
{_id: 2, host: 'MongoDB_shard43.itings.com:27018'}]
}
rs.initiate(config);
配置三臺config server
Server1機器
mkdir -p  /data/mongodb/data/config
啟動configserver1
/usr/local/mongodb/bin/mongod --configsvr --dbpath /data/mongodb/data/config --port 20000 --logpath /data/mongodb/data/config.log --logappend --fork

Server2機器
mkdir -p  /data/mongodb/data/config
啟動configserver2
/usr/local/mongodb/bin/mongod --configsvr --dbpath /data/mongodb/data/config --port 20000 --logpath /data/mongodb/data/config.log --logappend --fork

Server4機器
mkdir -p  /data/mongodb/data/config
啟動configserver3
/usr/local/mongodb/bin/mongod --configsvr --dbpath /data/mongodb/data/config --port 20000 --logpath /data/mongodb/data/config.log --logappend --fork

配置mongs
所有機器都啟動mongos
/usr/local/mongodb/bin/mongos --configdb MongoDB_config1.itings.com:20000,MongoDB_config2.itings.com:20000,MongoDB_config3.itings.com:20000 --port 30000 --chunkSize 5 --logpath /data/mongodb/data/mongos.log --logappend --fork
#mongs不需要dbpath
Configuring the Shard Cluster
連接到其中一個mongos進(jìn)程,并切換到admin數(shù)據(jù)庫做以下配置
1.連接到mongs,并切換到admin
/usr/local/mongodb/bin/mongo MongoDB_mongos1.itings.com:30000/admin

2.加入shards
db.runCommand( { addshard : "shard1/MongoDB_shard11.itings.com:27017,MongoDB_shard12.itings.com:27017,MongoDB_shard13.itings.com:27017",name:"s1"} );
db.runCommand( { addshard : "shard2/MongoDB_shard21.itings.com:27018,MongoDB_shard22.itings.com:27018,MongoDB_shard23.itings.com:27018",name:"s2"} );
db.runCommand( { addshard : "shard3/MongoDB_shard31.itings.com:27017,MongoDB_shard32.itings.com:27017,MongoDB_shard33.itings.com:27017",name:"s3"} );
db.runCommand( { addshard : "shard4/MongoDB_shard41.itings.com:27018,MongoDB_shard42.itings.com:27018,MongoDB_shard43.itings.com:27018",name:"s4"} );

獲得分片概要信息:
db.printShardingStatus();

3.可選參數(shù)
Name:用于指定每個shard的名字,不指定的話系統(tǒng)將自動分配
maxSize:指定各個shard可使用的最大磁盤空間,單位megabytes
樣例:
db.runCommand( { addshard : "shard1/MongoDB_shard11.itings.com:27017,MongoDB_shard12.itings.com:27017,MongoDB_shard13.itings.com:27017",name:"s1",maxSize: 512000} );

獲得分片概要信息:
db.printShardingStatus();
db.user.getShardDistribution();
db.runCommand( { listshards : 1 } );

查看各collection的狀態(tài)
db.printCollectionStats()

激活分片樣例
db.runCommand({"enablesharding" : "kaola_play"});
db.runCommand( { shardcollection : "kaola_play.user",key : {_id: 1} } );
附錄:mongodb運行模式介紹
?單機模式
?Replication模式,這又可分為Master-Slave Replication和Replica Sets
?Sharding模式

1.單機模式
這里有目前的mongodb 1.6.2版本作介紹,mongodb安裝后目錄結(jié)構(gòu)如下圖所示非常簡單,所占空間也不到100M

通過執(zhí)行bin/mongod –dbpath <數(shù)據(jù)文件目錄>就可以啟動mongodb實例(暫且也稱為實例),與MySQL類似,一個mongodb實例里可以創(chuàng)建多個數(shù)據(jù)庫。同一臺主機也可以起多個mongodb實例

1.Replication模式
MongoDB提供在sever之間異步數(shù)據(jù)復(fù)制功能,用于failover和數(shù)據(jù)冗余。從1.6版本起多了replica sets功能,1.6版本之前只有Master/Slave replication結(jié)構(gòu)
?Mster-Slave Relication   跟mysql的M/S結(jié)構(gòu)很類似
?Relica Sets        1.6版本開始推出的新功能,能自動故障切換

關(guān)于Mster-Slave Relication和 Relica Sets,怎么選擇呢?
Which should I use?
?if using ?if need automatic fail-over and recovery (easy administration): replica sets  想做倒自動故障切換,那就用replica sets
?if using --auth (security) or --slavedelay : for now, master/slave  想指定slave延遲時間,就用M/S
?if using sharding : either, but replica sets are best for clusters that are not small  用sharding架構(gòu)時
?if risk averse : master/slave (replica sets are new to v1.6.0)  顧慮風(fēng)險的話,用m/s

個人理解,從1.6版本推出relica sets開始,逐漸推薦用relica sets這種模式,能自動故障恢復(fù),sharding模式中也會用到

2.Sharding模式
這是一種可以水平擴展的模式,在數(shù)據(jù)量很大時特給力,一般企業(yè)級應(yīng)用中都會采用這種架構(gòu)去構(gòu)建monodb系統(tǒng)。

要構(gòu)建一個 MongoDB Sharding Cluster,需要三種角色:
Shard Server: mongod 實例,用于存儲實際的數(shù)據(jù)塊,實際生產(chǎn)環(huán)境中一個shard server可由幾臺機器組個一個relica set承擔(dān),防止主機單點故障
Config Server: mongod 實例,存儲了整個 Cluster Metadata,其中包括 chunk 信息。
Route Server: mongos 實例,前端路由,客戶端由此接入,且讓整個集群看上去像單一數(shù)據(jù)庫,前端應(yīng)用可以透明使用。


分享標(biāo)題:mongodb分片群集怎么配置?
標(biāo)題路徑:http://weahome.cn/article/iipdio.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部