IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> MongoDB 4.2.2 分片集群搭建及测试 -> 正文阅读

[大数据]MongoDB 4.2.2 分片集群搭建及测试

目录

环境基础

服务规划

1.创建所有目录与文件

1.1创建根shardcluster目录存放所有分片分片服务文件

1.2创建ConfigServer(服务器)文件

1.2创建shard(分片)集群文件

1.3创建mongos(路由服务)文件

1.4解压安装mongodb

1.5发送所有分片服务文件到nosql02与nosql03

1.6修改nosql02与nosql03的文件

2.启动服务

2.1启动ConfigServer

2.2启动Shard

?2.3启动mongos

?3.分片测试与基本操作

3.1分片测试

3.2安全认证


环境基础

Linux建议使用CentOS7

配置签需要关闭防火墙,两句一起执行就永久关闭了

#临时关闭(重启恢复)
systemctl stop firewalld
#开机自动关闭(重启生效)
service  iptables stop

修改主机名为nosql01、nosql02、nosql03

写入主机名解析即/etc/hosts文件写入IP与对应主机名

生成安全认证文件

为了系统安全建议创建user_mongo用户,同时注意用户的切换,要保证生成的文件拥有者所属组均为user_mongo

服务规划

虚拟机服务器IP地址Shard1Shard2Shard3mongosConfig?Server
名称名称
NoSQL_1nosql01192.168.159.1312701827020270192702127022
主节点仲裁节点副节点主节点
NoSQL_2nosql02192.168.121.1322701927018270202702127022
副节点主节点仲裁节点副节点
NoSQL_3nosql03192.168.121.13327020270192701827022
仲裁节点副节点主节点副节点

1.创建所有目录与文件

1.1创建根shardcluster目录存放所有分片分片服务文件

mkdir -p /opt/servers/mongodb_demo/shardcluster

1.2创建ConfigServer(服务器)文件

mkdir -p /opt/servers/mongodb_demo/shardcluster/configServer/configFile
mkdir -p /opt/servers/mongodb_demo/shardcluster/configServer/data
mkdir -p /opt/servers/mongodb_demo/shardcluster/configServer/logs
touch /opt/servers/mongodb_demo/shardcluster/configServer/logs/config_server.log
touch /opt/servers/mongodb_demo/shardcluster/configServer/configFile/mongodb_config.conf

编辑mongodb_config.conf文件内容

内容中安全认证部分先为注释状态配置到安全认证步骤时在将注释去除

#编辑mongodb_config.conf
vi /opt/servers/mongodb_demo/shardcluster/configServer/configFile/mongodb_config.conf

#mongodb_config.conf文件内容
dbpath=/opt/servers/mongodb_demo/shardcluster/configServer/data
logpath=/opt/servers/mongodb_demo/shardcluster/configServer/logs/config_server.log
port=27022
bind_ip=nosql01
logappend=true
fork=true
maxConns=5000
replSet=configs
configsvr=true
#安全认证
#keyFile=/opt/servers/mongodb_demo/replicaset/key/keyfile
#auth=true

1.2创建shard(分片)集群文件

mkdir -p /opt/servers/mongodb_demo/shardcluster/shard/configFile
mkdir -p /opt/servers/mongodb_demo/shardcluster/shard/shard1_data
mkdir -p /opt/servers/mongodb_demo/shardcluster/shard/shard2_data
mkdir -p /opt/servers/mongodb_demo/shardcluster/shard/shard3_data
mkdir -p /opt/servers/mongodb_demo/shardcluster/shard/logs
touch /opt/servers/mongodb_demo/shardcluster/shard/logs/shard1.log
touch /opt/servers/mongodb_demo/shardcluster/shard/logs/shard1.log
touch /opt/servers/mongodb_demo/shardcluster/shard/logs/shard1.log
touch /opt/servers/mongodb_demo/shardcluster/shard/configFile/mongodb_shard1.conf
touch /opt/servers/mongodb_demo/shardcluster/shard/configFile/mongodb_shard2.conf
touch /opt/servers/mongodb_demo/shardcluster/shard/configFile/mongodb_shard3.conf

编辑mongodb_shard1.conf内容

#编辑mongodb_shard1.conf
vi /opt/servers/mongodb_demo/shardcluster/shard/configFile/mongodb_shard1.conf

#mongodb_shard1.conf内容
dbpath=/opt/servers/mongodb_demo/shardcluster/shard/shard1_data
logpath=/opt/servers/mongodb_demo/shardcluster/shard/logs/shard1.log
port=27018
logappend=true
fork=true
maxConns=5000
bind_ip=nosql01
shardsvr=true
replSet=shard1
#安全认证
#keyFile=/opt/servers/mongodb_demo/replicaset/key/keyfile
#auth=true

编辑mongodb_shard2.conf内容

#编辑mongodb_shard2.conf
vi /opt/servers/mongodb_demo/shardcluster/shard/configFile/mongodb_shard2.conf

#mongodb_shard2.conf内容
dbpath=/opt/servers/mongodb_demo/shardcluster/shard/shard2_data
logpath=/opt/servers/mongodb_demo/shardcluster/shard/logs/shard2.log
port=27020
logappend=true
fork=true
maxConns=5000
bind_ip=nosql01
shardsvr=true
replSet=shard2
#安全认证
#keyFile=/opt/servers/mongodb_demo/replicaset/key/keyfile
#auth=true

编辑mongodb_shard3.conf

#编辑mongodb_shard3.conf
vi /opt/servers/mongodb_demo/shardcluster/shard/configFile/mongodb_shard3.conf
#mongodb_shard3.conf内容
dbpath=/opt/servers/mongodb_demo/shardcluster/shard/shard3_data
logpath=/opt/servers/mongodb_demo/shardcluster/shard/logs/shard3.log
port=27019
logappend=true
fork=true
maxConns=5000
bind_ip=nosql01
shardsvr=true
replSet=shard3
#安全认证
#keyFile=/opt/servers/mongodb_demo/replicaset/key/keyfile
#auth=true

1.3创建mongos(路由服务)文件

mkdir -p /opt/servers/mongodb_demo/shardcluster/mongos/configFile
mkdir -p /opt/servers/mongodb_demo/shardcluster/mongos/logs
touch /opt/servers/mongodb_demo/shardcluster/mongos/logs/mongos.log
touch /opt/servers/mongodb_demo/shardcluster/mongos/configFile/mongodb_mongos.conf

编辑mongodb_mongos.conf内容

#编辑mongodb_mongos.conf
vi /opt/servers/mongodb_demo/shardcluster/mongos/configFile/mongodb_mongos.conf

#mongodb_mongos.conf文件内容
logpath=/opt/servers/mongodb_demo/shardcluster/mongos/logs/mongos.log
logappend=true
port=27021
bind_ip=nosql01
fork=true
configdb=configs/nosql01:27022,nosql02:27022,nosql03:27022
maxConns=20000
#安全认证
#keyFile=/opt/servers/mongodb_demo/replicaset/key/keyfile

1.4解压安装mongodb

?注:压缩包需要通过软件Xftp或CRT中sudo rz或其它方法上传至Linux,名称以使用版本为主

#解压安装包
tar -zxvf /opt/software/mongodb-linux-x86_64-rhel70-4.2.2.tgz -C /opt/servers/mongodb_demo/shardcluster/
#进入解压文件夹所在目录
cd /opt/servers/mongodb_demo/shardcluster/
#修改解压文件夹的名称
mv mongodb-linux-x86_64-rhel70-4.2.2/ mongodb

1.5发送所有分片服务文件到nosql02与nosql03

scp -r /opt/servers/mongodb_demo/shardcluster user_mongo@nosql02:/opt/servers/mongodb_demo/
scp -r /opt/servers/mongodb_demo/shardcluster user_mongo@nosql03:/opt/servers/mongodb_demo/

1.6修改nosql02与nosql03的文件

这里主要是修改相应文件中参数相应代码不在赘述

nosql02
修改nosql02 mongodb_config.conf 中主机名
修改nosql02 mongodb_shard1.conf 中主机名并将端口号改为:27019
修改nosql02 mongodb_shard2.conf 中主机名并将端口号改为:27018
修改nosql02 mongodb_shard3.conf 中主机名并将端口号改为:27020
修改nosql02 mongodb_mongos.conf 中主机名

nosql03
修改nosql03 mongodb_config.conf 中主机名
修改nosql03 mongodb_shard1.conf 中主机名并将端口号改为:27020
修改nosql03 mongodb_shard2.conf 中主机名并将端口号改为:27019
修改nosql03 mongodb_shard3.conf 中主机名并将端口号改为:27018
删除mongos文件或修改其中主机名

2.启动服务

注:启动服务、登录客户端要在解压安装的.../mongodb/bin目录下进行,或将此bin目录添加至环境变量启动即可去掉“./”在任何目录下启动

2.1启动ConfigServer

在nosql01、nosql02、nosql03上执行?

./mongod -f /opt/servers/mongodb_demo/shardcluster/configServer/configFile/mongodb_config.conf

登录nosql01ConfigServer客户端

./mongo --host nosql01 --port 27022

初始化副本集

rs.initiate()

添加副节点

rs.add('nosql02:27022')
rs.add('nosql03:27022')

2.2启动Shard

?在nosql01、nosql02、nosql03上执行

./mongod -f /opt/servers/mongodb_demo/shardcluster/shard/configFile/mongodb_shard1.conf
./mongod -f /opt/servers/mongodb_demo/shardcluster/shard/configFile/mongodb_shard2.conf
./mongod -f /opt/servers/mongodb_demo/shardcluster/shard/configFile/mongodb_shard3.conf

?登录客户端添加节点

#登录Shard1客户端
./mongo --host nosql01 --port 27018
#初始化副本集
rs.initiate()
#添加副节点
rs.add('nosql02:27019')
#添加仲裁节点
rs.addArb('nosql03:27020')

#登录Shard2客户端
./mongo --host nosql02 --port 27018
#初始化副本集
rs.initiate()
#添加副节点
rs.add('nosql03:27019')
#添加仲裁节点
rs.addArb('nosql01:27020')

#登录Shard3客户端
./mongo --host nosql03 --port 27018
#初始化副本集
rs.initiate()
#添加副节点
rs.add('nosql01:27019')
#添加仲裁节点
rs.addArb('nosql02:27020')

?2.3启动mongos

在nosql01、nosql02、或nosql03上执行

./mongos -f /opt/servers/mongodb_demo/shardcluster/mongos/configFile/mongodb_mongos.conf

?登录mongos客户配置分片集群


#登录mongos客户端
./mongo --host nosql01 --port 27021
#切换数据库
use gateway
#添加分片集群至路由
sh.addShard("shard1/nosql01:27018,nosql02:27019,nosql03:27020")
sh.addShard("shard2/nosql01:27020,nosql02:27018,nosql03:27019")
sh.addShard("shard3/nosql01:27019,nosql02:27020,nosql03:27018")

?3.分片测试与基本操作

3.1分片测试

登录mongos客户端

./mongo --host nosql01 --port 27021

设置chunk

#切换到数据库config
use config
#设置块大小为1M
db.settings.save({"_id":"chunksize","value":1})

模拟写入数据

#切换至school数据库
use school
#写入测试数据
for(i=1;i<=50000;i++){db.user.insert({"id":1,"name":"jack"+i})}

对数据库进行分片操作

#切换到数据库gateway
use gateway
#实现数据库school分片
sh.enableSharding("school")

对集合进行分片操作

#切换到数据库school
use school
#以id作为索引
db.user.createIndex({"id":1})
#切换到数据库gateway
use gateway
#以id作为分片键对集合user进行分片
sh.shardCollection("school.user",{"id":1})

查看分片信息

sh.status()

3.2安全认证

创建用户

#切换至数据库admin
use admin
#创建全局用户itcastAdmin
db.createUser({user:"itcastAdmin",pwd:"123456",roles:[{role:"userAdminAnyDatabase",db:"admin"},{role:"readWriteAnyDatabase",db:"admin"},{role:"dbAdminAnyDatabase",db:"admin"}]})
#创建root权限用户
db.createUser({user:"admin",pwd:"123456",roles:[{role:"root",db:"admin"}]})

关闭服务

注:这里关闭的顺序要留意。ps -ef | grep ...为查询进程号的命令,查询后需通过(kill -2 进程号)关闭。

#关闭分片集群
#首先要关闭平衡器(Balancer)
use gateway
sh.stopBalancer()

#关闭mongos
ps -ef |grep mongodb_mongos

#关闭shard
ps -ef |grep mongodb_shard

#关闭Config Server
ps -ef |grep mongodb_config

修改所有conf文件添加安全认证部分内容(这里为去除“#”注释符)

vi /opt/servers/mongodb_demo/shardcluster/configServer/configFile/mongodb_config.conf 

vi /opt/servers/mongodb_demo/shardcluster/shard/configFile/mongodb_shard1.conf

vi /opt/servers/mongodb_demo/shardcluster/shard/configFile/mongodb_shard2.conf

vi /opt/servers/mongodb_demo/shardcluster/shard/configFile/mongodb_shard3.conf

vi /opt/servers/mongodb_demo/shardcluster/mongos/configFile/mongodb_mongos.conf

启动分片集群

顺序为:

启动Config Server->启动shard->启动mongos? 命令这里不在赘述

登录mongos客户端测试安全认证

#登录mongos客户端
./mongo --host nosql01 --port 27021

#尝试读取文件
use school
db.user.find().limit(10)

#全局登录用户
use admin
db.auth("itcastAdmin","123456")
#再次读取文件
use school
db.user.find().limit(10)


#尝试查看状态
sh.status()
#root用户登录
use admin
db.auth("admin","123456")
#再次查看状态
sh.status()
  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2021-11-24 08:01:04  更:2021-11-24 08:01:13 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 9:05:41-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码