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

[经验分享] Replica Set副本集方式的mongodb集群搭建

[复制链接]

尚未签到

发表于 2018-10-25 07:18:35 | 显示全部楼层 |阅读模式
  1.环境:
  单台服务器上开启四个mongodb实例来实现mongodb的Replica Set副本集方式的集群搭建
  2.配置文件:
  master主实例配置文件:
  [root@localhost ~]# cat /usr/local/mongodb/mongod.cnf
  logpath=/data/mongodb-master/logs/mongodb.log
  logappend = true
  #fork and run in background
  fork = true
  port = 27017
  dbpath=/data/mongodb-master/data
  #location of pidfile
  pidfilepath=/data/mongodb-master/mongod.pid
  auth = true
  keyFile = /tmp/mongo-keyfile
  nohttpinterface=true
  replSet=shard1
  slave1实例配置文件:
  [root@localhost ~]# cat /usr/local/mongodb/mongod1.cnf
  logpath=/data/mongodb-slave/logs/mongodb.log
  logappend = true
  #fork and run in background
  fork = true
  port = 27018
  dbpath=/data/mongodb-slave/data
  #location of pidfile
  pidfilepath=/data/mongodb-slave/mongod.pid
  auth = true
  keyFile = /tmp/mongo-keyfile
  nohttpinterface=true
  replSet=shard1
  slave2实例配置文件:
  [root@localhost ~]# cat /usr/local/mongodb/mongod2.cnf
  logpath=/data/mongodb-slave1/logs/mongodb.log
  logappend = true
  #fork and run in background
  fork = true
  port = 27019
  dbpath=/data/mongodb-slave1/data
  #location of pidfile
  pidfilepath=/data/mongodb-slave1/mongod.pid
  auth = true
  keyFile = /tmp/mongo-keyfile
  nohttpinterface=true
  replSet=shard1
  arbiter冲裁节点实例部署:
  [root@localhost ~]# cat /usr/local/mongodb/arbiter.cnf
  logpath=/data/mongodb-arbiter/logs/mongodb.log
  logappend = true
  #fork and run in background
  fork = true
  port = 27020
  dbpath=/data/mongodb-arbiter/data
  #location of pidfile
  pidfilepath=/data/mongodb-arbiter/mongod.pid
  keyFile = /tmp/mongo-keyfile
  nohttpinterface=true
  replSet=shard1
  3.单实例mongodb的启动脚本:
  [root@localhost data]# cat /etc/init.d/mongod
  #!/bin/sh
  ## chkconfig: 2345 66 40
  source /etc/profile
  CONFIG=/usr/local/mongodb/mongod.cnf
  PROGRAM=/usr/local/mongodb/bin/mongod
  MONGOPID=`ps -ef | grep 'mongod --config' | grep -v grep | awk '{print $2}'`
  test -x $PROGRAM || exit 0
  case "$1" in
  start)
  echo "Starting MongoDB Server..."
  $PROGRAM --config $CONFIG &
  ;;
  stop)
  echo "Stopping MongoDB Server..."
  if [ ! -z "$MONGOPID" ]; then
  kill -15 $MONGOPID
  fi
  ;;
  status)
  if [  -z "$MONGOPID" ]; then
  echo "MongoDB is not running!"
  else
  echo "MongoDB is running!("$MONGOPID")"
  fi
  ;;
  restart)
  echo "Shutting down MongoDB Server..."
  if [ ! -z "$MONGOPID" ]; then
  kill -15 $MONGOPID
  fi
  echo "Starting MongoDB..."
  $PROGRAM --config $CONFIG &
  ;;
  *)
  log_success_msg "Usage:/etc/init.d/mongod {start|stop|status|restart}"
  exit 1
  esac
  exit 0
  4.启动mongodb实例:
  [root@localhost data]# ps -ef|grep mongo
  root      7226     1  0 13:12 ?        00:00:41 /usr/local/mongodb/bin/mongod --config /usr/local/mongodb/arbiter.cnf
  root     11262     1  0 13:54 ?        00:00:29 /usr/local/mongodb/bin/mongod --config /usr/local/mongodb/mongod.cnf
  root     13097     1  0 14:22 ?        00:00:19 /usr/local/mongodb/bin/mongod --config /usr/local/mongodb/mongod1.cnf
  root     13214     1  0 14:22 ?        00:00:19 /usr/local/mongodb/bin/mongod --config /usr/local/mongodb/mongod2.cnf
  5.配置主,备,仲裁节点:
  可以通过客户端连接mongodb,也可以直接在三个节点中选择一个连接mongodb。
  登陆mongodb-master主实例来配置:
  [root@localhost ~]# mongo 127.0.0.1:27017
  MongoDB shell version: 3.0.5
  connecting to: 127.0.0.1:27017/test
  shard1:PRIMARY> use admin;
  switched to db admin
  > cfg={ _id:"shard1", members:[ {_id:0,host:'127.0.0.1:27017',priority:3}, {_id:1,host:'127.0.0.1:27018',priority:2},
  ... {_id:2,host:'127.0.0.1:27019',priority:1}, {_id:3,host:'127.0.0.1:27020',arbiterOnly:true} ] };
  {
  "_id" : "shard1",
  "members" : [
  {
  "_id" : 0,
  "host" : "127.0.0.1:27017",
  "priority" : 3
  },
  {
  "_id" : 1,
  "host" : "127.0.0.1:27018",
  "priority" : 2
  },
  {
  "_id" : 2,
  "host" : "127.0.0.1:27019",
  "priority" : 1
  },
  {
  "_id" : 3,
  "host" : "127.0.0.1:27020",
  "arbiterOnly" : true
  }
  ]
  }
  > rs.initiate(cfg);  (初始化配置)
  { "ok" : 1 }
  shard1:PRIMARY> rs.conf();  (查看配置信息)
  {
  "_id" : "shard1",
  "version" : 1,
  "members" : [
  {
  "_id" : 0,
  "host" : "127.0.0.1:27017",
  "arbiterOnly" : false,
  "buildIndexes" : true,
  "hidden" : false,
  "priority" : 3,
  "tags" : {
  },
  "slaveDelay" : 0,
  "votes" : 1
  },
  {
  "_id" : 1,
  "host" : "127.0.0.1:27018",
  "arbiterOnly" : false,
  "buildIndexes" : true,
  "hidden" : false,
  "priority" : 2,
  "tags" : {
  },
  "slaveDelay" : 0,
  "votes" : 1
  },
  {
  "_id" : 2,
  "host" : "127.0.0.1:27019",
  "arbiterOnly" : false,
  "buildIndexes" : true,
  "hidden" : false,
  "priority" : 1,
  "tags" : {
  },
  "slaveDelay" : 0,
  "votes" : 1
  },
  {
  "_id" : 3,
  "host" : "127.0.0.1:27020",
  "arbiterOnly" : true,
  "buildIndexes" : true,
  "hidden" : false,
  "priority" : 1,
  "tags" : {
  },
  "slaveDelay" : 0,
  "votes" : 1
  }
  ],
  "settings" : {
  "chainingAllowed" : true,
  "heartbeatTimeoutSecs" : 10,
  "getLastErrorModes" : {
  },
  "getLastErrorDefaults" : {
  "w" : 1,
  "wtimeout" : 0
  }
  }
  }
  shard1:OTHER> rs.status()   (查看副本集)
  {
  "set" : "shard1",
  "date" : ISODate("2017-09-14T05:23:16.893Z"),
  "myState" : 1,
  "members" : [
  {
  "_id" : 0,
  "name" : "127.0.0.1:27017",
  "health" : 1,
  "state" : 1,
  "stateStr" : "PRIMARY",
  "uptime" : 1117,
  "optime" : Timestamp(1505366494, 1),
  "optimeDate" : ISODate("2017-09-14T05:21:34Z"),
  "electionTime" : Timestamp(1505366495, 1),
  "electionDate" : ISODate("2017-09-14T05:21:35Z"),
  "configVersion" : 1,
  "self" : true
  },
  {
  "_id" : 1,
  "name" : "127.0.0.1:27018",
  "health" : 1,
  "state" : 2,
  "stateStr" : "SECONDARY",
  "uptime" : 102,
  "optime" : Timestamp(1505366494, 1),
  "optimeDate" : ISODate("2017-09-14T05:21:34Z"),
  "lastHeartbeat" : ISODate("2017-09-14T05:23:16.113Z"),
  "lastHeartbeatRecv" : ISODate("2017-09-14T05:23:16.663Z"),
  "pingMs" : 0,
  "configVersion" : 1
  },
  {
  "_id" : 2,
  "name" : "127.0.0.1:27019",
  "health" : 1,
  "state" : 2,
  "stateStr" : "SECONDARY",
  "uptime" : 102,
  "optime" : Timestamp(1505366494, 1),
  "optimeDate" : ISODate("2017-09-14T05:21:34Z"),
  "lastHeartbeat" : ISODate("2017-09-14T05:23:16.127Z"),
  "lastHeartbeatRecv" : ISODate("2017-09-14T05:23:16.668Z"),
  "pingMs" : 0,
  "configVersion" : 1
  },
  {
  "_id" : 3,
  "name" : "127.0.0.1:27020",
  "health" : 1,
  "state" : 7,
  "stateStr" : "ARBITER",
  "uptime" : 102,
  "lastHeartbeat" : ISODate("2017-09-14T05:23:16.055Z"),
  "lastHeartbeatRecv" : ISODate("2017-09-14T05:23:16.674Z"),
  "pingMs" : 1,
  "configVersion" : 1
  }
  ],
  "ok" : 1
  }
  shard1:PRIMARY>
  到此处配置成功:
  6.测试验证:
  参考文档:http://blog.csdn.net/zhang_yanan/article/details/25972693 进行测试验证
  在master上创建用户和数据库进行测试验证集群是否成功
  db.createUser(
  {
  user: "root",
  pwd: "Zykj@558996",
  roles: [ { role: "root", db: "admin" } ]
  }
  )
  use admin
  db.createUser(
  ...  {
  ...  user: "DBA3",
  ...    pwd: "Zykj@558996",
  ...     roles: [ { role: "readWrite", db: "dbtest001" } ]
  ...  }
  ...  )
  也可以安装mongodb客户端软件来操作进行验证集群搭建是否成功
  7.部署参考文档:
  http://blog.csdn.net/luonanqin/article/details/8497860;
  http://suifu.blog.51cto.com/9167728/1853478
  http://blog.csdn.net/zhang_yanan/article/details/25972693
  http://www.cnblogs.com/smartloli/p/4305739.html
  MongoDB高可用集群配置的几种方案参考:https://yq.aliyun.com/articles/61516


运维网声明 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.iyunv.com/thread-626077-1-1.html 上篇帖子: MongoDB集群部署详解 下篇帖子: mongodb快速入门
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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