MongoDB分片集群部署

一、生产环境

1、操作系统

三台linux服务器,版本CentOS 7.6

IP分片shard分片端口
196.168.3.151shard120001
192.168.3.182shard220002
192.168.3.184shard320003

2、mongodb版本

版本4.2.6及以上 mongo下载

3、关闭防火墙

systemctl stop filewalld

二、安装

在三台机器上分别创建一下目录

#创建相关目录
mkdir /data/mongos; cd /data/mongos
mkdir {logs, config}
mkdir {configsvr, mongos, shard1, shard2, shard3} 

配置文件

在三台机器上的config文件夹中都创建以下shard1.conf, shard2.conf, shard3.conf, configsvr.conf, mongos.conf

#shard1.conf
systemLog:
    destination: file
    path: /data/mongos/logs/shard1.log
    logAppend: true
processManagement:
    fork: true
    pidFilePath: "/data/mongos/shard1/shard1.pid"
net:
    bindIp: 0.0.0.0
    port: 20001
storage:
    dbPath: "/data/mongos/shard1"
    wiredTiger:
        engineConfig:
            cacheSizeGB: 1
    journal:
        enabled: true
setParameter:
    enableLocalhostAuthBypass: false
replication:
    replSetName: "shard1"
sharding:
    clusterRole: shardsvr
#shard2.conf
systemLog:
    destination: file
    path: /data/mongos/logs/shard2.log
    logAppend: true
processManagement:
    fork: true
    pidFilePath: "/data/mongos/shard2/shard2.pid"
net:
    bindIp: 0.0.0.0
    port: 20002
storage:
    dbPath: "/data/mongos/shard2"
    wiredTiger:
        engineConfig:
            cacheSizeGB: 1
    journal:
        enabled: true
setParameter:
    enableLocalhostAuthBypass: false
replication:
    replSetName: "shard2"
sharding:
    clusterRole: shardsvr
#shard3.conf
systemLog:
    destination: file
    path: /data/mongos/logs/shard3.log
    logAppend: true
processManagement:
    fork: true
    pidFilePath: "/data/mongos/shard3/shard3.pid"
net:
    bindIp: 0.0.0.0
    port: 20003
storage:
    dbPath: "/data/mongos/shard3"
    wiredTiger:
        engineConfig:
            cacheSizeGB: 1
    journal:
        enabled: true
setParameter:
    enableLocalhostAuthBypass: true
replication:
    replSetName: "shard3"
sharding:
    clusterRole: shardsvr
#configsvr.conf
systemLog:
    destination: file
    path: /data/mongos/logs/configsvr.log
    logAppend: true
processManagement:
    fork: true
    pidFilePath: "/data/mongos/configsvr/configsvr.pid"
net:
    bindIp: 0.0.0.0
    port: 27017
storage:
    dbPath: "/data/mongos/configsvr"
    wiredTiger:
        engineConfig:
            cacheSizeGB: 1
            directoryForIndexes: true
        collectionConfig:
            blockCompressor: zlib
        indexConfig:
            prefixCompression: true
sharding:
    clusterRole: configsvr
replication:
    oplogSizeMB: 2048
    replSetName: csvr
#mongos.conf
systemLog:
    destination: file
    path: /data/mongos/logs/configsvr.log
    logAppend: true
processManagement:
    fork: true
    pidFilePath: "/data/mongos/configsvr/configsvr.pid"
net:
    bindIp: 0.0.0.0
    port: 27017
storage:
    dbPath: "/data/mongos/configsvr"
    wiredTiger:
        engineConfig:
            cacheSizeGB: 1
            directoryForIndexes: true
        collectionConfig:
            blockCompressor: zlib
        indexConfig:
            prefixCompression: true
sharding:
    clusterRole: configsvr
replication:
    oplogSizeMB: 2048
    replSetName: csvr
[root@localhost config]# more mongos.conf 
systemLog:
    destination: file
    path: /data/mongos/logs/mongos.log
    logAppend: true
processManagement:
    fork: true
    pidFilePath: /data/mongos/mongos.pid
net:
    bindIp: 0.0.0.0
    port: 27020
sharding:
    configDB: csvr/192.168.3.151:27017,192.168.3.184:27017,192.168.3.182:27017

分片初始化

#每一个服务器上都要执行
mongod -f ./config/shard1.conf
mongod -f ./config/shard2.conf
mongod -f ./config/shard3.conf

选择任意一台服务器,执行以下操作 

mongo --port 20001

#在mongo shell中执行初始化
rs.initiate({_id:"shard1",  members:[{_id:0,host:"192.168.3.151:20001"},{_id:1,host:"192.168.3.182:20001"},{_id:2,host:"192.168.3.184:20001"}]})
mongo --port 20002

#在mongo shell中执行初始化
rs.initiate({_id:"shard2",  members:[{_id:0,host:"192.168.3.151:20001"},{_id:1,host:"192.168.3.182:20001"},{_id:2,host:"192.168.3.184:20001"}]})
mongo --port 20003

#在mongo shell中执行初始化
rs.initiate({_id:"shard3",  members:[{_id:0,host:"192.168.3.151:20001"},{_id:1,host:"192.168.3.182:20001"},{_id:2,host:"192.168.3.184:20001"}]})

 初始化之后,集群会自动分配primary和second

配置服务器初始化

在三台服务器上执行

#启动配置服务器
mongod -f ./config/configsvr.conf

#进入mongo shell
mongo --port 27017

#初始化
rs.initiate({_id:"csvr",  members:[{_id:0,host:"192.168.3.151:27017"},{_id:1,host:"192.168.3.182:27017"},{_id:2,host:"192.168.3.184:27017"}]})

mongos初始化

在三台机器上启动mongos

#启动mongos
mongos -f ./config/mongos.conf

任意一台服务器执行

mongo --port 27020

#在mongo shell中执行
sh.addShard("shard1/192.168.3.151:20001,192.168.3.182:20001,192.168.3.184:20001")
sh.addShard("shard2/192.168.3.151:20002,192.168.3.182:20002,192.168.3.184:20002")
sh.addShard("shard3/192.168.3.151:20003,192.168.3.182:20003,192.168.3.184:20003")

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
对于MongoDB分片集群部署,您可以按照以下步骤进行操作: 1. 部署配置服务器(config server):配置服务器用于存储分片集群的元数据,可以独立部署或与其他组件共享服务器。您可以选择部署多个配置服务器以增加可用性。 2. 启动分片服务器(shard server):分片服务器用于存储数据,您可以选择在不同的物理机器或虚拟机上启动多个分片服务器。每个分片服务器都可以容纳一部分数据。 3. 启动路由器(router):路由器也称为mongos进程,它是应用程序和分片集群之间的中间件。它将客户端请求路由到正确的分片服务器,并协调数据的读写操作。 4. 添加分片:在启动了路由器和分片服务器之后,您需要将分片服务器添加到集群中。使用mongos进程连接到配置服务器,并使用`sh.addShard()`命令添加每个分片服务器。 5. 配置分片键(shard key):分片键用于将数据划分为不同的分片。选择一个适合您数据模式和查询模式的字段作为分片键,并使用`sh.shardCollection()`命令启用分片。 6. 验证部署:您可以使用`sh.status()`命令来验证集群的状态,并确保所有组件都正常工作。 这只是一个简单的概述,实际部署过程可能会更加复杂,并且取决于您的环境和需求。建议您参考MongoDB官方文档中关于分片集群部署的详细指南,以获得更全面的了解和操作指导。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值