当前位置:首页 > 数据库运维 > 正文内容

Mongodb分片集群安装部署

zhangquanyu5年前 (2020-10-29)数据库运维2517

1.1 集群架构图

mongo4.2 集群搭建之mongo分片集搭建

2 搭建分片集群

2.1 服务器角色规划

操作系统mongo版本主机ip角色(端口)
CentOS Linux release 7.5.1804 (Core)mongodb4.2.8192.168.1.71shard1(27017) shard2(27018) shard3(27019) config(28018) mongos(27016)
CentOS Linux release 7.5.1804 (Core)mongodb4.2.8192.168.1.72shard1(27017) shard2(27018) shard3(27019) config(28018) mongos(27016)
CentOS Linux release 7.5.1804 (Core)mongodb4.2.8192.168.1.73shard1(27017) shard2(27018) shard3(27019) config(28018) mongos(27016)

2.2 搭建mongodb分片复制集

2.2.1 下载mongo包

wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70-4.2.8.tgz

tar -zxvf mongodb-linux-x86_64-rhel70-4.2.8.tgz -C /data/server/

mv /data/server/mongodb-linux-x86_64-rhel70-4.2.8/ /data/server/mongodb

2.2.2创建相关目录

mkdir -p /data/server/mongodb/mongos/log && mkdir -p /data/server/mongodb/config/data && mkdir -p /data/server/mongodb/config/log && mkdir -p /data/server/mongodb/shard1/data && mkdir -p /data/server/mongodb/shard1/log && mkdir -p /data/server/mongodb/shard2/data && mkdir -p /data/server/mongodb/shard2/log && mkdir -p /data/server/mongodb/shard3/data && mkdir -p /data/server/mongodb/shard3/log

2.2.3 环境变量

vim /etc/profile

export MONGODB_HOME=/data/server/mongodb/

export PATH=$MONGODB_HOME/bin:$PATH
source /etc/profile

2.2.4 搭建config节点复制集

1.修改对应的配置文件

cd /data/server/mongodb/

node1:

vim mongo-cfg.conf

systemLog:
  destination: file
  path: /data/server/mongodb/config/log/mongodb.log
  logAppend: true
storage:
  journal:
    enabled: true
  dbPath: /data/server/mongodb/config/data
  directoryPerDB: true
  wiredTiger:
    engineConfig:
      cacheSizeGB: 1
      directoryForIndexes: true
    collectionConfig:
      blockCompressor: zlib
    indexConfig:
      prefixCompression: true
net:
  bindIp: 192.168.1.71
  port: 28018
replication:
  oplogSizeMB: 2048
  replSetName: configReplSet
sharding:
  clusterRole: configsvr
processManagement: 
  fork: true

node2:

vim mongo-cfg.conf

systemLog:
  destination: file
  path: /data/server/mongodb/config/log/mongodb.log
  logAppend: true
storage:
  journal:
    enabled: true
  dbPath: /data/server/mongodb/config/data
  directoryPerDB: true
  wiredTiger:
    engineConfig:
      cacheSizeGB: 1
      directoryForIndexes: true
    collectionConfig:
      blockCompressor: zlib
    indexConfig:
      prefixCompression: true
net:
  bindIp: 192.168.1.72
  port: 28018
replication:
  oplogSizeMB: 2048
  replSetName: configReplSet
sharding:
  clusterRole: configsvr
processManagement: 
  fork: true


node3:

vim mongo-cfg.conf

systemLog:
  destination: file
  path: /data/server/mongodb/config/log/mongodb.log
  logAppend: true
storage:
  journal:
    enabled: true
  dbPath: /data/server/mongodb/config/data
  directoryPerDB: true
  wiredTiger:
    engineConfig:
      cacheSizeGB: 1
      directoryForIndexes: true
    collectionConfig:
      blockCompressor: zlib
    indexConfig:
      prefixCompression: true
net:
  bindIp: 192.168.1.73
  port: 28018
replication:
  oplogSizeMB: 2048
  replSetName: configReplSet
sharding:
  clusterRole: configsvr
processManagement: 
  fork: true


2.启动配置复制集:

/data/server/mongodb/bin/mongod -f /data/server/mongodb/mongo-cfg.conf


3.登录配置节点

/data/server/mongodb/bin/mongo -host 192.168.1.71 -port 28018 admin

4.初始化命令:

rs.initiate(
  {
     "_id" : "configReplSet", 
     "members" : [
       {"_id" : 0, "host" : "192.168.1.71:28018"},
       {"_id" : 1, "host" : "192.168.1.72:28018"},
       {"_id" : 2, "host" : "192.168.1.73:28018"}
     ]
  }
  )

2.2.5  shard集群配置

[root@DEV-CLOUD1 mongodb]# cat mongod1.conf 
systemLog:
   destination: file
   path: "/data/server/mongodb/shard1/log/mongo.log"
   logAppend: true
storage:
   journal:
      enabled: true
   dbPath: "/data/server/mongodb/shard1/data"
processManagement:
   fork: true
net:
   bindIp: 0.0.0.0
   port: 27017
setParameter:
   enableLocalhostAuthBypass: false
replication:
   replSetName: "shard1_repl"
sharding:
   clusterRole: shardsvr

[root@DEV-CLOUD1 mongodb]# cat mongod2.conf 
systemLog:
   destination: file
   path: "/data/server/mongodb/shard2/log/mongo.log"
   logAppend: true
storage:
   journal:
      enabled: true
   dbPath: "/data/server/mongodb/shard2/data"
processManagement:
   fork: true
net:
   bindIp: 0.0.0.0
   port: 27018
setParameter:
   enableLocalhostAuthBypass: false
replication:
   replSetName: "shard2_repl"
sharding:
   clusterRole: shardsvr

[root@DEV-CLOUD1 mongodb]# cat mongod3.conf 
systemLog:
   destination: file
   path: "/data/server/mongodb/shard3/log/mongo.log"
   logAppend: true
storage:
   journal:
      enabled: true
   dbPath: "/data/server/mongodb/shard3/data"
processManagement:
   fork: true
net:
   bindIp: 0.0.0.0
   port: 27019
setParameter:
   enableLocalhostAuthBypass: false
replication:
   replSetName: "shard3_repl"
sharding:
   clusterRole: shardsvr

[root@DEV-CLOUD1 mongodb]# scp mongod* 192.168.1.72:/data/server/mongodb/
[root@DEV-CLOUD1 mongodb]# scp mongod* 192.168.1.73:/data/server/mongodb/

启动副本集(每台启动)

[root@DEV-CLOUD1 mongodb]# /data/server/mongodb/bin/mongod -f /data/server/mongodb/mongod1.conf

[root@DEV-CLOUD1 mongodb]# /data/server/mongodb/bin/mongod -f /data/server/mongodb/mongod2.conf

[root@DEV-CLOUD1 mongodb]# /data/server/mongodb/bin/mongod -f /data/server/mongodb/mongod3.conf


初始化集群:

shard1:

[root@DEV-CLOUD1 mongodb]# /data/server/mongodb/bin/mongo -port 27017 admin

config = {_id: 'shard1_repl', members: [
                          {_id: 0, host: "192.168.1.71:27017",priority:2},
                          {_id: 1, host: "192.168.1.72:27017",priority:1},
                          {_id: 2, host: "192.168.1.73:27017"}]
           }

rs.initiate(config)

查看

rs.status();


shard2:

[root@DEV-CLOUD1 mongodb]# /data/server/mongodb/bin/mongo -port 27018 admin

config = {_id: 'shard2_repl', members: [
                          {_id: 0, host: "192.168.1.71:27018",priority:1},
                          {_id: 1, host: "192.168.1.72:27018"},
                          {_id: 2, host: "192.168.1.73:27018",priority:2}]
           }

rs.initiate(config)



shard3:

[root@DEV-CLOUD1 mongodb]# /data/server/mongodb/bin/mongo -port 27019 admin

config = {_id: 'shard3_repl', members: [
                          {_id: 0, host: "192.168.1.71:27019"},
                          {_id: 1, host: "192.168.1.72:27019",priority:2},
                          {_id: 2, host: "192.168.1.73:27019",priority:1}]
           }

rs.initiate(config)


2.2.6 mongos节点配置

[root@DEV-CLOUD1 mongodb]# cat mongos.conf
systemLog:
  destination: file
  path: /data/server/mongodb/mongos/log/mongos.log
  logAppend: true
net:
  bindIp: 192.168.1.71
  port: 27016
sharding:
  configDB: configReplSet/192.168.1.71:28018,192.168.1.72:28018,192.168.1.73:28018
processManagement: 
  fork: true

启动mongos

/data/server/mongodb/bin/mongos -f /data/server/mongodb/mongos.conf


[root@DEV-CLOUD2 mongodb]# cat mongos.conf
systemLog:
  destination: file
  path: /data/server/mongodb/mongos/log/mongos.log
  logAppend: true
net:
  bindIp: 192.168.1.72
  port: 27016
sharding:
  configDB: configReplSet/192.168.1.71:28018,192.168.1.72:28018,192.168.1.73:28018
processManagement: 
  fork: true

启动mongos

 /data/server/mongodb/bin/mongos -f /data/server/mongodb/mongos.conf


[root@DEV-CLOUD3 mongodb]# cat mongos.conf
systemLog:
  destination: file
  path: /data/server/mongodb/mongos/log/mongos.log
  logAppend: true
net:
  bindIp: 192.168.1.73
  port: 27016
sharding:
  configDB: configReplSet/192.168.1.71:28018,192.168.1.72:28018,192.168.1.73:28018
processManagement: 
  fork: true

启动mongos

 /data/server/mongodb/bin/mongos -f /data/server/mongodb/mongos.conf


2.2.7 添加集群中的分片节点

[root@DEV-CLOUD1 mongodb]# /data/server/mongodb/bin/mongo -host 192.168.1.71 -port 27016
mongos> use admin

mongos> db.runCommand( { addshard : "shard1_repl/192.168.1.71:27017,192.168.1.72:27017,192.168.1.73:27017",name:"shard1"} )

mongos> db.runCommand( { addshard : "shard2_repl/192.168.1.71:27018,192.168.1.72:27018,192.168.1.73:27018",name:"shard2"} )

mongos> db.runCommand( { addshard : "shard3_repl/192.168.1.71:27019,192.168.1.72:27019,192.168.1.73:27019",name:"shard3"} )

查看分片状态

mongos> sh.status();


集群开启认证:

在192.168.1.71:

(1)

openssl rand -base64 756 > /data/server/mongodb/keyfile.file
chmod 400 /data/server/mongodb/keyfile.file

scp /data/server/mongodb/keyfile.file 192.168.1.72: /data/server/mongodb/

scp /data/server/mongodb/keyfile.file 192.168.1.73: /data/server/mongodb/


(2)

/data/server/mongodb/bin/mongo -host 192.168.1.71 -port 27016

use admin


db.createUser(
{
user:"root",
pwd:"1q2w3e4r",
roles:[{role:"root",db:"admin"}]
}
)

在mongo-cfg.conf 、mongod1.conf、mongod2.conf、mongod3.conf增加:

security:
  keyFile: /data/server/mongodb/keyfile.file
  authorization: enabled

在mongos.conf增加:

security:
  keyFile: /data/server/mongodb/keyfile.file


(3)重启集群

(4)测试:

/data/server/mongodb/bin/mongo -host 192.168.1.71 -port 27016

mongos> use admin
switched to db admin
mongos> db.auth("root","1q2w3e4r")

(5)添加只读账户:

/data/server/mongodb/bin/mongo -host 192.168.1.71 -port 27016

mongos> use admin
switched to db admin
mongos> db.auth("root","1q2w3e4r")


      db.createUser(
{
user:"starbucks_read",
pwd:"e2lcadhESUj",
roles:[{role:"readAnyDatabase",db:"admin"}]
}
)


3 测试分片集群

3.1 激活数据库分片功能

mongos> use admin

mongos> db.runCommand( { enablesharding : "testdb" } )

3.2 创建索引

use testdb

db.users.ensureIndex( { id: 1 } )

3.3 创建分片的键(id)

db.runCommand( { shardcollection : "testdb.users",key : {id: 1} } )

3.4 集合分片验证


创建测试数据,用来测试分片功能,下面的代码向数据库中插入了200w条数据,由于数据量比较大,所以批量插入的时候,时间会稍微有点久.

var arr=[]; for(var i=0;i<2000000;i++){ var uid = i; var name = "mongodb"+i; arr.push({"id":uid,"name":name}); } db.users.insertMany(arr);

mongos> sh.status()


4 balance操作

4.1 balance基础操作

查看mongo集群是否开启了 balance 状态

mongos> sh.getBalancerState()

如果balance开启,查看是否正在有数据的迁移

mongos> sh.isBalancerRunning()


4.2 设置balance窗口

切换到配置节点 
mongos> use config

mongos> sh.setBalancerState( true )

确定balance 是否开启

mongos> sh.getBalancerState()

4.3 关闭balance

停止balance

mongos> sh.stopBalancer()


4.4 打开或关闭某个集群的balance

关闭某个集合的balance

mongos> sh.disableBalancing("testdb.table1")

打开某个集合的balance

mongos> sh.enableBalancing("testdb.table1")


5 安装 mongodb-mms

5.1  在一台新机器上单独安装一个mongodb

wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70-4.2.8.tgz

tar -zxvf mongodb-linux-x86_64-rhel70-4.2.8.tgz -C /data/server/

mv /data/server/mongodb-linux-x86_64-rhel70-4.2.8/ /data/server/mongodb

cd /data/server/mongodb

mkdir data log


[root@cloud mongodb]# cat mongod.conf 
systemLog:
   destination: file
   path: "/data/server/mongodb/log/mongo.log"
   logAppend: true
storage:
   journal:
      enabled: true
   dbPath: "/data/server/mongodb/data"
processManagement:
   fork: true
   timeZoneInfo: /usr/share/zoneinfo
net:
   bindIp: 0.0.0.0
   port: 27017

[root@cloud mongodb]# /data/server/mongodb/bin/mongod -f mongod.conf 

5.2 安装mongodb-mms

 wget https://downloads.mongodb.com/on-prem-mms/tar/mongodb-mms-4.2.15.56937.20200701T0316Z-1.x86_64.tar.gz

tar -zxvf mongodb-mms-4.2.15.56937.20200701T0316Z-1.x86_64.tar.gz -C /data/server/

mv /data/server/mongodb-mms-4.2.15.56937.20200701T0316Z-1.x86_64/ /data/server/mongodb-mms

cd /data/server/mongodb-mms

./bin/mongodb-mms start



5.3网页配置

http://192.168.1.6:8080/





扫描二维码推送至手机访问。

版权声明:本文由张权予博客发布,如需转载请注明出处。

本文链接:https://zhangquanyu.com/?id=5

标签: Mongodb
分享给朋友:
返回列表

上一篇:Memcached安装配置

没有最新的文章了...

“Mongodb分片集群安装部署” 的相关文章

Memcached安装配置

Memcached安装配置

 安装依赖:    yum -y install gcc automake autoconf libtool make gcc gcc-c++   &nb...