美文网首页
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