1.Summary:
1-1.MongoDB进入3.x版本之后,对集群的结构和存储引擎做了较大的修改。在学习过程中时常遇到一些3.0之前的版本的指导,但我使用的却是3.6,所以在搭建分片集群过程中也遇到一些问题.在此总结一下MongoDB分片集群的搭建过程。
1-2.分片集群由n个SHARD(Mongod服务),n个ConfigServer(Mongod服务),n个Mongos(Mongos路由服务) n>=1 组成.由于3.6已经实际生产环境的要求,我们实际上会使用复制集(ReplSet)构成SHARD和ConfigServer.所以复制集(RepleSet)和分片(Shards)是一个循序渐进的过程。
2.环境:Linux、MongoDB3.6.3
//3个组件都由配置文件启动(清晰,方便管理)
而且在操作过程中也把大部分时间花在了配置文件上,和一些恶心的问题//
使用3台机器分别搭建Shard ConfigServer Mongos,IP和所使用的端口分别为
aaa.aaa.aaa.aaa
port: 11111 22222 33333
bbb.bbb.bbb.bbb
port: 44444 55555 66666
ccc.ccc.ccc.ccc
port: 77777 88888 99999
3.shard复制集
!!接下来会使用端口号来唯一标识文件!!
准备文件目录结构:
cd ~
mkdir -p mongodb/project/config log data keyfile
cd config
touch 11111.conf 22222.conf 33333.conf
cd log
touch 11111.log 22222.log 33333.log
cd data
mkdir 11111 22222 33333
openssl rand -base64 756 > <path-to-keyfile>
chmod 400 <path-to-keyfile>
keyfile是整个分片集群,包括复制集的唯一通用标识!!!所以我们只用在这里生成一次,之后再复制到所有的/mongodb/project/keyfile文件夹中.
一定要chmod,否则启动mongod服务时会失败,查看log可知keyfile are too open.
3-1.shardconfig(Shard配置文件)
这里使用3个mongod构成一个复制集,所以需要写3个配置文件,不同的mongod以端口号区分。关于配置文件的参数说明,可查看https://docs.mongodb.com/manual/reference/configuration-options/
vim 11111.conf
//
dbpath=~/mongodb/project/data/11111
keyFile=~/mongodb/project/$thekeyfile
bind_ip=127.0.0.1,aaa.aaa.aaa.aaa
port=11111
logpath=!/mongodb/project/log/11111.log
logappedn=true
profile=1
slowns=1000
auth=true
fork=true
noIndexBuildRetry=true
noprealloc=true
syncdelay=50
#oplog= 在这里使用默认(无所谓)
replSet=shard_a
shardsvr=1
//
同理再写2份 22222.conf 33333.conf
之后在mongodb安装目录下(mongodb/bin/)
mongod -f 11111.conf
mongod -f 22222.conf
mongod -f 33333.conf
3-2. 初始化shard—replSet
mongo连接shard(mongod)
mongo 127.0.0.1:11111
因为开启了auth,所以第一次一定要使用localhost进入
use admin
db.createUser(
{
user:'xxx'
pwd:'yyy'
roles:[{role:'root',db:'admin'}]
} )
db.auth('xxx','yyy')
config={
_id:'shard_a',
members:[
{id:0,host:'aaa.aaa.aaa.aaa:11111'},
{id:1,host:'aaa.aaa.aaa.aaa:22222'},
{id:2,host:'aaa.aaa.aaa.aaa:33333'} ] }
rs.initiate(config)
NOOOOOOOOT ENNNNNNNNNNDDD
网友评论