美文网首页
docker部署mongo集群

docker部署mongo集群

作者: ochipe | 来源:发表于2018-02-02 16:23 被阅读0次

    Docker 是一个开源的应用容器引擎,mongo是一个非常强大的非关系型数据库,理论不多说,下面演示docker中部署最新的mongo
    一:前期环境准备(node2是主,node1是从)
    我环境ubuntu Server 16.04 2台,首先安装docker

      sudo apt-get install docker 
    
      拉取最新mongo
    
      docker pull mongo
    

    二:开始部署环境

     分别在两台服务器 配置ip
      root@ubuntu:/home/xiaohan# export node1=192.168.153.128
      root@ubuntu:/home/xiaohan# export node2=192.168.153.129
    
        为了访问安全性,配置秘钥
    
        openssl rand  -base64 741 > mongodb-keyfile  
        #这里权限必须是600
        chmod 600 mongodb-keyfile
        chown 999 mongodb-keyfile
        这里999可以改成其他的,是docker文件组赋权限
    

    三:mongo设置用户密码

           docker run --name mongo -v /home/core/mongo-files/data:/data/db -v /home/core/mongo-files:/opt/keyfile --hostname="node2.example.com" -p 27017:27017 -d mongo --smallfiles
    
          > use admin
           switched to db admin
          > db.createUser({user:"mongoadmin",pwd:"mongoadmin",roles:[{role:"userAdminAnyDatabase",db:"admin"}]});
         Successfully added user: {
                      "user" : "mongoadmin",
                      "roles" : [
                                  {
                                "role" : "userAdminAnyDatabase",
                                "db" : "admin"
                                 }
                         ]
                     }
          > db.createUser({user:"mongoroot",pwd:"mongoroot",roles:[{role:"root",db:"admin"}]});
          Successfully added user: {
                  "user" : "mongoroot",
                            "roles" : [
                                    {
                               "role" : "root",
                                "db" : "admin"
                        }
                  ]
              }
    

    四:运行docker

      docker stop  mongo
      docer rm mongo
    
    
      docker run --name mongo -v /home/core/mongo-files/data/:/data/db -v /home/core:/opt/keyfile --hostname="node2.example.com" --add-host node1.exanple.com:${node1} --add-host node2.example.com:${node2}  -p 27017:27017 -d  mongo --smallfiles --keyFile /opt/keyfile/mongodb-keyfile  --replSet "rs0"
    
      切换用户
      use admin
      db.auth("mongoroot","mongoroot")
        
      开启副本集
      
      rs.initate()
      
      验证配置
      rs.conf()
      #mongo3.6版本这里运行两次可以看到想要的结果
      
      
      在另一台机器运行
      
      docker run --name mongo -v /home/core/mongo-files/data/:/data/db -v /home/core:/opt/keyfile --hostname="node1.example.com" --add-host node1.exanple.com:${node1} --add-host node2.example.com:${node2}  -p 27017:27017 -d  mongo --smallfiles --keyFile /opt/keyfile/mongodb-keyfile  --replSet "rs0"
      
      在node2上面执行
      rs.add("node1.simple.com")
      rs.status()
      
      
      查看机制
      docker  logs -ft mongo
    

    注意点:
    node1,node2中ip和部署运行docker中的设置的node要对应,不然节点连接会提示HostUnreacable等很多错误,其次关于文件权限问题,注意一定是600,不要会提示没权限或权限太大

    本文参考:
    http://dockone.io/article/181

    相关文章

      网友评论

          本文标题:docker部署mongo集群

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