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

[经验分享] mongodb cluster

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2015-12-22 14:19:55 | 显示全部楼层 |阅读模式
一.mongodb分布式应用原理
MongoDB集群包括一定数量的mongod(分片存储数据)、mongos(路由处理)、config server(配置节点)、clients(客户端)、arbiter(为了当主挂掉的时候能够顺利的选出新的主,一组复制集的数量要求是奇数,如果是偶数个,就需要添加一个仲裁节点,这个节点只负责投票,不存储也不处理数据,所以对性能没啥要求,本次没有使用仲裁节点).


架构
1.架构设计
lvs   master             slave
      172.16.35.130      172.16.35.158
vip   172.16.35.200      端口  27017
      


               Server01          server02          server03
                 172.16.35.101     172.16.35.135     172.16.35.151
Replica Set 1     mongod db01       mongod db01       mongod db01   
Replica Set 2     mongod db02       mongod db02       mongod db02
Replica Set 3     mongod db03       mongod db03       mongod db03
3 config          mongod Config 1   mongod Config 2   mongod Config 3
3 mongos          mongos1           mongos 2          mongos 3


2.主机设计
server01     172.16.35.101     mongod db01:27021 priority:3
                               mongod db02:27022 priority:2
                               mongod db03:27023 priority:1
                               mongod server:20000
                               mongos1:27017


server02     172.16.35.135     mongod db01:27021 priority:1
                               mongod db02:27022 priority:3   
                               mongod db03:27023 priority:2
                               mongod server:20000
                               mongos2:27017


server03     172.16.35.151     mongod db01:27021 priority:2
                               mongod db02:27022 priority:1
                               mongod db03:27023 priority:3
                               mongod server:20000
                               mongos3:27017
mongodb的部署过程
一.安装,及其简单,下载tar包解压即用.设置好命令路径即可
cd /usr/local/src
#monogo的官方下载地址
https://www.mongodb.org/downloads#production
wget http://172.16.35.138/package/mongodb-linux-x86_64-rhel70-3.0.3.tgz
tar zxf mongodb-linux-x86_64-rhel70-3.0.3.tgz
mv mongodb-linux-x86_64-rhel70-3.0.3 /usr/local/mongodb
echo 'export PATH=/usr/local/mongodb/bin/:$PATH' >>/etc/profile
source /etc/profile


#
echo "never" > /sys/kernel/mm/transparent_hugepage/enabled
echo "never" > /sys/kernel/mm/transparent_hugepage/defrag
yum -y install numactl numactl-devel
#
二.配置Replica Sets
1.创建数据和日志目录
server01;server02;server03:
mkdir -p /usr/local/mongodb/{run,conf,sock}
mkdir -p /home/mongodb/data/{db01,db02,db03,server}
mkdir -p /home/mongodb/logs/{db01,db02,db03,server,mongos}


cd /usr/local/mongodb/conf/
2.配置Replica Sets:
#配置文件:mongo3.0可以使用yaml格式的配置文件
#db01
systemLog:
  destination: file
  path: "/home/mongodb/logs/db01/db01.log"
  logAppend: true
storage:
  journal:
    enabled: true
  dbPath: "/home/mongodb/data/db01/"
  directoryPerDB: true
  engine: wiredTiger
  wiredTiger:
    engineConfig:
      cacheSizeGB: 16
      directoryForIndexes: true
    collectionConfig:
      blockCompressor: zlib
    indexConfig:
      prefixCompression: true
processManagement :
  fork: true
  pidFilePath: "/usr/local/mongodb/run/db01.pid"
net:
  port: 27021
replication:
  oplogSizeMB: 20
  replSetName: "db01"
sharding:
  clusterRole: shardsvr


#db02
systemLog:
  destination: file
  path: "/home/mongodb/logs/db01/db02.log"
  logAppend: true
storage:
  journal:
    enabled: true
  dbPath: "/home/mongodb/data/db02/"
  directoryPerDB: true
  engine: wiredTiger
  wiredTiger:
    engineConfig:
      cacheSizeGB: 16
      directoryForIndexes: true
    collectionConfig:
      blockCompressor: zlib
    indexConfig:
      prefixCompression: true
processManagement :
  fork: true
  pidFilePath: "/usr/local/mongodb/run/db02.pid"
net:
  port: 27022
replication:
  oplogSizeMB: 20
  replSetName: "db02"
sharding:
  clusterRole: shardsvr


#db03
systemLog:
  destination: file
  path: "/home/mongodb/logs/db01/db03.log"
  logAppend: true
storage:
  journal:
    enabled: true
  dbPath: "/home/mongodb/data/db03/"
  directoryPerDB: true
  engine: wiredTiger
  wiredTiger:
    engineConfig:
      cacheSizeGB: 16
      directoryForIndexes: true
    collectionConfig:
      blockCompressor: zlib
    indexConfig:
      prefixCompression: true
processManagement :
  fork: true
  pidFilePath: "/usr/local/mongodb/run/db03.pid"
net:
  port: 27023
replication:
  oplogSizeMB: 20
  replSetName: "db03"
sharding:
  clusterRole: shardsvr


#
#启动服务,三台服务器上分别执行;
numactl --interleave=all mongod -f /usr/local/mongodb/conf/db01.conf
numactl --interleave=all mongod -f /usr/local/mongodb/conf/db02.conf
numactl --interleave=all mongod -f /usr/local/mongodb/conf/db03.conf




#用mongo连接其中一台主机的27021端口的mongod(注意,不能是db01的仲裁节点):
mongo --port 27021
>config={_id:'db01',members:[{_id:0,host:'172.16.35.101:27021',priority:3},{_id:1,host:'172.16.35.135:27021',priority:2},{_id:2,host:'172.16.35.151:27021',priority:1}]}
>rs.initiate(config)
#用mongo连接其中一台主机的27022端口的mongod(注意,不能是db02的仲裁节点):
mongo --port 27022
> config={_id:'db02',members:[{_id:0,host:'172.16.35.101:27022',priority:1},{_id:1,host:'172.16.35.135:27022',priority:3},{_id:2,host:'172.16.35.151:27022',priority:2}]}
> rs.initiate(config)
#用mongo连接其中一台主机的27023端口的mongod(注意,不能是db03的仲裁节点):
mongo --port 27023
> config={_id:'db03',members:[{_id:0,host:'172.16.35.101:27023',priority:2},{_id:1,host:'172.16.35.135:27023',priority:1},{_id:2,host:'172.16.35.151:27023',priority:3}]}
> rs.initiate(config)
> rs.status()


3.配置config server
#config server 配置文件如下:
#congfile server
systemLog:
  destination: file
  path: "/home/mongodb/logs/server/server.log"
  logAppend: true
storage:
  journal:
    enabled: true
  dbPath: "/home/mongodb/data/server/"
  directoryPerDB: true
  engine: wiredTiger
  wiredTiger:
    engineConfig:
      cacheSizeGB: 16
      directoryForIndexes: true
    collectionConfig:
      blockCompressor: zlib
    indexConfig:
      prefixCompression: true
processManagement :
  fork: true
  pidFilePath: "/usr/local/mongodb/run/server.pid"
net:
  port: 20000
sharding:
  clusterRole: configsvr
#在3台服务器中分别启动配置服务
numactl --interleave=all mongod -f /usr/local/mongodb/conf/server.conf


4.配置router server
#router server 配置文件如下
#mongos
systemLog:
  destination: file
  path: "/home/mongodb/logs/mongos/mongos.log"
  logAppend: true
processManagement :
  fork: true
  pidFilePath: "/usr/local/mongodb/run/mongos.pid"
net:
  port: 27017
sharding:
  configDB: 172.16.35.101:20000,172.16.35.135:20000,172.16.35.151:20000


#三台服务器上分别启动服务
numactl --interleave=all mongos -f /usr/local/mongodb/conf/mongos.conf


3.配置分片
mongo --port 27017
mongos> use admin
switched to db admin


mongos> db.runCommand({addshard:"db01/172.16.35.101:27021,172.16.35.135:27021,172.16.35.151:27021"})


mongos> db.runCommand({addshard:"db02/172.16.35.101:27022,172.16.35.135:27022,172.16.35.151:27022"})


mongos> db.runCommand({addshard:"db03/172.16.35.101:27023,172.16.35.135:27023,172.16.35.151:27023"})


#直接写主节点也可以;
mongos> db.runCommand({addshard:"db01/172.16.35.101:27021"})
{ "shardAdded" : "db01", "ok" : 1 }
mongos> db.runCommand({addshard:"db02/172.16.35.135:27022"})
{ "shardAdded" : "db02", "ok" : 1 }
mongos> db.runCommand({addshard:"db03/172.16.35.151:27023"})
{ "shardAdded" : "db03", "ok" : 1 }
#测试




7.激活数据库(work)和集合(status)的分片功能.
mongos> db.runCommand({enablesharding:"work"})
{ "ok" : 1 }
mongos> db.runCommand({shardcollection:"work.status",key:{_id:1}})
{ "collectionsharded" : "work.status", "ok" : 1 }

运维网声明 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-154851-1-1.html 上篇帖子: 配置MongoDB3.04集群分片 下篇帖子: MongoDB 选择片键时应该考虑的问题
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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