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

[经验分享] Mongodb Replica Sets+Sharding群集 部署手册

[复制链接]

尚未签到

发表于 2018-10-26 09:07:29 | 显示全部楼层 |阅读模式
1.       群集简介
  Mongodb是一个非关系型的分布式数据库,它可以通过自身的群集技术组成mongodb群集,进而实现数据库的横向扩展和数据库的高可用功能。Mongodb数据库群集分为Replica Sets(复制集)和Sharding(分片)两个部分。其中Replica Sets实现了mongodb数据库的高可用功能,Sharding分片实现了数据库的横向分布式扩展。在生产环境中搭建mongodb群集时一般都采取了Replica Sets+Sharding的解决方案。
  Replica Sets+Sharding数据库群集包含三种角色,分别如下所示:

  •   Shard:使用Replica Sets确保每个数据节点都有备份、自动容错转移、自动恢复能力。
  •   Config:存储元数据,确定元数据的完整性
  •   Router:实现访问的负载均衡,提高客户端访问性能


  服务器配置如下:
  IP地址
  内存配置
  Cpu配置
  硬盘
  OS
  192.168.83.45
  8G
  2*4核
  100G
  CentOs6.4 64bit
  192.168.83.46
  8G
  2*4核
  100G
  CentOs6.4 64bit
  192.168.83.47
  8G
  2*4核
  100G
  CentOs6.4 64bit
  表格 1
2.2.    服务器部署规划
  本次服务器部署规划信息如下:
  IP地址
  服务
  端口
  数据目录
  日志目录
  192.168.83.45
  Mongod s1-1
  27020
  /data/mongo/s1_1/db
  /data/mongo/s1_1/log
  Mongod s2-1
  27021
  /data/mongo/s2_1/db
  /data/mongo/s2_1/log
  Mongod c1
  27018
  /data/mongo/config/db
  /data/mongo/config/log
  Mogos 1
  27017
  /data/mongo/route/log
  192.168.83.46
  Mongod s1-2
  27020
  /data/mongo/s1_2/db
  /data/mongo/s1_2/log
  Mongod s2-2
  27021
  /data/mongo/s2_2/db
  /data/mongo/s2_2/log
  Mongod c2
  27018
  /data/mongo/config/db
  /data/mongo/config/log
  Mogos 2
  27017
  /data/mongo/route/log
  192.168.83.47
  Mongod s1-3
  27020
  /data/mongo/s1_3/db
  /data/mongo/s1_3/log
  Mongod s2-3
  27021
  /data/mongo/s2_3/db
  /data/mongo/s2_3/log
  Mongod c3
  27018
  /data/mongo/config/db
  /data/mongo/config/log
  Mogos 3
  27017
  /data/mongo/route/log
  表格 2
2.3.    部署准备

  •   部署前检查服务器网络,确保网络通信正常
  •   部署前确保mongodb软件已经拷贝到上述三台服务器上,本次部署使用的是mongodb-linux-x86_64-2.4.5版本

  • S1
  (1)       将mongodb-linux-x86_64-2.4.5.tar分别拷贝到192.168.83.45、192.168.83.46、192.168.83.47的/usr/local目录下
  (2)       分别切换到三台服务器的/usr/local目录下,使用tar xvzf mongodb-linux-x86_64-2.4.5.tar将软件包解压缩到/usr/local目录下
  (3)       分别在三台服务器的/usr/local目录下使用mv mongodb-linux-x86_64-2.4.5 mongodb命令将文件夹重命名为mongodb
  (4)       在83.45服务器上分别创建如下目录
  mkdir –p /data/mongo/s1_1/db   mkdir –p /data/mongo/s1_1/log
  (5)       在83.46服务器上分别创建如下目录
  mkdir –p /data/mongo/s1_2/db  mkdir –p /data/mongo/s1_2/log
  (6)       在83.47服务器上分别创建如下目录
  (7)       mkdir –p /data/mongo/s1_3/db  mkdir –p /data/mongo/s1_3/log
  (8)       切换到83.45服务器的/usr/local/mongodb/bin目录下执行如下命令:
  ./mongod --shardsvr --replSet s1 --port 27020--dbpath=/data/mongo/s1_1/db --logpath=/data/mongo/s1_1/log/mongo.log--logappend –fork
  (9)       切换到83.46服务器的/usr/local/mongodb/bin目录下执行如下命令:
  ./mongod --shardsvr --replSet s1 --port 27020--dbpath=/data/mongo/s1_2/db --logpath=/data/mongo/s1_2/log/mongo.log--logappend –fork
  (10)   切换到83.47服务器的/usr/local/mongodb/bin目录下执行如下命令:
  ./mongod --shardsvr --replSet s1 --port 27020--dbpath=/data/mongo/s1_3/db --logpath=/data/mongo/s1_3/log/mongo.log--logappend –fork
  (11)   连接三个节点的任一个初始化复制集s1,这里以连接到83.45的27020为例,执行下述命令:
  ./mongo –port 27020
  (12)   切换到admin数据库
  Useadmin
  (13)   依次执行下述命令对复制集S1初始化

  •   config={_id:'s1',members:[{_id:0,host:'192.168.83.45:27020'},{_id:1,host:'192.168.83.46:27020'},{_id:2,host:'192.168.83.47:27020'}]}
  •   rs.initiate(config)
  (14)   初始化完成后查看复制集的状态,执行如下命令:
  rs.status()
3.2.    部署复制集S2
  (1)       在83.45服务器上分别创建如下目录
  mkdir –p /data/mongo/s2_1/db   mkdir –p /data/mongo/s2_1/log
  (2)       在83.46服务器上分别创建如下目录
  mkdir –p /data/mongo/s2_2/db  mkdir –p /data/mongo/s2_2/log
  (3)       在83.47服务器上分别创建如下目录
  mkdir –p /data/mongo/s2_3/db  mkdir –p /data/mongo/s2_3/log
  (4)       切换到83.45服务器的/usr/local/mongodb/bin目录下执行如下命令:
  ./mongod --shardsvr --replSet s2 --port 27021--dbpath=/data/mongo/s2_1/db --logpath=/data/mongo/s2_1/log/mongo.log--logappend --fork
  (5)       切换到83.46服务器的/usr/local/mongodb/bin目录下执行如下命令:
  ./mongod --shardsvr --replSet s2 --port 27021--dbpath=/data/mongo/s2_2/db --logpath=/data/mongo/s2_2/log/mongo.log--logappend --fork
  (6)       切换到83.47服务器的/usr/local/mongodb/bin目录下执行如下命令:
  ./mongod --shardsvr --replSet s2 --port 27021--dbpath=/data/mongo/s2_3/db --logpath=/data/mongo/s2_3/log/mongo.log--logappend --fork
  (7)       连接三个节点的任一个初始化复制集s2,这里以连接到83.45的27021为例,执行下述命令:
  ./mongo –port 27021
  (8)       切换到admin数据库
  Useadmin
  (9)       依次执行下述命令对复制集S1初始化

  •   config={_id:'s2',members:[{_id:0,host:'192.168.83.45:27021'},{_id:1,host:'192.168.83.46:27021'},{_id:2,host:'192.168.83.47:27021'}]}
  •   rs.initiate(config)
  (10)    初始化完成后查看复制集的状态,执行如下命令:
  rs.status()
3.3.    配置configserver
  (1)         分别切换到192.168.83.45、192.168.83.46、192.168.83.47三台服务器的  /usr/local/mongodb/bin目录下:

  •   Cd/usr/local/mongodb/bin
  (2)         依次在192.168.83.45、192.168.83.46、192.168.83.47三台服务器上执行下述命令:

  •   ./mongod  --configsvr --dbpath /data/mongo/config/db--port 27018 --logpath /data/mongo/config/log/mongo.log –fork
  • routeserver
  (1)         分别切换到192.168.83.45、192.168.83.46、192.168.83.47三台服务器的  /usr/local/mongodb/bin目录下:

  •   Cd/usr/local/mongodb/bin
  (2)         依次在192.168.83.45、192.168.83.46、192.168.83.47三台服务器上执行下述命令:

  •   ./mongos--fork--configdb"192.168.83.45:27018,192.168.83.46:27018,192.168.83.47:27018"--logpath /data/mongo/route/log/mongo.log --port 27017
  • ShardCluster
  (1)         连接任一mongos进程执行以下命令,这里以83.45的27017为例

  •   ./mongo192.168.83.45:27017
  (2)         切换到admin数据库

  •   Useadmin
  (3)         依次执行下述命令添加分片

  •   db.runCommand({addshard:"s1/192.168.83.45:27020,192.168.83.46:27020,192.168.83.47:27020"})
  •   db.runCommand({addShard:"s2/192.168.83.45:27021,192.168.83.46:27021,192.168.83.47:27021"})
  (4)         分片添加完成后可以查看分片的状态

  •   db.printShardingStatus()

  (1)         连接任一mongos进程执行以下命令,这里以83.45的27017为例

  •   ./mongo192.168.83.45:27017
  (2)         切换到切片数据库这里以默认的test库为例

  •   Usetest
  (3)         设置分片数据库激活计划分片

  •   db.runCommand({enablesharding:"test"})-----设置分片数据库
  •   db.runCommand({shardcollection:"test.c1",key:{_id:1}})---设置分片集合名称

  (1)         连接任一mongos进程进行数据插入验证,这里以83.45的27017为例

  •   ./mongo192.168.83.45:27017
  (2)         切换到切片数据库test库

  •   Usetest
  (3)         使用下述循环插入数据进行验证,这里以插入30万条数据为例

  •   for(vari=1;i

运维网声明 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-626582-1-1.html 上篇帖子: mongodb分片集群突然停电造成一些错误,分片无法启动(非正常关闭) 下篇帖子: Mongo-connector集成MongoDB到Solr实现增量索引
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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