Mongodb的Replica Set 副本集集群搭建

实验性的搭建一个集群做练手。

配置和环境:

win10(本机)和linux(CentOs7)内网服务器各一台。

Mongodb3.07

目标:Replica set 副本集结构,一个primary一个slave,实现读写分离的同步数据集群。

一、本机和内网服务器安装mongo

可参考我的另外两篇文章:

Mongodb在windows和linux平台的安装配置(http://fykknd.blog.51cto.com/3175618/1716343

Mongodb权限管理(http://fykknd.blog.51cto.com/3175618/1716369

二、集群配置

一切开始前,有个准备工作,当时配置集群时因为这个事儿耽误了很长时间,百度google都没结果,最后是问了一个运维的朋友才知道的。就是要先做一个key认证!!表示集群间的机器是互相可靠的。

具体操作可参考官网说明,在文章末尾有链接地址。

# openssl rand -base64 741 > /usr/local/mongodb/mongodb-keyfile
# chmod 600 /usr/local/mongodb/mongodb-keyfile

这两步就是创建一个秘钥文件,用于集群的机器使用。生成文件后,把这个文件复制到每个成员的对应目录下,然后再启动mongo。

作为集群的一份子,启动时要加一个Repl Set参数,就像一个团队的名字一样,表示是这个团队的成员。先写出启动命令,然后进行说明。

# mongod --config /etc/mongo.conf --dbpath=/usr/local/mongodb/data/ --logpath=/usr/local/mongodb/logs/log.l --port=27017 --auth --fork --replSet rs0 --keyFile /usr/local/mongodb/mongodb-keyfile

这是命令行加参数方式启动,也可以把参数写在mongo.conf里。(我这3.07版本是解压直接用的,默认没有配置文件,需要自己创建一个:/etc/mongo.conf)配置文件的写法看官方文档的说明(在文章最后链接里),2.6以后的文件写法采用YAML方式。

参数说明:

--config 配置文件位置

--dbpath 数据存放位置

--logpath 日志存放位置

--port 端口(可不写)

--auth 以认证方式启动

--fork 后台运行

   --replSet 副本集名称

   --keyFile 秘钥文件位置

接下来配置集群config变量(记得先进行认证操作,否则没有权限配置集群,我使用root用户进行的):

> config={
    _id : ‘dbset‘,
  members : [
  {
      _id : 1,
      host : ‘192.168.0.46‘
  },
  {
      _id : 2,
      host : ‘192.168.0.207:27017‘
  }
  ]
}

写好config后,进行初始化:

> rs.initiate(config)

如果一切正常的话,可以用rs.status()查看目前集群的状态:

状态说明:

1.STARTUP:刚加入到复制集中,配置还未加载

2.STARTUP2:配置已加载完,初始化状态

3.RECOVERING:正在恢复,不适用读

4.ARBITER: 仲裁者

5.DOWN:节点不可到达

6.UNKNOWN:未获取其他节点状态而不知是什么状态,一般发生在只有两个成员的架构,脑裂

7.REMOVED:移除复制集

8.ROLLBACK:数据回滚,在回滚结束时,转移到RECOVERING或SECONDARY状态

9.FATAL:出错。查看日志grep “replSet FATAL”找出错原因,重新做同步

10.PRIMARY:主节点

11.SECONDARY:备份节点

添加或者删除节点(需要在主节点上进行):

添加 rs.addArb("192.168.0.207");

删除 rs.remove("192.168.0.207");

其实正常来说还应该有个仲裁节点,但目前服务器数量不够,所以尝试用另一个外网机器做了下仲裁节点,于是遇到了修改config的配置问题。网上给的答案基本删掉目前设置重新搞,其实有更简便的方法,强行修改config配置(例如上面我没有指定config中的priority参数,值是个整形。值越大越优先成为primary节点。前提是配置文件没有指定谁是主节点,并且启动参数里也没有--master参数)。例如新的config为:

> config={
  _id : ‘dbset‘,
  members : [
  {
      _id : 1,
      host :192.168.0.46,
      priority: 1
  },
  {
      _id : 2,
      host :192.168.0.207:27017,
      priority: 0
  }
  ]
}

此时rs.initiate(config)是无效的,需要执行:

> rs.reconfig(config);

那么到底怎么添加仲裁节点呢?很简单:在config里加一个节点,后面写上arbiterOnly:true即可。比如:{_id:3, host:"192.168.0.207:27018", arbiterOnly:true},然后再重新reconfig即可。然而我并没有成功,因为我是在207上启动了两个不同的端口模拟的,但并未成功。附件贴上错误信息,哪位大神指出下错误?感激不尽!

此外还可以查看集群配置:rs.conf();

注:本文主要参考来源

mongoDB3.0.3 以上GUI 连接认证问题

mongoDB 3.0 安全权限访问控制 http://blog.csdn.net/gsying1474/article/details/47813059

浅析MongoDB用户管理 http://www.jb51.net/article/53830.htm

mongo官网-key认证:https://docs.mongodb.org/manual/tutorial/enable-internal-authentication/

mongo官网-配置文件写法:https://docs.mongodb.org/manual/reference/configuration-options/

mongodb强制一个成员为主:http://www.361way.com/mongodb-forced-primary/1704.html

Mongodb增加、移除Arbiter节点实例:http://www.jb51.net/article/59597.htm

时间: 2024-10-10 06:56:43

Mongodb的Replica Set 副本集集群搭建的相关文章

Replica Set副本集方式的mongodb集群搭建

1.环境: 单台服务器上开启四个mongodb实例来实现mongodb的Replica Set副本集方式的集群搭建 2.配置文件: master主实例配置文件: [[email protected] ~]# cat /usr/local/mongodb/mongod.cnf logpath=/data/mongodb-master/logs/mongodb.log logappend = true #fork and run in background fork = true port = 27

MongoDB 集群搭建(主从复制、副本及)(五)

六:架构管理 mongodb的主从集群分为两种: 1:master-Slave 复制(主从)    --从server不会主动变成主server,须要设置才行 2:replica Sets 复制(副本集)  --假设主server挂掉,会选举出一台从server当主server 一:主从复制 mongodb支持在多个机器中通过异步复制达到故障转移和实现冗余. 多机器中统一时刻仅仅有一台是用于写操作.正是因为这个情况,为mongodb提供了数据一致性的保障. 担当primary角色的机器能把读操作

mongoDB的读书笔记(04)_【Replica】(05)_初探Replica set副本集的搭建 By Test模式

Replica set Deployment On Test Mode 为啥是测试模式 实战 先絮叨絮叨操作系统 在一台机器上创建模拟5个节点 进入非db连接模式 建立5个节点的test script 启动所有的节点 配置节点 进入一个节点 配置Replica的config 进行初始化 check心跳和log 查看Replia的详细 查看Secondary Replia的详细 写数据实验 Primary写入 Secondary查看 Replica set Deployment On Test M

mongodb 3.4 集群搭建:分片+副本集

mongodb是最常用的nodql数据库,在数据库排名中已经上升到了前六.这篇文章介绍如何搭建高可用的mongodb(分片+副本)集群. 在搭建集群之前,需要首先了解几个概念:路由,分片.副本集.配置服务器等. 相关概念 先来看一张图: 从图中可以看到有四个组件:mongos.config server.shard.replica set. mongos,数据库集群请求的入口,所有的请求都通过mongos进行协调,不需要在应用程序添加一个路由选择器,mongos自己就是一个请求分发中心,它负责把

MongoDB集群搭建-副本集

MongoDB集群搭建-副本集 概念性的知识,可以参考本人博客地址: http://www.cnblogs.com/zlp520/p/8088169.html 一.Replica Set方案(副本集或复制集): 1.搭建副本集有两种办法: 其一:在一台服务器上,通过文件的方式及端口号的方式来区分: 其二:找最少三台服务器,每台服务器都通过如下的配置: ip规划每台服务器担任的工作: 192.168.0.100:27017 主机 192.168.0.101:27017 副本集 192.168.0.

22.mongodb副本集集群

软件版本64位: $ wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel62-3.2.0.tgz mongodb-linux-x86_64-rhel62-3.2.0.tgz 服务器3台: 192.168.1.20    (master[PRIMARY]) 192.168.1.21    (slave[SECONDARY]) 192.168.1.22    (仲裁[ARBITER]) 参考: http://www.cnbl

Mongodb分片副本集集群搭建

一.环境准备 1.1.主机信息(机器配置要求见硬件及开发标准规范文档V1.0) 序号 主机名 IP 1 DB_01 10.202.105.52 2 DB_02 10.202.105.53 3 DB_03 10.202.105.54 4 CNSZ17PL0897 10.117.176.215(暂时待定备份监控机) 服务器52(DB_01) 服务器53(DB_02) 服务器54(DB_03) mongos mongos mongos config server config server confi

MongoDB 3.2.8 副本集搭建

记录一下,MongoDB的角色创建及配置,以便以后使用 简介 Replica Set,中文翻译叫做副本集,不过我并不喜欢把英文翻译成中文,总是感觉怪怪的.其实简单来说就是集群当中包含了多份数据,保证主节点挂掉了,备节点能继续提供数据服务,提供的前提就是数据需要和主节点一致 Mongodb(M)表示主节点,Mongodb(S)表示备节点,Mongodb(A)表示仲裁节点.主备节点存储数据,仲裁节点不存储数据.客户端同时连接主节点与备节点,不连接仲裁节点. 默认设置下,主节点提供所有增删查改服务,备

Mongodb集群搭建的三种方式

Mongodb是时下流行的NoSql数据库,它的存储方式是文档式存储,并不是Key-Value形式.关于Mongodb的特点,这里就不多介绍了,大家可以去看看官方说明:http://docs.mongodb.org/manual/ 今天主要来说说Mongodb的三种集群方式的搭建:Replica Set / Sharding / Master-Slaver.这里只说明最简单的集群搭建方式(生产环境),如果有多个节点可以此类推或者查看官方文档.OS是Ubuntu_x64系统,客户端用的是Java客