美文网首页
MongoDB搭建复制集&分片集群(进阶)

MongoDB搭建复制集&分片集群(进阶)

作者: Seinist | 来源:发表于2018-05-11 01:18 被阅读0次

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

相关文章

网友评论

      本文标题:MongoDB搭建复制集&分片集群(进阶)

      本文链接:https://www.haomeiwen.com/subject/hjdxdftx.html