Mongodb分片集群的搭建及错误总结

目录

一、配置服务器的部署

二、分片服务器的部署

三、路由服务器的部署

四、mongodb的部署

配置服务器的开启

分片服务器的开启

路由服务器的开启

分片集群的关闭


在配置之前我们要先弄清楚之间的关系。

  我们总共要配的服务器包括在三台虚拟机上配置三台配置服务器、九台分片服务器、两台路由服务器,其中配置服务器中nosql01为主节点,其他节点上的两台为副本节点或仲裁节点,这三台配置服务器构成一个副本集;分片服务器一台虚拟机上有三台分片服务器,实现对数据的分片存储,而剩余两台分别和对应的服务器构成副本集(即nosql01上有shard1、shard2、shard3这三台服务器实现数据的分片存储,同时他们和其他两台构成副本集实现数据的高可用性);路由服务器则实现对请求和资源的转发协调。

由于部署分片集群时,每台虚拟机都要启动不同的服务进程,因此部署分片集群之前,需要清楚每台虚拟机的服务端口号所表示的服务,从而避免出现端口冲突的情况。端口配置如下:

Mongodb分片集群的搭建及错误总结_第1张图片

首先创建存放分片集群配置相关内容,该内容分别存放配置服务器、分片服务器、路由服务器的数据、配置文件和日志文件。

mkdir -p /opt/servers/mongodb_demo/shardcluster/

接下来就开始正文了。

一、配置服务器的部署

我们现在nosql01下创建存放配置文件的目录、配置文件、存放数据文件的目录、存放日志文件的目录

//存放配置文件
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

在configFile下创建配置文件并加入如下内容

vi  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
二、分片服务器的部署

在nosql01下创建存放配置文件的目录、配置文件、存放三个分片服务器的数据文件的目录及文件、存放日志文件的目录


//存放分片服务器的配置文件。
mkdir -p /opt/servers/mongodb_demo/shardcluster/shard/configFile

//存放分片服务器1的数据文件。
mkdir -p /opt/servers/mongodb_demo/shardcluster/shard/shard1_data

//存放分片服务器2的数据文件。
mkdir -p /opt/servers/mongodb_demo/shardcluster/shard/shard2_data

//存放分片服务器3的数据文件。
mkdir -p /opt/servers/mongodb_demo/shardcluster/shard/shard3_data

//存放分片服务器的日志文件。
mkdir -p /opt/servers/mongodb_demo/shardcluster/shard/logs

//分片服务器1的日志管理文件
touch /opt/servers/mongodb_demo/shardcluster/shard/logs/shard1.log

//分片服务器2的日志管理文件
touch /opt/servers/mongodb_demo/shardcluster/shard/logs/shard2.log

//分片服务器3的日志管理文件
touch /opt/servers/mongodb_demo/shardcluster/shard/logs/shard3.log

//分片服务器1的配置文件
touch /opt/servers/mongodb_demo/shardcluster/shard/configFile/mongodb_shard1.conf

//分片服务器1的配置文件
touch /opt/servers/mongodb_demo/shardcluster/shard/configFile/mongodb_shard2.conf

//分片服务器1的配置文件
touch /opt/servers/mongodb_demo/shardcluster/shard/configFile/mongodb_shard3.conf

将配置文件写入以下内容

Shard1

vi mongodb_shard1.conf
dbpath=/opt/servers/mongodb_demo/shardcluster/shard/shard11_data
logpath=/opt/servers/mongodb_demo/shardcluster/shard/logs/shard1.log
port=27018
bind_ip=nosql01
logappend=true
fork=true
maxConns=5000
replSet=shard1
shardsvr=true

Shard2

vi mongodb_shard2.conf
dbpath=/opt/servers/mongodb_demo/shardcluster/shard/shard2_data
logpath=/opt/servers/mongodb_demo/shardcluster/shard/logs/shard2.log
port=27020
bind_ip=nosql01
logappend=true
fork=true
maxConns=5000
replSet=shard2
shardsvr=true

Shard3

vi mongodb_shard3.conf
dbpath=/opt/servers/mongodb_demo/shardcluster/shard/shard3_data
logpath=/opt/servers/mongodb_demo/shardcluster/shard/logs/shard3.log
port=27019
bind_ip=nosql01
logappend=true
fork=true
maxConns=5000
replSet=shard3
shardsvr=true
三、路由服务器的部署

由于路由服务器不存放数据,我们只需要配置配置文件和日志文件即可。

在nosql01下创建存放配置文件和日志文件的目录

//存放路由服务器的配置文件。
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

在配置文件下写入以下内容

logpath=/opt/servers/mongodb_demo/shardcluster/mongos/logs/mongos.log
logappend = true
port = 27021
bind_ip=nosql01
fork = true
#指定配置服务器(Config Server)地址
configdb = configs/nosql01:27022,nosql02:27022,nosql03:27022
maxConns=20000
四、mongodb的部署

mongodb分片集群的部署本质上还是mongodb的部署,接下来进行部署mongodb。

通过sudo rz 命令或者 xftp 将MongoDB安装包上传到服务器nosql01的/opt/software/目录下

可以上官网找自己对应的版本,以下是我的mongodb,需要的可自取。

链接:https://pan.baidu.com/s/1zZfr9xv4T0ep7jQaqWycyw?pwd=9629 
提取码:9629 
 

将MongoDB安装包的用户和用户组权限修改为user_mongo。

chmod -R user_mongo:user_mongo /opt/servers/mongodb_demo

解压安装MongoDB,将MongoDB安装包解压到目录/opt/servers/ mongo_demo/shardcluster/下

tar -zxvf /opt/software/mongodb-linux-x86_64-rhel70-4.2.24.tgz -C /opt/servers/mongodb_demo/shardcluster/

由于文件名太长,我们改一下文件名

mv mongodb-linux-x86_64-rhel70-4.2.24/ mongodb

至此,nosql01上的配置服务器、分片服务器、路由服务器全部创建完成。结构如下:

Mongodb分片集群的搭建及错误总结_第2张图片

Mongodb分片集群的搭建及错误总结_第3张图片

擦汗!!~

真不不容易,接下来,会配置一个虚拟机的分片集群,剩下的就交给你们了,将另外两台虚拟机做同样的配置,注意配置文件的端口号和数据和日志文件的路径要更改。具体更改的端口号,见刚才是的端口号分配表。路由服务器在本次的配置中只配了,两台,你可以根据自己的情况,自行更改。

分割线

---------------------------------------------------------------------------------------------------------------------------------

好了,现在你已经将其他两台虚拟机的分片集群配置好了,现在我们开启分片集群。

注意注意注意!一定要按照先配置服务器、再分片服务器、最后路由服务器的顺序,否则一不小心就要重新开始。

在开启之前我们要先进入到mongodb安装目录的bin目录下

cd /opt/servers/mongodb_demo/shardcluster/mongodb/bin
配置服务器的开启

分别在三台集群输入命令

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

三台服务器均出现successful则说明开启成功

如果出现

我看网上好多博主说是非正常关闭,但是第一次开怎么会是非正常关闭呢,然后我想了一下,以上创了那么多文件,唯一可能出现错误的地方就是配置文件,所以大家一定要检查一下自己的配置文件是否写入正确,报包括端口号,路径,文件类型。

分片服务器的开启

分别在三台虚拟机输入命令:

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

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

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

出现successful即为开启成功

路由服务器的开启

两台虚拟机下分别输入

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

出现successful即为成功

最后通过命令查看进程

ps -ef | grep mongo

如图:

由于配置服务器、分片服务器、路由服务器是副本集的形式,所以我们还要登陆客户端对其进行初始化

./mongo --host nosql01 --port 27022

rs.initiate()

configs:SECONDARY> rs.add('nosql02:27022')

configs:PRIMARY> rs.add('nosql03:27022')

执行上述命令后,控制台会返回当前添加副本操作是否成功的信息,若信息中出现字段“OK”的值为1,则说明当前副本添加成功。

注意,那个结点是主节点就在那个结点初始化

Mongodb分片集群的搭建及错误总结_第4张图片

退出配置服务器的副本集可以使用命令exit进行退出,然后进行分片服务器的操作。

进入分片服务器初始化后也是相互添加结点。

nosql01

 ./mongo --host nosql01 --port 27018

rs.initiate()

shard1:SECONDARY> rs.add('nosql02:27019')

shard1:PRIMARY> rs.add('nosql03:27020')

nosql02

./mongo --host nosql02 --port 27018

 rs.initiate()

shard2:SECONDARY> rs.add('nosql03:27019')

shard2:PRIMARY> rs.add('nosql01:27020')

nosql03

./mongo --host nosql03 --port 27018

rs.initiate()

shard3:SECONDARY> rs.add('nosql01:27019')

shard3:PRIMARY> rs.add('nosql02:27020')

执行上述命令后,控制台会返回当前添加Shard操作是否成功的信息,若信息中出现字段“OK”的值为1,则说明当前Shard添加成功。

最后初始化完成后,三台虚拟机上shard1会形成一个副本集,shard2会形成一个副本集,shard3会形成一个副本集.在主节点下通过 rs,status() 查看副本集状态。

在nosql01下 登陆路由服务器的客户端

./mongo --host nosql01 --port 27021
切换到gatway数据库
mongos> use gateway
//添加分片服务器1
mongos> sh.addShard("shard1/nosql01:27018,nosql02:27019,nosql03:27020")
//添加分片服务器2
mongos> sh.addShard("shard2/nosql01:27020,nosql02:27018,nosql03:27019") 
//添加分片服务器3
mongos> sh.addShard("shard3/nosql01:27019,nosql02:27020,nosql03:27018")

执行上述命令后,控制台会返回当前添加Shard操作是否成功的信息,若信息中出现字段“OK”的值为1,则说明当前Shard添加成功。

到此,完成了分片集群部署!

分片集群的关闭

但是,如果你想下次启动分片集群正常使用的话,请继续往下看。

分片集群开启是什么顺序来着?关闭分片集群的时候,将此顺序倒过来。也就是说先关闭路由服务

器,在关闭分片服务器,最后关闭配置服务器。

如这个分片集群的进程。(exit 进去bin目录下 通过 ps -ef | grep mongo查看进程)

杀死路由服务器

kill -2 6435

使用ps -ef | grep mongo查看进程是否关闭,进程关闭后关闭分片服务器的进程

kill -2 4421 4516 4602

使用ps -ef | grep mongo查看进程是否关闭,进程关闭后关闭配置服务器的进程

kill -2 4327

使用ps -ef | grep mongo查看进程是否关闭,全部关闭后则可以正常关闭电脑了!

其他结点也是相同操作。

你可能感兴趣的:(mongodb,mongodb,数据库,分布式,数据库架构)