设为首页 收藏本站
查看: 1467|回复: 0

[经验分享] Mongodb的Replica Set 副本集集群搭建

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2015-11-26 10:43:43 | 显示全部楼层 |阅读模式
实验性的搭建一个集群做练手。
配置和环境:

win10(本机)和linux(CentOs7)内网服务器各一台。
Mongodb3.07
目标:Replica set 副本集结构,一个primary一个slave,实现读写分离的同步数据集群。

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

二、集群配置

  一切开始前,有个准备工作,当时配置集群时因为这个事儿耽误了很长时间,百度google都没结果,最后是问了一个运维的朋友才知道的。就是要先做一个key认证!!表示集群间的机器是互相可靠的。
  具体操作可参考官网说明,在文章末尾有链接地址。
1
2
# openssl rand -base64 741 > /usr/local/mongodb/mongodb-keyfile
# chmod 600 /usr/local/mongodb/mongodb-keyfile



  这两步就是创建一个秘钥文件,用于集群的机器使用。生成文件后,把这个文件复制到每个成员的对应目录下,然后再启动mongo。
  作为集群的一份子,启动时要加一个Repl Set参数,就像一个团队的名字一样,表示是这个团队的成员。先写出启动命令,然后进行说明。
1
# 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用户进行的):
1
2
3
4
5
6
7
8
9
10
11
12
13
> config={
    _id : 'dbset',
  members : [
  {
      _id : 1,
      host : '192.168.0.46'
  },
  {
      _id : 2,
      host : '192.168.0.207:27017'
  }
  ]
}



   写好config后,进行初始化:
1
> rs.initiate(config)




   如果一切正常的话,可以用rs.status()查看目前集群的状态:
QQ截图20151126104236.png
   状态说明:
    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为:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
> 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)是无效的,需要执行:
1
> rs.reconfig(config);



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

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

QQ截图20151126104256.png


wKiom1ZUGKLASkmQAABUsfiWgWg539.png

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-143787-1-1.html 上篇帖子: mongodb 无法链接 下篇帖子: Mongodb权限管理 Replica
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表