mongodb windows 集群搭建

准备三台机器,系统:windows 8

192.168.1.1
192.168.1.2
192.168.1.3

每台机器上安装mongodb 服务,步骤:

  1. 下载以下文件并依次执行安装
  2. clearcompressionflag.exe
    Windows8.1-KB2919442-x64.msu
    Windows8.1-KB2932046-x64.msu
    Windows8.1-KB2934018-x64.msu
    Windows8.1-KB2937592-x64.msu
    Windows8.1-KB2938439-x64.msu
    Windows8.1-KB2959977-x64.msu
    Windows8.1-KB2919355-x64.msu Windows8.
    1-KB2999226-x64.msu

     

  3. 下载 vc_redist.x64.exe 并安装
  4. 下载文件 mongodb-win32-x86_64-2008plus-ssl-4.0.6-singed.mis 并安装。如果报错 无法启动服务,那么到mongodb 安装目录,这里是  C:\Program Files\MongoDB\Server\4.0\bin 内修改配置文件mongod.cfg,注释掉  mp 配置项(最后一行)。
  5. 修改配置文件 mongod.cfg,增加如下配置, XXX 是副本集名称。
  6. replication:
      replSetName: XXX

     

  7. 重启mongodb 服务,使配置生效
  8. 命令行打开 mongo 
  9. mongo --host 192.168.1.1

     

  10. 执行以下语句, arbiterOnly:true 表示节点仅用作仲裁节点,如果此节点需要存储数据,则不设置 arbiterOnly,默认为 false。
  11. > config={ _id:'XXX', members:[ {_id:0,host:'192.168.1.1:27017'}, {_id:1,host:'192.168.1.2:27017'}, {_id:2,host:'192.168.1.3:27017',arbiterOnly:true}]}
    ...
    > rs.initiate(config)

     

  12. 查看 设置状态
  13. > rs.status()

     

 集群搭建参考 https://www.cnblogs.com/ityouknow/p/7344005.html

集群认证:https://blog.csdn.net/uncle_david/article/details/78713551

下面是我的配置文件

# conf/config.conf
## 配置文件内容 mongodb 4.0
pidfilepath = D:/mongodb-cluster/config/log/configsrv.pid
dbpath = D:/mongodb-cluster/config/data
logpath = D:/mongodb-cluster/config/log/congigsrv.log
logappend = true
 
bind_ip = 0.0.0.0
port = 21000
# fork = true
 
#declare this is a config db of a cluster;
configsvr = true

#副本集名称
replSet=configs
 
#设置最大连接数
maxConns=20000

keyFile = D:/mongodb-cluster/conf/key.file
auth = true

分片配置文件和路由配置文件就不再列出来了,通过上面两个链接的博客内容,很容易得到。

另外在列出搭建集群时常用的命令以及 js 代码,方便复制粘贴,

mongod -f D:\mongodb-cluster\conf\config.conf
mongod -f D:\mongodb-cluster\conf\shard1.conf
mongod -f D:\mongodb-cluster\conf\shard2.conf
mongod -f D:\mongodb-cluster\conf\shard3.conf
mongos -f D:\mongodb-cluster\conf\mongos.conf

config = {_id:"configs", members: [{_id:0, host:"192.168.2.171:21000"}, {_id:1, host: "192.168.2.172:21000"}, {_id:2,host:"192.168.2.173:21000"}]}
config = {_id : "shard1", members : [{_id : 0, host : "192.168.2.171:27001" },{_id : 1, host : "192.168.2.172:27001" },{_id : 2, host : "192.168.2.173:27001" , arbiterOnly: true }]}
config = {_id : "shard2", members : [{_id : 0, host : "192.168.2.171:27002", arbiterOnly: true },{_id : 1, host : "192.168.2.172:27002" },{_id : 2, host : "192.168.2.173:27002"  }]}
config = {_id : "shard3", members : [{_id : 0, host : "192.168.2.171:27003" },{_id : 1, host : "192.168.2.172:27003" , arbiterOnly: true  },{_id : 2, host : "192.168.2.173:27003"  }]}

sh.addShard("shard1/192.168.2.171:27001,192.168.2.172:27001,192.168.2.173:27001")
sh.addShard("shard2/192.168.2.171:27002,192.168.2.172:27002,192.168.2.173:27002")
sh.addShard("shard3/192.168.2.171:27003,192.168.2.172:27003,192.168.2.173:27003")

// auth:
db.createUser(
    {
        user:"xxx",
        pwd:"xxx",
        roles:[{role:"root",db:"admin"}]
    }
)

添加副本集  rs.initiate(config); 时要注意,分片内某节点如果设置为  arbiterOnly:true ,那么不能在这个节点上连接 mongodb 实例,否则会报错,以上面配置为例,分片 2 这个副本集创建时,是在 192.168.2.172 上执行的,如下

# 在 192.168.2.172 节点上执行以下命令
mongo --port 27002
config = {_id : "shard2", members : [{_id : 0, host : "192.168.2.171:27002", arbiterOnly: true },{_id : 1, host : "192.168.2.172:27002" },{_id : 2, host : "192.168.2.173:27002"  }]}
rs.initiate(config);

其他命令我都是在  192.168.2.171 上的 mongo shell 里执行。

也有地方建议不使用仲裁节点,同时配置副本集中节点数量为奇数,

config = {_id : "shard1", members : [{_id : 0, host : "192.168.2.171:27001" },{_id : 1, host : "192.168.2.172:27001" },{_id : 2, host : "192.168.2.173:27001"  }]}

 

posted @ 2020-03-18 16:55  gaoshoufenmu  阅读(786)  评论(0编辑  收藏  举报