加入收藏 | 设为首页 | 会员中心 | 我要投稿 核心网 (https://www.hxwgxz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 建站 > 正文

Web架构之路:MongoDB集群及高可用实践

发布时间:2019-10-12 11:07:00 所属栏目:建站 来源:热爱技术君
导读:MongoDB集群有副本集及主从复制两种模式,不过主从模式在MongoDB 3.6已经彻底废弃,今天主要探讨副本集的搭建和使用,以及分片。 副本集介绍 副本集(Replica Set)即副本的集合,在MongoDB中通过先定义一个副本集合,然后将多个节点(副本)加入到这个集合中

以上配置复制4份,修改一下数据库路径/日志路径/服务器IP和端口/PID路径,启动4个Shard Server:

  1. sudo bin/mongod -f shard1.conf 
  2. sudo bin/mongod -f shard2.conf 
  3. sudo bin/mongod -f shard3.conf 
  4. sudo bin/mongod -f shard4.conf 

配置服务器

4.0版本的MongoDB中配置服务器(Config Server)需要设置副本集,同时设置configsvr=true,配置参考如下:

  1. # 指定数据库路径 
  2. dbpath=/usr/local/mongodb/share/5/data/db 
  3. # 使用追加的方式写日志 
  4. logpath=/usr/local/mongodb/share/5/log/mongodb.log 
  5. # 使用追加的方式写日志 
  6. logappend = true 
  7. # 绑定服务IP 
  8. bind_ip=127.0.0.1 
  9. # 服务器端口 
  10. port = 27100 
  11. # 以守护进程的方式运行MongoDB,创建服务器进程 
  12. fork = true 
  13. # PID File 的完整路径 
  14. pidfilepath=/usr/local/mongodb/var/mongod27100.pid 
  15. # 不启用验证 
  16. noauth=true 
  17. # 最大同时连接数,默认2000 
  18. maxConns=2000 
  19. # 同步复制的日志大小设置,单位MB 
  20. oplogSize=10 
  21. # 配置为config server 
  22. configsvr=true 
  23. # 副本集名称 
  24. replSet=rs0 

启动Config Server,并初始化副本集:

  1. sudo bin/mongod -f shard-config.conf 
  2. mongo 127.0.0.1:27100 
  3. > rs.initiaze() 

新版本MongoDB建议设置多个Config Server,采用副本集形式设置集群,为了搭建方便,这里我们只采用单个Config Server。

路由服务器

Router Server不存放数据,配置参考如下:

  1. # 使用追加的方式写日志 
  2. logpath=/usr/local/mongodb/share/6/log/mongodb.log 
  3. # 使用追加的方式写日志 
  4. logappend = true 
  5. # 绑定服务IP 
  6. bind_ip=127.0.0.1 
  7. # 服务器端口 
  8. port = 4000 
  9. # 以守护进程的方式运行MongoDB,创建服务器进程 
  10. fork = true 
  11. # PID File 的完整路径 
  12. pidfilepath=/usr/local/mongodb/var/mongod4000.pid 
  13. # 设置监听的config服务器 
  14. configdb=rs0/127.0.0.1:27100 

启动Router Server,路由服务器是由mongos命令启动,与分片服务器及配置服务器不同。

  1. sudo bin/mongos -f shard-router.conf 

启动后,需要通过sh.addShard()命令添加分片服务器:

  1. sh.addShard('127.0.0.1:27020') 
  2. sh.addShard('127.0.0.1:27021') 
  3. sh.addShard('127.0.0.1:27022') 
  4. sh.addShard('127.0.0.1:27023') 

配置完成后,可以通过sh.status()命令,查看分片情况:

  1. mongos> sh.status() 
  2. --- Sharding Status ---  
  3.  sharding version: { 
  4.     "_id" : 1, 
  5.     "minCompatibleVersion" : 5, 
  6.     "currentVersion" : 6, 
  7.     "clusterId" : ObjectId("5d8ddd1d94796dc650e29f67") 
  8.  } 
  9.  shards: 
  10.  { "_id" : "shard0000", "host" : "127.0.0.1:27020", "state" : 1 } 
  11.  { "_id" : "shard0001", "host" : "127.0.0.1:27021", "state" : 1 } 
  12.  { "_id" : "shard0002", "host" : "127.0.0.1:27022", "state" : 1 } 
  13.  { "_id" : "shard0003", "host" : "127.0.0.1:27023", "state" : 1 } 
  14.  active mongoses: 
  15.  "4.2.0" : 1 
  16.  autosplit: 
  17.  Currently enabled: yes 
  18.  balancer: 
  19.  Currently enabled: yes 
  20.  Currently running: no 
  21.  Failed balancer rounds in last 5 attempts: 0 
  22.  Migration Results for the last 24 hours:  
  23.  No recent migrations 
  24.  databases: 
  25.  { "_id" : "config", "primary" : "config", "partitioned" : true } 
  26.  config.system.sessions 
  27.  shard key: { "_id" : 1 } 
  28.  unique: false 
  29.  balancing: true 
  30.  chunks: 
  31.  shard0000  1 
  32.  { "_id" : { "$minKey" : 1 } } -->> { "_id" : { "$max 

(编辑:核心网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读