Mongodb 集群分片部署
2012-12-18 10:58
931 查看
一. Mongodb 集群分片部署
分片部署是mongodb数据高可用的方案之一,这里讲的分片就是集群中的单个节点或者节点的集合。
mongoDB支持在多个机器中通过异步复制达到故障转移和实现冗余。多机器中同一时刻只有一台是用于写操作。正是由于这个情况,为mongoDB提供了数据一致性的保障。担当主角色的机器能把读操作分发给slaves/secondaries。
MongoDB
的数据分块称为 chunk。每个 chunk
都是 Collection
中一段连续的数据记录,通常最大尺寸是 200MB,超出则生成新的数据块。
要构建一个 MongoDB Sharding Cluster(集群分片部署),需要三种角色:
Shard Server: mongod
实例,每个shard由一个或多个mongod进程组成,用于存储实际的数据块。
Config Server: mongod
实例,存储了整个 Cluster Metadata,包括每个Shard的信息和chunks信息。
Route Server: mongos
实例,前端路由,客户端由此接入,且让整个集群看上去像单一进程数据库。
Route
转发请求到实际的目标服务进程,并将多个结果合并回传给客户端。Route
本身并不存储任何数据和状态,仅在启动时从 Config Server
获取信息。Config Server
上的任何变动都会传递给所有的 Route Process。
在实际使用中,为了获取高可用、高性能的集群方案,会将 Shard Server
部署成 Replica Sets。
其中shard1,shard2…..这些就是上面说到的Shard Server,每个shard就是一个分片,分片最好部署到不同的机器上,这样才能有效解决单台服务器压力过大,或者宕机导致整个应用停止的问题。而且分片之间建议部署到同一个高速局域网中,这样才能有效提高数据在分片中的共享能力。如果分片之间的网络不是很理想,直接影响mongodb的查询能力。
其中 replica set就是多个shard的集合。
每台分片服务器需要个config server
即配置服务器
Mongos就是Route Server
即前端路由,接收来自客户端的所有数据请求,比如路由服务的IP是192.168.0.153:20000
这个应用程序中连接mongodb数据库的地址就是这个。
二.部署方案
用一台机器模拟集群分片部署,我只创建了一个分片,及set1,其中分片中由两个mongod进程组成。
第一步:启动分片数据服务Shard1
(replSet set1)
192.168.2.218:10001
对应a.bat
mongod --shardsvr --dbpath E:\mongodbShared\a --logpath E:\mongodbShared\a\log\a.log --port 10001 --replSet set1
192.168.2.218:10002 对应 b.bat
mongod --shardsvr --dbpath E:\mongodbShared\b --logpath E:\mongodbShared\b\log\b.log --port 10002 --replSet set1
192.168.2.218:10003
决策服务对应c.bat
只负责在某个node down掉后,进行vote选举新的master,它们本身并不存储数据备份
mongod --shardsvr --dbpath E:\mongodbShared\c --logpath E:\mongodbShared\c\log\c.log --port 10003 --replSet set1
第二步:配置10001
和 10002 这两个服务之间的关系及决策服务。
打开命令行
输入mongo --port 10001
输入:
config={_id:'set1',members:[{_id:0,host:'192.168.2.218:10001'},{_id:1,host:'192.168.2.218:10002'},{_id:2,host:'192.168.2.218:10003',arbiterOnly:true}]}
注意:其中10003这里我加一个arbiterOnly:true
表明这是决策服务的意思
提示:
输入:rs.initiate(config)
进行配置的初始化
提示:
标明初始化成功,可以通过>rs.status()命令来查看这个分片的配置信息。
在其中可以看见这个分片名称即“set1”及其成员的信息,其中需要注意的是stateStr属性,可以看出在这个分片中,哪个服务是主服务primary哪个是辅助服务,哪个是决策服务。其中的health表示当前服务的状态,等于1就是正常状态。
第三步:启动配置服务器
192.168.2.218:20000
对应 config.bat
mongod --configsvr --dbpath E:\mongodbShared\config --logpath E:\mongodbShared\config\log\config.log
--port 20000
第四步:启动路由服务
192.168.2.218:30000 对应 route.bat
mongos --chunkSize 1 --configdb "192.168.2.218:20000" --logpath
E:\mongodbShared\route\log\route.log –port 30000
多台机器时mongos --configdb 192.168.0.12:20000,192.168.0.13:20000,192.168.0.14:20000 --port 30000 --chunkSize 1 --logpath c:\mongodb\data\mongos.log --logappend
其中
–chunkSize 块大小 1M
和配置服务器的地址
第五步:配置分片与分片的关系及配置集群部署哪个数据库
连接到路由服务上
命令行
输入:mongo –port 30000
>
use admin
> db.runCommand({addshard:'set1/192.168.2.218:10001,192.168.2.218:10002'})
> db.runCommand({enablesharding:'test'})
> db.runCommand({listshards:1})
> printShardingStatus()
> db.runCommand({shardcollection:'test.test', key:{_id:1}, unique : true})
到此集群分片部署完毕。
分片部署是mongodb数据高可用的方案之一,这里讲的分片就是集群中的单个节点或者节点的集合。
mongoDB支持在多个机器中通过异步复制达到故障转移和实现冗余。多机器中同一时刻只有一台是用于写操作。正是由于这个情况,为mongoDB提供了数据一致性的保障。担当主角色的机器能把读操作分发给slaves/secondaries。
MongoDB
的数据分块称为 chunk。每个 chunk
都是 Collection
中一段连续的数据记录,通常最大尺寸是 200MB,超出则生成新的数据块。
要构建一个 MongoDB Sharding Cluster(集群分片部署),需要三种角色:
Shard Server: mongod
实例,每个shard由一个或多个mongod进程组成,用于存储实际的数据块。
Config Server: mongod
实例,存储了整个 Cluster Metadata,包括每个Shard的信息和chunks信息。
Route Server: mongos
实例,前端路由,客户端由此接入,且让整个集群看上去像单一进程数据库。
Route
转发请求到实际的目标服务进程,并将多个结果合并回传给客户端。Route
本身并不存储任何数据和状态,仅在启动时从 Config Server
获取信息。Config Server
上的任何变动都会传递给所有的 Route Process。
在实际使用中,为了获取高可用、高性能的集群方案,会将 Shard Server
部署成 Replica Sets。
其中shard1,shard2…..这些就是上面说到的Shard Server,每个shard就是一个分片,分片最好部署到不同的机器上,这样才能有效解决单台服务器压力过大,或者宕机导致整个应用停止的问题。而且分片之间建议部署到同一个高速局域网中,这样才能有效提高数据在分片中的共享能力。如果分片之间的网络不是很理想,直接影响mongodb的查询能力。
其中 replica set就是多个shard的集合。
每台分片服务器需要个config server
即配置服务器
Mongos就是Route Server
即前端路由,接收来自客户端的所有数据请求,比如路由服务的IP是192.168.0.153:20000
这个应用程序中连接mongodb数据库的地址就是这个。
二.部署方案
用一台机器模拟集群分片部署,我只创建了一个分片,及set1,其中分片中由两个mongod进程组成。
第一步:启动分片数据服务Shard1
(replSet set1)
192.168.2.218:10001
对应a.bat
mongod --shardsvr --dbpath E:\mongodbShared\a --logpath E:\mongodbShared\a\log\a.log --port 10001 --replSet set1
192.168.2.218:10002 对应 b.bat
mongod --shardsvr --dbpath E:\mongodbShared\b --logpath E:\mongodbShared\b\log\b.log --port 10002 --replSet set1
192.168.2.218:10003
决策服务对应c.bat
只负责在某个node down掉后,进行vote选举新的master,它们本身并不存储数据备份
mongod --shardsvr --dbpath E:\mongodbShared\c --logpath E:\mongodbShared\c\log\c.log --port 10003 --replSet set1
第二步:配置10001
和 10002 这两个服务之间的关系及决策服务。
打开命令行
输入mongo --port 10001
输入:
config={_id:'set1',members:[{_id:0,host:'192.168.2.218:10001'},{_id:1,host:'192.168.2.218:10002'},{_id:2,host:'192.168.2.218:10003',arbiterOnly:true}]}
注意:其中10003这里我加一个arbiterOnly:true
表明这是决策服务的意思
提示:
输入:rs.initiate(config)
进行配置的初始化
提示:
标明初始化成功,可以通过>rs.status()命令来查看这个分片的配置信息。
在其中可以看见这个分片名称即“set1”及其成员的信息,其中需要注意的是stateStr属性,可以看出在这个分片中,哪个服务是主服务primary哪个是辅助服务,哪个是决策服务。其中的health表示当前服务的状态,等于1就是正常状态。
第三步:启动配置服务器
192.168.2.218:20000
对应 config.bat
mongod --configsvr --dbpath E:\mongodbShared\config --logpath E:\mongodbShared\config\log\config.log
--port 20000
第四步:启动路由服务
192.168.2.218:30000 对应 route.bat
mongos --chunkSize 1 --configdb "192.168.2.218:20000" --logpath
E:\mongodbShared\route\log\route.log –port 30000
多台机器时mongos --configdb 192.168.0.12:20000,192.168.0.13:20000,192.168.0.14:20000 --port 30000 --chunkSize 1 --logpath c:\mongodb\data\mongos.log --logappend
其中
–chunkSize 块大小 1M
和配置服务器的地址
第五步:配置分片与分片的关系及配置集群部署哪个数据库
连接到路由服务上
命令行
输入:mongo –port 30000
>
use admin
> db.runCommand({addshard:'set1/192.168.2.218:10001,192.168.2.218:10002'})
> db.runCommand({enablesharding:'test'})
> db.runCommand({listshards:1})
> printShardingStatus()
> db.runCommand({shardcollection:'test.test', key:{_id:1}, unique : true})
到此集群分片部署完毕。
相关文章推荐
- MongoDB分片集群部署
- 在Docker上部署mongodb分片副本集群。
- [原创]在Docker上部署mongodb分片副本集群。
- mongodb多节点部署 分片部署 分片集群
- MongoDB在windows平台分片集群部署
- Mongodb Replica Sets + Sharding 分片集群架构部署
- MongoDB部署实战(一)MongoDB在windows平台分片集群部署
- 安装部署MONGODB分片集群
- 如何部署MongoDB分片集群?
- 部署MongoDB分片集群步骤
- mongodb分布式集群部署,集群分片策略
- mongoDB研究笔记:分片集群部署
- mongodb集群分片部署实践
- MongoDB 3.2.7 for rhel6.4 副本集-分片集群部署
- 配置MongoDB3.04集群分片
- mongodb学习记录---集群分片Shard_1
- 配置MongoDB集群分片
- 配置MongoDB3.04集群分片
- MongoDB健壮集群——用副本集做分片
- MongoDB的分片集群搭建