集群由三台服务器(假定ip地址为:serverA,serverB,serverC)组成,采用mongodb的复制集+分片(Replica Sets+Sharding) 实现集群的高可靠/高可用以及数据读写的负载均衡。 三台机器分成两个复制集,两个复制集组成一个集群的两个分片(shard1和shard2)。具体如下:
详细配置步骤如下:
1、配置shard1用到复制集 s1:
在serverA上:mongod --replSet s1 --port 27020 --dbpath=/data/mongo/s1_1/db --logpath=/data/mongo/s1_1/log/mongo.log --logappend --fork
在serverB上:mongod --replSet s1 --port 27020 --dbpath=/data/mongo/s1_2/db --logpath=/data/mongo/s1_2/log/mongo.log --logappend --fork
在serverC上:mongod --replSet s1 --port 27020 --dbpath=/data/mongo/s1_3/db --logpath=/data/mongo/s1_3/log/mongo.log --logappend --fork
连接三个节点的任一个初始化复制集s1
>use admin
>config = {_id:'s1',members:[{_id:0,host:'serverA:27020',priority:1},{_id:1,host:'serverB:27020'},{_id:2,host:'serverC:27020'}]}
>rs.initiate(config)
>rs.status()
另外对复制集s1的所有节点都执行如下命令确保所有节点都能分担读取的压力
>db.getMongo().setSlaveOk();
2、配置shard2用到复制集 s2:
在serverA上:mongod --replSet s2 --port 27021 --dbpath=/data/mongo/s2_1/db --logpath=/data/mongo/s2_1/log/mongo.log --logappend --fork
在serverB上:mongod --replSet s2 --port 27021 --dbpath=/data/mongo/s2_2/db --logpath=/data/mongo/s2_2/log/mongo.log --logappend --fork
在serverC上:mongod --replSet s2 --port 27021 --dbpath=/data/mongo/s2_3/db --logpath=/data/mongo/s2_3/log/mongo.log --logappend --fork
连接三个节点的任一个初始化复制集s2
>use admin
>config = {_id:'s2',members:[{_id:0,host:'serverA:27021'},{_id:1,host:'serverB:27021',priority:1},{_id:2,host:'serverC:27021'}]}
>rs.initiate(config)
>rs.status()
另外对复制集s2的所有节点都执行如下命令确保所有节点都能分担读取的压力
>db.getMongo().setSlaveOk();
3、配置三台Config Server:
在serverA上:mongod -fork --configsvr --dbpath /
data
/mongo/config/db --port 27018 --logpath /
data
/mongo/config/log/mongo.log --fork
在serverB上:mongod -fork --configsvr --dbpath /
data
/mongo/config/db --port 27018 --logpath /
data
/mongo/config/log/mongo.log --fork
在serverC上:mongod -fork --configsvr --dbpath /
data
/mongo/config/db --port 27018 --logpath /
data
/mongo/config/log/mongo.log --fork
4、配置三台Route Server:
在serverA上:mongos -fork --logpath /data
/mongo/route/log/mongo.log --configdb ServerA:27018,ServerB:27018,ServerC:27018 --port 27017
在serverB上:mongos -fork --
logpath /data
/mongo/route/log/mongo.log
--configdb ServerA:27018,ServerB:27018,ServerC:27018 --port 27017
在serverC上:mongos -fork --
logpath /data
/mongo/route/log/mongo.log
--configdb ServerA:27018,ServerB:27018,ServerC:27018 --port 27017
5、配置Shard Cluster:
连接任一mongos进程执行以下命令:
use admin
db.runCommand({addShard:"shard1/serverA:27020,serverB:27020,serverC:27020"})
db.runCommand({addShard:"shard2/serverA:27021,serverB:27021,serverC:27021"})
db.printShardingStatus()
6、激活数据库及集合的分片功能:
连接任一mongos进程执行以下命令:
db.runCommand({enablesharding:"testdb"})
db.runCommand({shardcollection:"testdb.collection_test",key:{_id:1}})
7、登录mongos添加用户:
use admin
db.addUser("<user>","<password>")
db.addUser("<user>","<password>",true) //添加只读用户
8、关闭三台机器的全部mongod,mongos:
sudo killall mongod
sudo killall mongos
9、生成keyfile:(每个进程的key file都保持一致)
openssl rand -base64 753 >keyfile
将生成的keyfile 拷贝到mongod/mongos 进程对应的文件夹
并执行语句更改权限:sudo chmod 600 keyfile
使用--keyFile参数指定前面生成的keyfile文件,重启三台机器全部mongod,mongos进程
在serverA上:mongod --replSet s1 --port 27020 --dbpath=/data/mongo/s1_1/db --logpath=/data/mongo/s1_1/log/mongo.log --logappend --fork --keyFile /data/mongo/s1_1/keyfile
在serverB上:mongod --replSet s1 --port 27020 --dbpath=/data/mongo/s1_2/db --logpath=/data/mongo/s1_2/log/mongo.log --logappend --fork --keyFile /data/mongo/s1_2/keyfile
在serverC上:mongod --replSet s1 --port 27020 --dbpath=/data/mongo/s1_3/db --logpath=/data/mongo/s1_3/log/mongo.log --logappend --fork --keyFile /data/mongo/s1_3/keyfile
在serverA上:mongod --replSet s2 --port 27021 --dbpath=/data/mongo/s2_1/db --logpath=/data/mongo/s2_1/log/mongo.log --logappend --fork --keyFile /data/mongo/s2_1/keyfile
在serverB上:mongod --replSet s2 --port 27021 --dbpath=/data/mongo/s2_2/db --logpath=/data/mongo/s2_2/log/mongo.log --logappend --fork --keyFile /data/mongo/s2_2/keyfile
在serverC上:mongod --replSet s2 --port 27021 --dbpath=/data/mongo/s2_3/db --logpath=/data/mongo/s2_3/log/mongo.log --logappend --fork --keyFile /data/mongo/s2_3/keyfile
在serverA上:mongod -fork --configsvr --dbpath /
data
/mongo/config/db --port 27018 --logpath /
data
/mongo/config/log/mongo.log --fork --keyFile /data/mongo/config/keyfile
在serverB上:mongod -fork --configsvr --dbpath /
data
/mongo/config/db --port 27018 --logpath /
data
/mongo/config/log/mongo.log --fork --keyFile /data/mongo/config/keyfile
在serverC上:mongod -fork --configsvr --dbpath /
data
/mongo/config/db --port 27018 --logpath /
data
/mongo/config/log/mongo.log --fork --keyFile /data/mongo/config/keyfile
在serverA上:mongos -fork --logpath /data
/mongo/route/log/mongo.log --configdb ServerA:27018,ServerB:27018,ServerC:27018 --port 27017 --keyFile /data/mongo/route/keyfile
在serverB上:mongos -fork --
logpath /data
/mongo/route/log/mongo.log
--configdb ServerA:27018,ServerB:27018,ServerC:27018 --port 27017 --keyFile /data/mongo/route/keyfile
在serverC上:mongos -fork --
logpath /data
/mongo/route/log/mongo.log
--configdb ServerA:27018,ServerB:27018,ServerC:27018 --port 27017 --keyFile /data/mongo/route/keyfile
完毕!
转自 http://www.cnblogs.com/ylh1223/archive/2013/04/23/3037301.html
相关推荐
NULL 博文链接:https://star45.iteye.com/blog/2039957
Mongodb的Replica Sets + Sharding架构(window篇)
PHP高级工程师必知必会Nginx+keepalived+MongoDB+haproxy+Sphinx实现分布式集群部署实战视频
1.分篇章进行学习,内容控制30分钟内 2.1个月疗程,不要放弃治疗哦 3.图文并茂,有问题请发到邮箱
MongoDB副本集的配置示例,过程简明易懂
图书管理系统,java+express+mongodb+nodejs+gulp.zip 图书管理系统,java+express+mongodb+nodejs+gulp.zip 图书管理系统,java+express+mongodb+nodejs+gulp.zip 图书管理系统,java+express+mongodb+nodejs+...
基于mongodb+springmvc+maven环境搭建
k8s 安装 mongodb 分片(Sharding)+ 副本集(Replica Set)
1、该资源内项目代码经过严格调试,下载即用确保可以运行! 2、该资源适合计算机相关专业(如计科、人工智能、大数据、数学、电子信息等)正在做课程设计、期末大作业和毕设项目的...基于MongoDB+Spark+ElasticSearch的电
自己电脑需要安装mongodb数据库 和mongoose ,自己在用的时候,记得要和对应数据库和表名一致
springboot整合mongodb+redis+mybatis+mysql,只有个简单的demo,配置详细。下了不后悔啊。
手把手教你搭建mongodb集群--分片
详细讲解mongodb高性能、高可用集群的搭建步骤,包括副本集与分片。每一步都有解释和说明,包括整个的集群结构,学习mongodb的不要错过这个资源
MongoDB4.2分片及副本集群搭建 MongoDB集群 MongoDB分片 MongoDB副本 MongoDB副本集群
mongodb+maven+spring+springmvc项目源码,导入eclipse可运行 mongodb单独操作源码 初学的同学可以查阅http://www.runoob.com/mongodb/mongodb-java.html
本文档是一份 MongoDB 集群的sharding模式配置实例,环境是某电信运营商的模拟环境,示例配置意义具有较高的可信度,可以作为生产环境的部署实施参考。
MongoDB MongoDB集群搭建 环境集群搭建 MongoDB MongoDB集群搭建 环境集群搭建
项目前端搭建: 使用jQuery和Bootsrap完成网站前端JS脚本和样式处理; 前后端的数据请求交互通过Ajax完成; 引入了Moment.js格式化前端页面显示时间; 2、项目后端搭建: 使用NodeJs的express框架完成电影网站后端搭建...
以 MongoDB 为例,使用 StatefulSet 完成 MongoDB 集群的创建,为每个 MongoDB 实例在共享存储中(这里采用 Ceph)申请一片存储空间,以实现一个无单点故障、高可用、可动态扩展的 MongoDB 集群。
搭建高可用mongodb集群,内附如何建立分片、创建节点等