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