一、环境说明

1、我们prod环境MongoDB的集群架构是做的分片集群的部署,但是目前我们没有分片,即所有数据都在一个分片上,后期如果数量大,需要分配,集群随时可以分片,对业务方透明

2、各个角色的部署情况

角色

IP

端口

复制集名称

mongos

172.21.244.101,172.21.244.102,172.21.244.94

27000

config server

172.21.244.101,172.21.244.102,172.21.244.94

27100

repl_configsvr

存储节点(shard)

172.21.244.101,172.21.244.102,172.21.244.94

27101

shard1

3、MongoDB版本

mongos> db.version()

4.0.4-62-g7e345a7

二、基础信息准备

0、系统优化

echo "never" >/sys/kernel/mm/transparent_hugepage/enabled

echo "never" >/sys/kernel/mm/transparent_hugepage/defrag

1、下载MongoDB二进制文件

cd /chj/app

wget ops.chehejia.com:9090/pkg/chj_mongodb_4.0.4.tar.gz

tar -zxvf chj_mongodb_4.0.4.tar.gz

2、相关目录建立

#建立base目录

mkdir /chj/data/mongodb/chj_db

#把MongoDB二进制文件移动到base目录下的bin文件夹

mv chj_mongodb_4.0.4/bin /chj/data/mongodb/chj_db/bin

#建立认证文件目录

mkdir /chj/data/mongodb/chj_db/auth

#建立配置文件目录

mkdir /chj/data/mongodb/chj_db/conf

#建立config server的data和日志目录

mkdir /chj/data/mongodb/chj_db/config/data -p

mkdir /chj/data/mongodb/chj_db/config/log

#建立mongos的日志目录

mkdir /chj/data/mongodb/chj_db/mongos/log -p

#建立数据节点data和日志目录

mkdir /chj/data/mongodb/chj_db/shard1/data -p

mkdir /chj/data/mongodb/chj_db/shard1/log

3、相关配置文件编写

A、mongos的配置文件编写

vim /chj/data/mongodb/chj_db/conf/mongos.conf

systemLog:

destination: file

logAppend: true

path: /chj/data/mongodb/chj_db/mongos/log/mongos.log

processManagement:

fork: true # fork and run in background

pidFilePath: /chj/data/mongodb/chj_db/mongos/log/mongos.pid # location of pidfile

timeZoneInfo: /usr/share/zoneinfo

net:

port: 27000

bindIpAll: true

maxIncomingConnections: 1000

unixDomainSocket:

enabled: true

pathPrefix: /chj/data/mongodb/chj_db/mongos/log

filePermissions: 0700

security:

keyFile: /chj/data/mongodb/chj_db/auth/keyfile.key

# authorization: enabled

#replication:

sharding:

configDB: repl_configsvr/172.21.244.101:27100,172.21.244.102:27100,172.21.244.94:27100

B、config server的配置文件编写

vim /chj/data/mongodb/chj_db/conf/config.conf

systemLog:

destination: file

logAppend: true

path: /chj/data/mongodb/chj_db/config/log/congigsrv.log

storage:

dbPath: /chj/data/mongodb/chj_db/config/data

journal:

enabled: true

wiredTiger:

engineConfig:

directoryForIndexes: true

processManagement:

fork: true # fork and run in background

pidFilePath: /chj/data/mongodb/chj_db/config/log/configsrv.pid # location of pidfile

timeZoneInfo: /usr/share/zoneinfo

net:

port: 27100

bindIp: 0.0.0.0 # Enter 0.0.0.0,:: to bind to all IPv4 and IPv6 addresses or, alternatively, use the net.bindIpAll setting.

#bindIpAll: true

maxIncomingConnections: 1000

unixDomainSocket:

enabled: true

pathPrefix: /chj/data/mongodb/chj_db/config/data

filePermissions: 0700

security:

keyFile: /chj/data/mongodb/chj_db/auth/keyfile.key

authorization: enabled

replication:

replSetName: repl_configsvr

sharding:

clusterRole: configsvr

C、存储节点的配置文件编写

vim /chj/data/mongodb/chj_db/conf/shard1.conf

systemLog:

destination: file

logAppend: true

path: /chj/data/mongodb/chj_db/shard1/log/shard1.log

storage:

dbPath: /chj/data/mongodb/chj_db/shard1/data

journal:

enabled: true

wiredTiger:

engineConfig:

directoryForIndexes: true

processManagement:

fork: true # fork and run in background

pidFilePath: /chj/data/mongodb/chj_db/shard1/log/shard1.pid # location of pidfile

timeZoneInfo: /usr/share/zoneinfo

net:

port: 27101

bindIp: 0.0.0.0 # Enter 0.0.0.0,:: to bind to all IPv4 and IPv6 addresses or, alternatively, use the net.bindIpAll setting.

#bindIpAll: true

maxIncomingConnections: 1000

unixDomainSocket:

enabled: true

pathPrefix: /chj/data/mongodb/chj_db/shard1/data

filePermissions: 0700

security:

keyFile: /chj/data/mongodb/chj_db/auth/keyfile.key

authorization: enabled

replication:

replSetName: shard1

sharding:

clusterRole: shardsvr

4、生产key认证文件

echo "chj123456" >/chj/data/mongodb/chj_db/auth/keyfile.key

#设置文件的权限为400,不然服务无法启动

chmod 400 /chj/data/mongodb/chj_db/auth/keyfile.key

三、集群初始化

1、启动 config server 服务

/chj/data/mongodb/chj_db/bin/mongod -f /chj/data/mongodb/chj_db/conf/config.conf

2、初始化config server集群

#登录其中一个config server节点

/chj/data/mongodb/chj_db/bin/mongo --port 27100

#配置集群

config = { _id:"repl_configsvr",members:[ {_id:0,host:"172.21.244.101:27100"}, {_id:1,host:"172.21.244.102:27100"}, {_id:2,host:"172.21.244.94:27100"}] }

#初始化集群

rs.initiate(config)

PS:

结果输出如下,说明集群初始化成功,可以通过rs.status()命令查看集群状态

{

"ok" : 1,

"$gleStats" : {

"lastOpTime" : Timestamp(1557538260, 1),

"electionId" : ObjectId("000000000000000000000000")

},

"lastCommittedOpTime" : Timestamp(0, 0)

}

3、启动存储节点服务

/chj/data/mongodb/chj_db/bin/mongod -f /chj/data/mongodb/chj_db/conf/shard1.conf

4、初始化存储集群

#登录你希望是主节点的服务器

/chj/data/mongodb/chj_db/bin/mongo --port 27101

#配置集群

config = { _id:"shard1",members:[ {_id:0,host:"172.21.244.101:27101"}, {_id:1,host:"172.21.244.102:27101"},{_id:2,host:"172.21.244.94:27101",arbiterOnly:true}] }

#初始化集群

rs.initiate(config)

PS:

结果输出如下,说明集群初始化成功,可以通过rs.status()命令查看集群状态

{ "ok" : 1 }

5、添加存储集群的管理账号

登录主节点

/chj/data/mongodb/chj_db/bin/mongo --port 27101

use admin

db.createUser(

{

user: "root",

pwd: "123456",

roles: [ { role: "root", db: "admin" } ]

}

)

6、启动mongos 服务

/chj/data/mongodb/chj_db/bin/mongos -f /chj/data/mongodb/chj_db/conf/mongos.conf

7、添加config server的管理账号

登录任意一个mongos节点

/chj/data/mongodb/chj_db/bin/mongo --port 27000

use admin

db.createUser(

{

user: "root",

pwd: "123456",

roles: [ { role: "root", db: "admin" } ]

}

)

8、把存储节点添加到mongos

登录任意一个mongos节点(如果是在上一步的窗口,需要退出重新登录)

/chj/data/mongodb/chj_db/bin/mongo --port 27000

use admin

db.auth('root','123456')

#添加分片

sh.addShard('shard1/172.21.244.101:27101,172.21.244.102:27101,172.21.244.94:27101')

#查看分片状态

sh.status()

四、交付业务方

1、建立应用账号

登录任意一个mongos节点

/chj/data/mongodb/chj_db/bin/mongo --port 27000

use admin

db.auth('root','123456')

#切到业务数据库

use chj_db

#建立读写账号

db.createUser(

{

user: "chj_db_rw",

pwd: "123456",

roles: [

{ role: "readWrite", db: "chj_db" },

{ role: "dbOwner", db: "chj_db" }

]

}

)

#建立只读账号(根据业务需求确认是否需要)

db.createUser(

{

user: "chj_db_r",

pwd: "123456",

roles: [ { role: "read", db: "chj_db" } ]

}

)

2、交付开发人员信息

连接地址:172.21.244.101:27000,172.21.244.102:27000,172.21.244.94:27000

库名:chj_db

账号:chj_db_rw

密码:123456

五、数据库启用分片

如果后期业务量大,需要开启分片,配置如下

#指定需要分片的数据库

mongos> sh.enableSharding("chj_db")

{

"ok" : 1,

"operationTime" : Timestamp(1557546835, 3),

"$clusterTime" : {

"clusterTime" : Timestamp(1557546835, 3),

"signature" : {

"hash" : BinData(0,"bkrrr8Kxrr9j9udrDc/hURHld38="),

"keyId" : NumberLong("6689575940508352541")

}

}

}

#在chj_db数据库和users集合中创建了name和age为升序的片键

mongos> sh.shardCollection("chj_db.users",{name:1,age:1})

{

"collectionsharded" : "chj_db.users",

"collectionUUID" : UUID("59c0b99f-efff-4132-b489-f6c7e3d98f42"),

"ok" : 1,

"operationTime" : Timestamp(1557546861, 12),

"$clusterTime" : {

"clusterTime" : Timestamp(1557546861, 12),

"signature" : {

"hash" : BinData(0,"UBB1A/YODnmXwG5eAhgNLcKVzug="),

"keyId" : NumberLong("6689575940508352541")

}

}

}

#查看分片情况

mongos> sh.status()

--- Sharding Status ---

sharding version: {

"_id" : 1,

"minCompatibleVersion" : 5,

"currentVersion" : 6,

"clusterId" : ObjectId("5cd625e0da695346d740f749")

}

shards:

{ "_id" : "shard1", "host" : "shard1/172.21.244.101:27101,172.21.244.102:27101", "state" : 1 }

active mongoses:

"4.0.4-62-g7e345a7" : 3

autosplit:

Currently enabled: yes

balancer:

Currently enabled: yes

Currently running: no

Failed balancer rounds in last 5 attempts: 0

Migration Results for the last 24 hours:

No recent migrations

databases:

{ "_id" : "chj_db", "primary" : "shard1", "partitioned" : true, "version" : { "uuid" : UUID("82088bc7-7b98-4033-843d-7058d8d959f6"), "lastMod" : 1 } }

chj_db.users

shard key: { "name" : 1, "age" : 1 }

unique: false

balancing: true

chunks:

shard1 1

{ "name" : { "$minKey" : 1 }, "age" : { "$minKey" : 1 } } -->> { "name" : { "$maxKey" : 1 }, "age" : { "$maxKey" : 1 } } on : shard1 Timestamp(1, 0)

{ "_id" : "config", "primary" : "config", "partitioned" : true }

config.system.sessions

shard key: { "_id" : 1 }

unique: false

balancing: true

chunks:

shard1 1

{ "_id" : { "$minKey" : 1 } } -->> { "_id" : { "$maxKey" : 1 } } on : shard1 Timestamp(1, 0)

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

mongodb 集群shard_MongoDB分片集群部署详解相关推荐

  1. 粒子群算法(PSO)——算法详解(一)

    PSO的算法配置 粒子的速度更新公式:vi(t+1)=vi(t)+c1⋅r1(t)⋅[yi(t)−xi(t)]+c2⋅r2(t)⋅[y^i(t)−xi(t)]\mathbf v_{i}(t+1)=\m ...

  2. MySQL高可用方案-PXC(Percona XtraDB Cluster)环境部署详解

    MySQL高可用方案-PXC(Percona XtraDB Cluster)环境部署详解 Percona XtraDB Cluster简称PXC.Percona Xtradb Cluster的实现是在 ...

  3. k8s安装和部署详解

    k8s安装和部署详解 文章目录 k8s安装和部署详解 kubernetes官方提供的三种部署方式 minikube kubeadm 二进制包 使用kubeadm方式安装 1.准备环境 2.确认dock ...

  4. kafka安装部署详解

    kafka安装部署详解 1. zookeeper安装部署 1.1 zookeeper下载 1.2 zookeeper配置启动 1.3 zookeeper验证 2. kafka安装部署 2.1 kafk ...

  5. Postgresql -XL 10r.1.1安装部署详解(跳过N多坑)

    Postgresql -XL 10r.1.1安装部署详解(跳过N多坑) 目前安装postgre10r1.1的文档较少,本人目前是在三台虚拟机上搭建的postgre xl 10r1.1集群,之后将pos ...

  6. (03)_k8s之flannel三种模型安装部署详解

    flannel三种模型安装部署详解 yht_1990关注[2020-10-04 12:13:47](javascript:

  7. 视频教程-wordpress建站教程之环境部署详解课程-PHP

    wordpress建站教程之环境部署详解课程 著名的photoshop狂热者,讲课深入浅出,生动风趣.参与编写多部photoshop视频教程,数码照片处理教程等,麒麟设计教程网特聘主讲人. 梁田聪 ¥ ...

  8. Java编程工具(11):IDEA 服务器热部署详解E

    IDEA 服务器热部署详解(On Update action/On frame deactivation) IDEA 服务器热部署详解(On Update action/On frame deacti ...

  9. 【华为云计算产品系列】云上容灾架构实战部署详解

    [华为云计算产品系列]云上容灾架构实战部署详解 1.前言 2. 容灾方案介绍 2.1. 本地高可用 2.2. 同城双活 2.3. 主备容灾(同步远程复制/异步远程复制) 2.3.1. 同步远程复制 2 ...

  10. phpstudy服务器站点,服务器中phpstudy网站部署详解

    导读:服务器中phpstudy网站部署详解 phpstudy是一款比较优质的建站软件,上面搭载了Apache+iis+mysql等多个网站环境,而且可以自由切换到所需版本,对于需要部署复杂环境的网站, ...

最新文章

  1. Exchange ActiveSync
  2. Deep Learning(深度学习)相关网站
  3. 暂时无法登陆GOOGLE,却依然可以用GOOGLE搜索--更多GOOGLE入口
  4. 如何写好接口(php写app移动端接口示例)
  5. QT mainwindow四件套
  6. 提高solr的搜索速度
  7. Day 20:网络编程(1)
  8. 从零开始实现一个简易的Java MVC框架(九)--优化MVC代码
  9. vestacp升级php,升级VestaCP面板PHP版本至PHP7.x
  10. 一、SIM800C简介
  11. python 小海龟 教案_幼儿园小班健康活动《勇敢的小海龟》教案
  12. 一款好用的电池管理工具:App Tamer Mac版
  13. 甘肃省谷歌地球高程DEM等高线下载
  14. 也许你会用到的58个硬件面试题!
  15. 大数据处理的一些总结和应用(有关舆情监控)
  16. 【linux】 下根目录,家目录区别
  17. 区块链入门学习网址大全
  18. java script error_JavasScript 简单错误总结 错误调试
  19. python对矩阵进行(-1/2)方
  20. 怎样重命名文件夹名,标记当天日期

热门文章

  1. .NET core ABP 获取远程IP地址
  2. day01函数的重载
  3. [LeetCode] Three Sum题解
  4. python学习笔记4:函数
  5. PHP复习第三天-文件上传
  6. can't resolve symbol 'R' ...
  7. POJ 1127_Jack Straws
  8. objC 类名后圆括号的意义
  9. 用堆栈和用递归分别实现倒序打印
  10. html5视频播放器 知乎,iPhone、iPad 如何播放网页调用优酷视频?