美文网首页db
MongoDB分片集群搭建

MongoDB分片集群搭建

作者: 小屁孩cmq | 来源:发表于2021-06-25 17:13 被阅读0次

1,服务器环境准备

进程 IP地址 端口
config server 配置服务器1(primary) 139.196.240.226 28001
config server 配置服务器2(secondary) 8.133.184.34 28001
config server 配置服务器3(secondary) 139.224.244.2 28001
shard server1 主节点 139.196.240.226 28011
shard server1 仲裁 8.133.184.34 28011
shard server1 副节点 139.224.244.2 28011
shard server2 主节点 139.196.240.226 28012
shard server2 仲裁 8.133.184.34 28012
shard server2 副节点 139.224.244.2 28012
shard server3 主节点 139.196.240.226 28013
shard server3 仲裁 8.133.184.34 28013
shard server3 副节点 139.224.244.2 28013
路由服务器 139.196.240.226 28000

2,配置config server服务器

  • 集群之间通信的安全认证证书生成
    • 在每台机器的 /usr/local/mongodb 目录下创建证书存放目录:cert,如下
cd /var/lib/mongo
mkdir cert
  • 生成集群通信证书key文件mongokey,并且将mongokey文件复制到每台机器的 /usr/local/mongodb/cert 目录下

随便进入一台机器,通过openssl命令生成通信key,key文件名字为:mongokey,如下:

cd /
openssl rand -base64 745 > /var/lib/mongo/cert/mongokey
cd /var/lib/mongo/cert/
ls
# 必须将mongokey文件赋权限
chmod -R 600 mongokey
  • 维护好配置文件config.conf,如下:
systemLog:
   destination: file
   path: /usr/local/monogodb/config/log/logs
   logAppend: true

storage:
   dbPath: /usr/local/mongodb/config/data
   journal:
      enabled: true

processManagement:
   fork: true
   pidFilePath: /usr/local/mongodb/config/log/mongod.pid
   timeZoneInfo: /usr/share/zoneinfo

net:
   bindIp: 0.0.0.0
   port: 28001

security:
   #链接认证,也就是账号密码
   authorization: enabled
   #集群内部通信安全证书文件,每台的证书必须一致
   keyFile: /usr/local/mongodb/cert/mongokey   

sharding:
   clusterRole: configsvr

replication:
   replSetName: configs
  • 启动mongo服务
cd /usr/local/mongodb/config/mongdb-4.4.2/bin
./mongod -f /usr/local/mongodb/config/conf/config.conf --fork
  • 连接登录其中一个节点的mongo
cd /usr/local/mongodb/config/mongdb-4.4.2/bin
./mongo --port 28001
  • 初始化副本集
> use admin

> config={_id:'configs', 
 configsvr:true,
    members : [
  {_id : 0, host : '139.224.244.2:28001' },
  {_id : 1, host : '8.133.184.34:28001'},
  {_id : 2, host : '139.196.240.226:28001' }
  ]}
  
> rs.initiate(config)  


image.png

3,配置分片副本集

  • 集群之间通信的安全认证证书生成

操作如上。

  • 维护好配置文件config.conf,如下:
systemLog:
   destination: file
   path: /usr/local/monogodb/shard1/log/logs
   logAppend: true

storage:
   dbPath: /usr/local/mongodb/shard1/data
   journal:
      enabled: true

processManagement:
   fork: true
   pidFilePath: /usr/local/mongodb/shard1/log/mongod.pid
   timeZoneInfo: /usr/share/zoneinfo

net:
   bindIp: 0.0.0.0
   port: 28011

security:
   #链接认证,也就是账号密码
   authorization: enabled
   #集群内部通信安全证书文件,每台的证书必须一致
   keyFile: /usr/local/mongodb/cert/mongokey   

sharding:
   clusterRole: shardsvr

replication:
   replSetName: shard1
  • 启动mongo服务
cd /usr/local/mongodb/shard1/mongdb-4.4.2/bin
./mongod -f /usr/local/mongodb/shard1/conf/config.conf --fork
  • 连接登录其中一个节点的mongo
cd /usr/local/mongodb/shard1/mongdb-4.4.2/bin
./mongo --port 28011
  • 初始化副本集
> use admin

> config={_id:'shard1',     
    members : [
  {_id : 0, host : '139.224.244.2:28011' },
  {_id : 1, host : '8.133.184.34:28011'},
  {_id : 2, host : '139.196.240.226:28011' }
  ]}
  
> rs.initiate(config)  


  • 同样的方法构建副本集shard2和shard3

4,配置路由服务器mongos

  • 在三台服务器上安装mongoDB
cd /usr/local
mkdir mongodb
cd mongodb
mkdir mongos

安装mongoDB到config目录下,安装步骤参考MongoDB安装手册

  • 集群之间通信的安全认证证书生成

操作如上。

  • 维护好配置文件config.conf,如下:
systemLog:
   destination: file
   path: /usr/local/mongodb/mongos/log/logs
   logAppend: true

processManagement:
   fork: true
   pidFilePath: /usr/local/mongodb/mongos/log/mongod.pid
   timeZoneInfo: /usr/share/zoneinfo

net:
   bindIp: 0.0.0.0
   port: 28000
   
security:
   #集群内部通信安全证书文件,每台的证书必须一致
   keyFile: /usr/local/mongodb/cert/mongokey     

sharding:
   configDB: configs/139.224.244.2:28001,8.133.184.34:28001,139.19s6.240.22:28001

  • 在其他节点创建账户认证
> use admin

> db.createUser(
{
user:"username",
pwd:"password",
roles:[{role:"root",db:"admin"}]
}
)
  • 启动mongo服务
cd /usr/local/mongodb/mongos/mongdb-4.4.2/bin
./mongos -f /usr/local/mongodb/mongos/conf/config.conf --fork
  • 启用分片

登录mongos路由服务器

mongo --port 28000
#使用admin数据库
use admin
#串联路由服务器与分配副本集
sh.addShard("shard1/139.224.244.2:28011,8.133.184.34:28011,139.196.240.226:28011")
sh.addShard("shard2/139.224.244.2:28012,8.133.184.34:28012,139.196.240.226:28012")
sh.addShard("shard3/139.224.244.2:28013,8.133.184.34:28013,139.196.240.226:28013")
image.png

5,测试分片

  • 激活数据库分片功能
语法:( { enablesharding : "数据库名称" } )

mongos> db.runCommand( { enablesharding : "test" } )
  • 指定分片建对集合分片,范围片键--创建索引
mongos> use admin
# 根据指定索引分片
mongos> db.runCommand( { shardcollection : "test.vast",key : {id: 1} } )
or
# 根据hash分片
mongos> db.runCommand( { shardcollection : "test.vast",key : {id: "hashed“} } )
  • 集合分片验证
mongos> use test
mongos> for(i=0;i<20000;i++){ db.vast.insert({"id":i,"name":"clsn","age":70,"date":new Date()}); }
mongos> db.vast.stats()

排除掉不重要的信息的测试结果


image.png

相关文章

  • Mongodb分片集群搭建

    MongoDb分片集群搭建 基于mongodb3.6 分片集群的权限控制 Brief: 内部通过keyfile控制...

  • MongoDB分片集群搭建

    本文主要介绍了mongoDB分片集群概念,以及分片集群搭建过程,方便下次参考。 概念 分片(sharding)是一...

  • 搭建Mongodb高可用分片集群

    搭建Mongodb高可用分片集群 一、规划 服务器:IP:192.168.1.101/192.168.1.102/...

  • NoSQL三--mongodb(二)

    目录 十一、mongodb分片介绍十二、mongodb分片搭建十三、mongodb分片测试十四、mongodb备份...

  • mongodb分片集群搭建

    环境 服务器:centOS7 mongodb版本:3.6.2 集群方案:路由服务器(2台)+分片服务器(2个分片,...

  • MongoDB 集群分片搭建

    环境要求 本次安装环境使用了三台乌班图虚拟机, 关于为什么搭建分片集群,想必这里不用多介绍了.肯定是因为数据量太大...

  • MongoDB 分片集群搭建

    摘要 本文内容基于mongodb4.2.3 本文基于本地安装,也就是ip相同,端口不同 3个shard复制集(3台...

  • MongoDB分片集群搭建

    架构图 准备 shard集群配置 config集群配置(仅node1) mongos节点配置(node1、node...

  • MongoDB分片集群搭建

    1,服务器环境准备 进程IP地址端口config server 配置服务器1(primary)139.196.24...

  • mongodb笔记08--分片

    分片(sharding): mongodb的集群搭建方式主要有三种,主从模式,Replica set模式,shar...

网友评论

    本文标题:MongoDB分片集群搭建

    本文链接:https://www.haomeiwen.com/subject/cvyoyltx.html