mongodb 3.2 分片集群搭建

本文详细介绍了如何搭建MongoDB 3.2分片集群,包括mongos路由节点、config服务(元数据)和shards服务(数据节点)。关键步骤涉及设置复制集、配置内部认证文件、创建并授权用户,以及连接mongos到集群。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

mongodb 分片集群组件有3部分,

mongos 服务:是路由节点 应用程序跟分片数据节点连接的中间件,
config 服务(元数据):存储分片集的元数据 分片服务(数据节点,存放数据)元数据反映了分片群集内所有数据和组件的状态和组织。元数据包括每个分片上的块的列表以及定义块的范围。 实现方式副本集
shards 服务: 至少是2个复制集

  1. config 服务复制集配置(启用内部认证机制)

config file 如下

storage:
   dbPath: /data/nosql/mongo/mongod/5030/data
   journal:
      enabled: true
   directoryPerDB: true
   engine: wiredTiger
   wiredTiger:
      engineConfig:
         cacheSizeGB: 1
         directoryForIndexes: true
systemLog:
   destination: file
   path: /data/nosql/mongo/mongod/5030/logs/mongod.log
   logAppend: true
   quiet: true
processManagement:
   fork: true
   pidFilePath: /data/nosql/mongo/mongod/5030/data/mongod.pid
operationProfiling:
   slowOpThresholdMs: 1000
replication:
   oplogSizeMB: 10240
   replSetName: rsconf
security:
   keyFile: /data/nosql/mongo/mongod/5030/keys/key
   clusterAuthMode: keyFile
sharding:
   clusterRole: configsvr
net:
   port: 5030

其中下面是最主要的部分

replication:
   oplogSizeMB: 10240
   replSetName: rsconf
security:
   keyFile: /data/nosql/mongo/mongod/5030/keys/key
   clusterAuthMode: keyFile
sharding:
   clusterRole: configsvr

在操作系统新建一个mognodb用户用于管理mongodb

groupadd  mongodb
useradd  -m -g mongodb  mongodb
mkdir -p /data/nosql/mongo/mongod/5030/data
mkdir -p /data/nosql/mongo/mongod/5030/logs
mkdir -p /data/nosql/mongo/mongod/5030/data
mkdir -p /data/nosql/mongo/mongod/5030/keys
openssl rand -base64 756 > /data/nosql/mongo/mongod/5030/keys/key
chown -R mongodb:mongodb /data/nosql/mongo/mongod/5030/
chmod 400 /data/nosql/mongo/mongod/5030/keys/key

启动mongod (三台机器配置一样)

mongod -f  configfile

重要的注意点 分片集群所有的内部验证文件 必须保持一样,即/data/nosql/mongo/mongod/5030/keys/key 内容保持一样

登录初始复制集

mongo --port 5030
rs.initiate(
  {
    _id: "rsconf",
    configsvr: true,
    members: [
      { _id : 0, host : "192.168.201.129:5030" },
      { _id : 1, host : "192.168.201.130:5030" },
      { _id : 2, host : "192.168.201.132:5030" }
    ]
  }
)

在创建一个用户 并授予 userAdminAnyDatabase 权限

admin = db.getSiblingDB("admin")
admin.createUser(
  {
    user: "super",
    pwd: "super123",
    roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
  }
)

分片config 服务配置完毕

2、shards 服务配置
config file 如下

storage:
   dbPath: /data/nosql/mongo/mongod/5000/data
   journal:
      enabled: true
   directoryPerDB: true
   engine: wiredTiger
   wiredTiger:
      engineConfig:
         cacheSizeGB: 1
         directoryForIndexes: true
systemLog:
   destination: file
   path: /data/nosql/mongo/mongod/5000/logs/mongod.log
   logAppend: true
   quiet: true
processManagement:
   fork: true
   pidFilePath: /data/nosql/mongo/mongod/5000/data/mongod.pid
operationProfiling:
   slowOpThresholdMs: 1000
   mode: slowOp
replication:
   oplogSizeMB: 10240
   replSetName: rs1s1
security:
   keyFile: /data/nosql/mongo/mongod/5000/keys/key
   clusterAuthMode: keyFile
sharding:
   clusterRole: shardsvr
net:
   port: 5000

其中下面部分是跟 config 服务是不一样的

sharding:
   clusterRole: shardsvr

重点 /data/nosql/mongo/mongod/5000/keys/key 跟上面/data/nosql/mongo/mongod/5030/keys/key 的内容是一样的

添加系统用户mongodb 用于管理mognodb

groupadd  mongodb
useradd  -m -g mongodb  mongodb
mkdir -p /data/nosql/mongo/mongod/5000/data
mkdir -p /data/nosql/mongo/mongod/5000/logs
mkdir -p /data/nosql/mongo/mongod/5000/data
mkdir -p /data/nosql/mongo/mongod/5000/keys
    data/nosql/mongo/mongod/5000/keys/key
chown -R mongodb:mongodb /data/nosql/mongo/mongod/5000/
chmod 400 /data/nosql/mongo/mongod/5000/keys/key

启动mongod
mongod -f configfile (三台机器配置一样)

登录初始复制集

mongo --port 5000  
rs.initiate(
  {
    _id: "rs1s1",
    members: [
      { _id : 0, host : "192.168.201.145:5000" },
      { _id : 1, host : "192.168.201.146:5000" },
      { _id : 2, host : "192.168.201.147:5000" }
    ]
  }
)

在创建一个用户 并授予 userAdminAnyDatabase 权限这个用户是单独给 分片数据复制集使用的

admin = db.getSiblingDB("admin")
admin.createUser(
  {
    user: "super",
    pwd: "super123",
    roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
  }
)  

使用同样的方法 搭建起另一个数据复制集(我就不列出了)

连接mongos到集群

在mongos 服务器上 创建一个 配置文件 内容如下

systemLog:
   destination: file
   path: /data/nosql/mongo/mongos/logs/mongod.log
   logAppend: true
   quiet: true
processManagement:
   fork: true
   pidFilePath: /data/nosql/mongo/mongos/mongod.pid
security:
  keyFile: /data/nosql/mongo/mongod/mongos/keys/key
sharding:
  configDB: rsconf/192.168.201.129:5030,192.168.201.130:5030,192.168.201.132:5030
net:
   port: 5080

重点注意:/data/nosql/mongo/mongod/mongos/keys/key 跟上面的内容是一样的

 sharding:
  configDB: rsconf/192.168.201.129:5030,192.168.201.130:5030,192.168.201.132:5030

中 rsconf 是 config 服务 复制集的名称 /后面 分别对应 复制集的ip 跟端口

启动 mongos 实例

mongos -f configfile

连接到mongos 实例

mongo --host localhost --port 5080
use admin
db.auth('super','super123')  ### config 服务上的 用户

依次将单个分片副本集添加到集群

sh.addShard("rs1s2/192.168.201.161:5010,192.168.201.162:5010,192.168.201.163:5010")
sh.addShard("rs1s1/192.168.201.145:5000,192.168.201.146:5000,192.168.201.147:5000")

查看状态

 sh.status() 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值