-由于自己懒到不愿写,不想再回去截图再一条条码。下面有关于这个的内容很详细,几乎每一个步骤都给出来了。如果有问题可以先检查是不是自己在配置过程中某部分细节敲错了。
总体架构的搭建:
1.分布式架构以及端口的分配设定:
节点:localhost 架构说明:
这个是config的节点说明
27018:config server(master)config的配置信息,主节点
27019:config server(slave) 配置信息,从节点,防止主节点奔溃
分片shard的节点说明:
27020:shard_master
27021:shard_slave
27022:shard_arbiter
分片shard2的节点说明:
27023:shard2
27025:shard2_slave
27026:shard2_arbiter
路由节点:
27024:router
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
架构图:
2.在ubuntu里面进行搭建:
1.在自己的home目录下创建一个test空的文件夹
chexin@chexin-virtual-machine:~$ mkdir test
2.在进入test文件里面,创建我们的节点的config的配置文件和存放日志的空文件夹。
这是所有配置文件都创建好了后的的界面展示。
接下来手把手教学:
进入到test的目录下面:
(1)创建 configserver_master.conf 的配置文件
(2)logpath里面有一个文件的路径为 configserver_master.conf 这里是一个空文件夹,需要自己提前在test路径下面 创建一个新的文件夹来接收日志文件:
创建一个新的文件夹
chexin@chexin-virtual-machine:~/test$ mkdir configserver_master 创建一个新的文件
chexin@chexin-virtual-machine:~/test$ gedit configserver_master.conf`
配置文件内容:
directoryperdb=true
replSet=config
configsvr=true
logpath=/home/chexin/test/configserver_master/mongod.log
logappend=true
fork=true
port=27018
dbpath=/home/chexin/test/configserver_master
pidfilepath=/home/chexin/test/configserver_master/mongod.pid
说明: /home/chexin/test/ 这个是当前文件夹的位置,这里换成你自己的位置。 关于路径的都换成自己当前文件的路径就好了,所有的文件的路径和文件名都不能错,一定检查仔细,看清楚。
也就是说每创建一个conf文件都必须要有一个congfig配置文件和一个config的空目录来接收日志文件
(2)创建 configserver_slave的配置文件
chexin@chexin-virtual-machine:~/test$ vi configserver_slave.conf
如下图所示:这里的配置文件跟上面的几乎是一样的,不过更改了路径名字和端口号而已。
第一步configserver的配置就完成了,分别启动master和slave服务。
chexin@chexin-virtual-machine:~/test$ mongod -f configserver_master.conf
chexin@chexin-virtual-machine:~/test$ mongod -f configserver_slaveconf
启动成功后:
查看你设置的log文件夹会有一大堆配置文件在里面则说明成功了:
2.在主节点上的配置:
进入到master节点
chexin@chexin-virtual-machine:~/test$ mongo --port=27018
输入:
use admin
在输入配置信息:
cfg={_id:"config",members:[{_id:0,host:'localhost:27018',priority:2}, {_id:1,host:'localhost:27019',priority:1}]};
成功界面:
再运行:
rs.initiate(cfg)
从节点上进行开启:
rs.slaveOk()
这里是告诉主节点我准备好了。
以上为config部分的全部步骤:
配置shard
编写配置⽂文件:这个是shard_master.conf的配置文件
directoryperdb=true
replSet=shard
shardsvr=true
logpath=/home/chexin/test/shard_master/mongod.log
logappend=true
fork=true
port=27020
dbpath=/home/chexin/test/shard_master
pidfilepath=/home/chexin/test/shard_master/mongod.pid
`这里要注意:replSet=shard 这里设置的是shard`
- 1
其他的shard_slave.conf和shard_aribiter.conf的配置文件和上面的是一样的,这里注意把每个配置文件里面的文件名和端口号换成主体框架上面的端口号,也就是 27021和27022.
master、slave、arbiter都配置好后,分别启动
mongod -f mongo.conf
chexin@chexin-virtual-machine:~/test$ mongod -f shard_master.conf
chexin@chexin-virtual-machine:~/test$ mongod -f shard_slaveconf
chexin@chexin-virtual-machine:~/test$ mongod -f shard_aribiter.conf
进入主节点进行配置:
chexin@chexin-virtual-machine:~/test$ mongo --port=27020
cfg={_id:“shard”,members:[{_id:0,host:‘127.0.0.1:27020’,priority:2},{_id:1,host:‘127.0.0.1:27021’,priority:1},{_id:2,host:‘127.0.0.1:27022’,arbiterOnly:true}]}
rs.initiate(cfg)
配置另一个分片 shard2
这个是另一个分片的配置目录。需要向第一个分片一样建立三个配置文件和三个空文件夹,具体配置信息请参照第一个分片shard的配置过程。端口号和文件名还有路径名记得更改。
在配置文件里的时候,特别注意这里要更改设置。
这里要注意:replSet=shard2 这里设置的是shard2
按照相同方法配置另一个分⽚,把文件名和路径和相对应的端口号给更改好就可以了。
分别启动三个配置文件
进入主节点进行配置:
chexin@chexin-virtual-machine:~/test$ mongo --port=27023
cfg={_id:“shard2”,members:[{_id:0,host:‘127.0.0.1:27023’,priority:2},{_id:1,host:‘127.0.0.1:27025’,priority:1},{_id:2,host:‘127.0.0.1:27026’,arbiterOnly:true}]};
rs.initiate(cfg)
至此,两块分片配置完成。
router的配置
配置路路由节点
编写配置⽂文件
configdb = config/127.0.0.1:27019,127.0.0.1:27018
logpath=/home/chexin/test/router/mongod.log
logappend=true
fork=true
port=27024
pidfilepath=/home/chexin/test/router/mongod.pid
注意这里的启动的命令是:mongs不是 mongod
mongos -f router.conf
配置具体的分片策略
登录mongos服务器:用mongos启动
chexin@chexin-virtual-machine:~/test$ mongo --port=27024
use admin
mongos> sh.addShard(“shard/127.0.0.1:27020,127.0.0.1:27021,127.0.0.1:27022”);
操作图:
添加自己的分片shard的划分:
分片shard2
mongos> sh.addShard(“shard2/127.0.0.1:27023,127.0.0.1:27025,127.0.0.1:27026”);
在mongos上为具体的数据库配置sharding
sh.enableSharding(“test”)
对test.t集合以id列列为shard key进⾏行行hashed sharding
sh.shardCollection(“test.t”,{id:“hashed”})
可以看到⾃自动为id列列创建了了索引
db.t.getIndexes()
分片验证,这个操作在router中进行操作。
use test
for(i=1;i<=1000;i++){db.t.insert({id:i,name:“Lihua”})}
可以看到数据被分配到两个分⽚片当中,分⽚片集群搭建完成
查看数据:
mongos> show dbs
这个表示我们刚刚插入的1000条数据已经成功放入了router的两个分片中,我们现在分别进入两个分片去查看存储情况:
1.进入shard_slave去查看存储情况
chexin@chexin-virtual-machine:~$ mongo --port=27021
这里存储了480条数据
2.进入shard2去查看数据
chexin@chexin-virtual-machine:~$ mongo --port=27023
这里存储了520条数据
至此:检测完毕,部署成功。
</div>
<link href="https://csdnimg.cn/release/phoenix/mdeditor/markdown_views-e44c3c0e64.css" rel="stylesheet">
</div>