最近为了做《高级数据库》的大作业,在本地找了几台机器,搭了一个MongoDB集群。由于时间关系,先把重点mark下来,以后再完善。
1、MongoDB 版本 3.2
安装方法见官网(Install MongoDB Community Edition on Linux),每个节点都要安装。
2、机器资源
共6台,4Ubuntu + 2CentOS
分别命名为N1~N6.
3、步骤
3.1配置ReplicaSet(Deploy a Replica Set)
计划是配置3个RelicaSets:
rs0=N1+N2 port: 27017;
rs1=N3+N4 port 27018;
rs2=N5+N6 port 27019。#以上的 port 好像是可以一样的,时间关系,当时没试。
接下来在每台机子上操作:
3.1.1 启动mongod
N1 & N2 : mongod --replSet "rs0" --port 27017
N3 & N4 : mongod --replSet "rs1" --port 27018
N5 & N6 : mongod --replSet "rs2" --port 27019
3.1.2 打开mongo shell
随便在每一个Replica Set里,选一个节点,另开一个终端,打开mongo shell,指令如下:
N1 或 N2: mongo --port 27017
N3 或 N4: mongo --port 27018
N5 或 N6: mongo --port 27019
3.1.3 初始化Replica Set
在每个一个Replica Set打开的mongo shell里,
N1:
rs.initiate({
_id: "rs0",
version: 1,
members: [
{ _id: 0, host: "N1:27017" },
{ _id: 1, host: "N2:27017" },
]
})
N3:
rs.initiate({
_id: "rs1",
version: 1,
members: [
{ _id: 0, host: "N3:27018" },
{ _id: 1, host: "N4:27018" },
]
})
N5:
rs.initiate({
_id: "rs2",
version: 1,
members: [
{ _id: 0, host: "N5:27018" },
{ _id: 1, host: "N6:27018" },
]
})
3.2配置ConfigRepiSet
计划是用原先N1~N6中其中三台机器来搭。
ConfigRepliSet = N1 + N2 + N3
N1 & N2 & N3: mongod --configsvr --replSet configReplSet --port 21870
类似地,打开一个新的终端,连到N1、N2、N3其中一个,打开mongo shell: mongo --host N1 --port 21870
初始化ConfigReliSet :
rs.initiate( {
_id: "configReplSet",
configsvr: true,
version: 1,
members: [
{ _id: 0, host: "N1:21870" },
{ _id: 1, host: "N2:21870" },
{ _id: 2, host: "N3:21870" },
]
} )
启动mongos Instance,其实就是再打开一个终端,输入: mongos --configdb configReplSet/N1:21870,N2:21870,N3:21870 --port 21871
3.3配置Sharding
上面打开mongos Instance之后,先不要关掉。再开一个终端,连接到configRepliSet其中一个节点(N1或N2或N3),但端口要用“21871”
以N1为例,命令是: mongo --host N1 --port 21871
连上之后,可以在mongo shell 里往集群添加shard。这里用的shard,就是上面配的ReplicaSet(就是rs0,rs1,rs2这三个)
对于每一个ReplicaSet,只需要添加一个节点进去集群就行了。如:
sh.addShard( "rs0/N1:27017" )
sh.addShard( "rs1/N3:27018" )
sh.addShard( "rs2/N5:27019" )
然后就完事了。到这里,MongoDB集群就算是搭好了。
!!!注意!!!
这只是我个人一个简单的记录,后面我会找时间完善好,这里可能会存在非常多的问题,希望有大牛可以指正,让我学习学习。如果有读者要参考这篇来搭的话,建议慎重考虑!可以把这篇当成辅助理解的材料,主要还是以官网的方法为主。MongoDB 3.2版本搭建起来感觉要比旧版本那些要简单一些,但网上找到的教程多数都是旧版本的。于是草草地摸索了一下。欢迎跟大家交流。