配置mongodb分片群集
Sharding cluster介紹
這是一種可以水平擴展的模式,在數(shù)據(jù)量很大時特給力,數(shù)據(jù)量很大時一般會采用這種架構(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)用可以透明使用。
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進程,用于客戶端連接
主機 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<br/>|-- bsondump<br/>|-- mongo<br/>|-- mongod<br/>|-- mongodump<br/>|-- mongoexport<br/>|-- mongofiles<br/>|-- mongoimport<br/>|-- mongorestore<br/>|-- mongos<br/>|-- mongosniff<br/>
-- 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進程,并切換到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 <v1.6 : master/slave 1.6版本之前,那就沒得選,只有M/S
?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)用可以透明使用。
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機、免備案服務(wù)器”等云主機租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。
當(dāng)前文章:mongodb分片群集怎么配置?-創(chuàng)新互聯(lián)
瀏覽路徑:http://www.rwnh.cn/article32/jdhpc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供用戶體驗、搜索引擎優(yōu)化、軟件開發(fā)、網(wǎng)站導(dǎo)航、App設(shè)計、定制開發(fā)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容