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

[经验分享] Mongodb 副本集+分片集群搭建

[复制链接]

尚未签到

发表于 2018-10-25 08:20:10 | 显示全部楼层 |阅读模式
  环境需求:
  在三台机器上搭建副本集,在副本集上做分片
  服务器IP:
  192.168.1.232/192.168.1.238/192.168.1.241
  安装Mongodb
  all nodes:
  tar zxvf mongodb-linux-x86_64-rhel62-3.4.4.tgz
  cp -rvf  mongodb-linux-x86_64-rhel62-3.4.4  /opt/mongodb_3.4.4
  cd /opt/mongodb_3.4.4/
  mkdir -pv conf logs data/{mongod,configsvr}
  sleep 1
  touch  logs/{mongo,configsvr,route}.log
  配置Mongodb副本集
  all nodes:
  echo "port=10001
  dbpath=/opt/mongodb_3.4.4/data/mongod
  logpath=/opt/mongodb_3.4.4/logs/mongod.log
  pidfilepath=/opt/mongodb_3.4.4/logs/mongod.pid
  bind_ip=127.0.0.1,`ifconfig  | grep "inet addr:" | grep -v '127.0.0.1' | sed 's/^.*r://g'  | sed 's/Bc.*$//g'`
  oplogSize=10000
  fork=true
  logappend=true
  shardsvr=true
  replSet=shard" > /opt/mongodb_3.4.4/conf/mongod.conf
  /opt/mongodb_3.4.4/bin/mongod -f /opt/mongodb_3.4.4/conf/mongod.conf
  初始化mongodb  shard节点
  192.168.1.232 node:
  /opt/mongodb_3.4.4/bin/mongo  192.168.1.232:10001
  use admin
  config={ _id:"shard", members:[
  {_id:0,host:'192.168.1.232:10001'},
  {_id:1,host:'192.168.1.238:10001'},
  {_id:2,host:'192.168.1.241:10001'}] };
  初始化副本集配置
  rs.initiate(config);
  查看集群节点的状态
  rs.status();
  配置Mongodb Config服务器
  all node:
  echo "port=20001
  dbpath=/opt/mongodb_3.4.4/data/configsvr
  logpath=/opt/mongodb_3.4.4/logs/configsvr.log
  pidfilepath=/opt/mongodb_3.4.4/logs/configsvr.pid
  bind_ip=127.0.0.1,`ifconfig  | grep "inet addr:" | grep -v '127.0.0.1' | sed 's/^.*r://g'  | sed 's/Bc.*$//g'`
  configsvr=true
  fork=true
  logappend=true
  replSet=cfgsvr"  > /opt/mongodb_3.4.4/conf/configsvr.conf
  /opt/mongodb_3.4.4/bin/mongod -f /opt/mongodb_3.4.4/conf/configsvr.conf
  初始化mongodb  config节点
  192.168.1.232 node:
  /opt/mongodb_3.4.4/bin/mongo 192.168.1.232:20001
  use admin
  config={ _id:"cfgsvr", members:[
  {_id:0,host:'192.168.1.232:20001'},
  {_id:1,host:'192.168.1.238:20001'},
  {_id:2,host:'192.168.1.241:20001'}] };
  初始化副本集配置
  rs.initiate(config);
  查看集群节点的状态
  rs.status();
  配置Mongodb Mongos路由
  all node:
  echo "port=27017configdb=cfgsvr/192.168.1.232:20001,192.168.1.238:20001,192.168.1.241:20001
  bind_ip=127.0.0.1,`ifconfig  | grep "inet addr:" | grep -v '127.0.0.1' | sed 's/^.*r://g'  | sed 's/Bc.*$//g'`fork = true
  logpath = /opt/mongodb_3.4.4/logs/route.log
  logappend=true":  >  /opt/mongodb_3.4.4/conf/mongos.conf
  /opt/mongodb_3.4.4/bin/mongos -f /opt/mongodb_3.4.4/conf/mongos.conf
  启用分片:
  192.168.1.232 node:
  /opt/mongodb_3.4.4/bin/mongo 192.168.1.232:27017
  use  admin
  db.runCommand({"addShard" :"shard/192.168.1.232:10001,192.168.1.238:10001,192.168.1.241:10001"})
  查看分片服务器的配置
  db.runCommand( { listshards : 1 } );
  指定testdb库分片生效
  db.runCommand( { "enablesharding": "testdb"})
  ###未操作
  ##指定数据库里需要分片的集合和片键
  ##db.runCommand( { shardcollection : " enablesharding.step",key: {_id: 1} } )

  ##这里我们设置对testdb库的step 表进行分片,根据>  测试副本集数据复制功能
  连接到任意节点
  /opt/mongodb_3.4.4/bin/mongo 192.168.1.232:27017
  use test;
  db.mongotest.insert({"name":"baiyongjie"})#插入数据
  db.mongotest.insert({"age":"24"})
  连接到其他节点,数据是否有进行同步
  /opt/mongodb_3.4.4/bin/mongo 192.168.1.238:27017
  use test
  show tables;
  db.mongotest.find();
  配置基于Key file 认证方式(要在admin库中建立用户)
  1、在mongod节点创建用户
  db.createUser({
  user:"root",
  pwd:"baiyongjie",
  roles:[{role:"root",db:"admin"}]})
  db.createUser({
  user:"sa",
  pwd:"baiyongjie",
  roles:[{role:"root",db:"admin"}]})
  2、在mongos节点创建用户
  db.createUser({
  user:"root",
  pwd:"baiyongjie",
  roles:[{role:"root",db:"admin"}]})
  db.createUser({
  user:"sa",
  pwd:"baiyongjie",
  roles:[{role:"root",db:"admin"}]})
  3、关闭所有数据库
  all nodes:
  /opt/mongodb_3.4.4/bin/mongo 127.0.0.1:27017
  use admin
  db.shutdownServer()
  /opt/mongodb_3.4.4/bin/mongo 127.0.0.1:10001
  use admin
  db.shutdownServer()
  /opt/mongodb_3.4.4/bin/mongo 127.0.0.1:20001
  use admin
  db.shutdownServer()
  4、创建keyFile文件
  openssl rand -base64 745 > /opt/mongodb_3.4.4/conf/keyfile
  chmod 600 /opt/mongodb_3.4.4/conf/keyfile
  5、将keyfile同步到其他节点
  6、使用keyFile参数指定keyfile启动mongod/configsvr/mongos
  在所有mongod节点中追加key文件路径
  echo "keyFile=/opt/mongodb_3.4.4/conf/keyfile" >> /opt/mongodb_3.4.4/conf/mongod.conf
  echo "keyFile=/opt/mongodb_3.4.4/conf/keyfile" >> /opt/mongodb_3.4.4/conf/configsvr.conf
  echo "keyFile=/opt/mongodb_3.4.4/conf/keyfile" >> /opt/mongodb_3.4.4/conf/mongos.conf
  7、启动 mongod/configsvr/mongos
  一定要先启动配置configsvr,在启动mongod,最后启动mongos
  /opt/mongodb_3.4.4/bin/mongod -f /opt/mongodb_3.4.4/conf/configsvr.conf
  /opt/mongodb_3.4.4/bin/mongod -f /opt/mongodb_3.4.4/conf/mongod.conf
  /opt/mongodb_3.4.4/bin/mongos -f /opt/mongodb_3.4.4/conf/mongos.conf
  8、验证keyfile认证是否生效
  验证mongod:
  /opt/mongodb_3.4.4/bin/mongo   192.168.1.241:10001
  db.auth("root","baiyongjie")
  #/opt/mongodb_3.4.4/bin/mongo   192.168.1.241:10001 -uroot -pbaiyongjie
  验证configsvr:使用rs.status()验证
  /opt/mongodb_3.4.4/bin/mongo   192.168.1.241:20001
  /opt/mongodb_3.4.4/bin/mongo   192.168.1.241:20001 -uroot -p
  验证mongos:使用root账号
  /opt/mongodb_3.4.4/bin/mongo   127.0.0.1:27017
  /opt/mongodb_3.4.4/bin/mongo   127.0.0.1:27017  -uroot -pbaiyongjie
  验证mongos:使用sa账号
  查看已有的账号
  9、测试集群读写是否正常
  在其他服务器上测试数据是否同步
  db.mongotest.find()
  OK! 至此副本集+分片+Keyfile认证搭建完成。
  3.4.4版本相比2.6版本认证方法需要修改为SCRAM-SHA-1
  所以需要修改Mongodb 的认证方式
  1、首先我这边通过数据库版本查看发现是这样的。
  > use admin
  switched to db admin
  > db.system.version.find()
  { "_id" : "featureCompatibilityVersion", "version" : "3.4" }
  { "_id" : "authSchema", "currentVersion" : 5 }
  2、开启MongoDBServiceNoAuth服务,
  使用db.dropUser('username')命令删除之前所有原有的用户,再执行版本更改命令。
  >db.dropUser('admin')
  >db.dropUser('root')
  >db.dropUser('sa')
  >db.system.version.update({"_id":"authSchema"},{$set:{"currentVersion":3}})
  3、创建用户
  db.createUser({
  user:"sa",pwd:"baiyongjie",
  roles:[{"role":"root","db":"admin"}]})
  db.createUser({user:"root",
  pwd:"baiyongjie",
  roles:[{"role":"root","db":"admin"}]})
  db.createUser({user:"admin",
  pwd:"baiyongjie",
  roles:[{"role":"root","db":"admin"}]})


运维网声明 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-626124-1-1.html 上篇帖子: Percona Monitoring and Management (PMM) 监控MongoDB-ygqygq2 下篇帖子: MongoDB数据库聚合
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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