MongoDB分片集群搭建

来源:互联网 发布:淘宝上好的汉元素店家 编辑:程序博客网 时间:2024/04/30 10:53
  • 系统架构图
    这里写图片描述
  • 准备12台机器
    10.202.12.178(主1)
    10.202.12.179(备1)
    10.202.12.180(主2)
    10.202.12.181(备2)
    10.202.12.182(主3)
    10.202.12.183(备3)
    10.202.12.184(主4)
    10.202.12.185(备4)
    10.202.12.186(仲裁1、路由1、配置1)
    10.202.12.189(仲裁2、路由2、配置2)
    10.202.12.192(仲裁3、路由3、配置3)
    10.202.12.194(仲裁4)
  • 分别在每台机器上建立mongodb分片对应测试文件夹
10.202.12.178上创建文件夹 mkdir -p /app/mongo/shard1/master/{data,log,conf}在10.202.12.179上创建文件夹 mkdir -p /app/mongo/shard1/slave/{data,log,conf}在10.202.12.180上创建文件夹 mkdir -p /app/mongo/shard2/master/{data,log,conf}在10.202.12.181上创建文件夹 mkdir -p /app/mongo/shard2/slave/{data,log,conf}在10.202.12.182上创建文件夹 mkdir -p /app/mongo/shard3/master/{data,log,conf}在10.202.12.183上创建文件夹 mkdir -p /app/mongo/shard3/slave/{data,log,conf}在10.202.12.184上创建文件夹 mkdir -p /app/mongo/shard4/master/{data,log,conf}在10.202.12.185上创建文件夹 mkdir -p /app/mongo/shard4/slave/{data,log,conf}在10.202.12.18610.202.12.18910.202.12.192上分别创建文件夹mkdir -p /app/mongo/shard/mongos/{data,log,conf}mkdir -p /app/mongo/shard/config/{data,log,conf}mkdir -p /app/mongo/shard/arbiter/{data,log,conf}在10.202.12.194上创建文件夹mkdir -p /app/mongo/shard/arbiter/{data,log,conf}
  • 在10.202.12.186、10.202.12.189、10.202.12.192上分别启动配置服务器
./mongod  --configsvr  --dbpath  /app/mongo/shard/config/data --port 27019  --logpath  /app/mongo/shard/config/log/config.log  --fork
  • 在10.202.12.186、10.202.12.189、10.202.12.192上分别启动mongos服务器
./mongos  --configdb10.202.12.186:27019,10.202.12.189:27019,10.202.12.192:27019--port  27018   --logpath   /app/mongo/shard/mongos/log/mongos.log  --fork
  • 配置各个分片的副本集
vi /app/mongo/shard1/master/conf/mongod.conf(10.202.12.178)
#数据目录dbpath=/app/mongo/shard1/master/data#日志目录logpath=/app/mongo/shard1/master/log/mongod.log#日志以追加方式添加logappend=true#为每一个数据库按照数据库名建立文件夹存放directoryperdb=true # 开启后台进程运行fork = true#IPbind_ip=10.202.12.178#端口port = 27017#副本集名称replSet=shard1  
vi /app/mongo/shard1/slave/conf/mongod.conf(10.202.12.179)
#数据目录dbpath=/app/mongo/shard1/slave/data#日志目录logpath=/app/mongo/shard1/slave/log/mongod.log#日志以追加方式添加logappend=true#为每一个数据库按照数据库名建立文件夹存放directoryperdb=true # 开启后台进程运行fork = true#IPbind_ip=10.202.12.179#端口port = 27017#副本集名称replSet=shard1
vi /app/mongo/shard/arbiter/conf/mongod.conf(10.202.12.186)
#数据目录dbpath=/app/mongo/shard/arbiter/data#日志目录logpath=/app/mongo/shard/arbiter/log/mongod.log#日志以追加方式添加logappend=true#为每一个数据库按照数据库名建立文件夹存放directoryperdb=true # 开启后台进程运行fork = true#IPbind_ip=10.202.12.186#端口port = 27017#副本集名称replSet=shard1

其它三个分片的配置类似

  • 分别在每台机器上启动mongodb
 ./mongod -f /app/mongo/shard1/master/conf/mongod.conf
登陆10.202.12.178,连接mongodb#设置第一个分片副本集./mongo  10.202.12.178#使用admin数据库use admin#定义副本集配置config = { _id:"shard1", members:[                     {_id:0,host:"10.202.12.178:27017"},                     {_id:1,host:"10.202.12.179:27017"},                     {_id:2,host:"10.202.12.186:27017",arbiterOnly:true}                ]         }#初始化副本集配置rs.initiate(config);

其它三个分片类似

  • 配置路由服务器
    目前搭建了mongodb配置服务器、路由服务器,各个分片服务器,不过应用程序连接到 mongos 路由服务器并不能使用分片机制,还需要在程序里设置分片配置,让分片生效
    #连接到mongos
./mongo  10.202.12.186:27018#使用admin数据库user admin#串联路由服务器与分配副本集1db.runCommand( { addshard : "shard1/10.202.12.178:27017,10.202.12.179:27017,10.202.12.186:27017"});#串联路由服务器与分配副本集2db.runCommand( { addshard : "shard2/10.202.12.180:27017,10.202.12.181:27017,10.202.12.189:27017"});#串联路由服务器与分配副本集3db.runCommand( { addshard : "shard3/10.202.12.182:27017,10.202.12.183:27017,10.202.12.192:27017"});#串联路由服务器与分配副本集4db.runCommand( { addshard : "shard4/10.202.12.184:27017,10.202.12.185:27017,10.202.12.194:27017"});#查看分片服务器的配置db.runCommand( { listshards : 1 } );
  • 配置分片规则
    目前配置服务、路由服务、分片服务、副本集服务都已经串联起来了,但我们的目的是希望插入数据,数据能够自动分片,连接在mongos上,准备让指定的数据库、指定的集合分片生效
指定countly数据库分片生效db.runCommand( { enablesharding :"countly"});指定数据库里需要分片的集合和片键db.runCommand( { shardcollection : "countly.user",key : {id: 1} } )
0 0
原创粉丝点击