十年河东,十年河西,莫欺少年穷

学无止境,精益求精

本文参考至:https://zhuanlan.zhihu.com/p/84406822 感谢知乎作者的无私奉献。

视频讲解:https://www.bilibili.com/video/av52570271/

分片理论:https://www.cnblogs.com/ddbear/p/7746076.html

mongodb相关指令:https://www.cnblogs.com/chenmh/p/8434419.html

本篇博客旨在提供更详细的搭建说明;

1 Mongodb集群介绍

在官方文档的介绍中,MongoDB集群有三种形式:Replica Set(副本集),Sharding(分片集群),Master-Slaver(主从)。那么该如何选择某种集群应用

呢?其实可以从官方的文档介绍中可以得出结论,副本集和主从的模式仅是读写分离与容灾的体现,对于真正到达海量数据时,我们需要的是能将数据按照一定规

则分配至不同服务器进行存储和查询等,这就是分片集群要做的事情,聪明的你肯定已经猜到了,这种模式也囊括了副本集和主从,既然要做集群,那么我们就搭

最顶级的分片集群,本文主要介绍分片集群的搭建,以及分片集群模式下的安全认证处理配置。

2 分片集群的组件介绍

分片集群中主要有三个组件:

  • Routers(前端路由器),mongos充当查询路由器,提供客户端应用程序和分片集群之间的接口。客户端通过驱动选择连接某一个mongs作为集群入口,执行
    数据查询和写入。没错,它也是多个,当然官方要求至少一个,但为了防止单点故障,我们选择3台。
  • Config Servers (配置服务器),config servers配置服务器存储群集的元数据和配置设置。从MongoDB 3.4开始,必须将配置服务器部署为副本集。它主要记录了
    shard的配置信息,元信息,如数据存储目录,日志目录,端口号,chunk信息,是否开启了journal等信息,为了保证它的高可用,官方要求必须是副本集,如果
    配置器一旦整体无法使用,则集群无法使用,所以,它也是3台。
  • Shard (副本集。实际储存数据的载体服务,一个shard角色应该是一个ReaplicaSet组,本
    此我们采用3个Shard,每个shard一个副本集,副本集中会有主节点,从节点,仲裁节点。

组件交互图:

MongoDB   windows环境下搭建高可用分片集群示例

3 集群搭建 环境准备

mongo1(127.0.0.1) mongo2(127.0.0.1) mongo3(127.0.0.1)

config1(端口:27018) config2(端口:27028) config3(端口:27038)

mongos1(端口:27019) mongos2(端口:27029) mongos3(端口:27039)

Shard1(端口:27001) Shard1(端口:27021) Shard1(端口:27031)

Shard2(端口:27002) Shard2(端口:27022) Shard2(端口:27032)

Shard3(端口:27003) Shard3(端口:27023) Shard3(端口:27033)

实际当中,个人觉得mong1,mongo2 ,mongo3应当是在三台不同的服务器,mongos应当与config部署在不同的服务器,各shard组副本集应当部署在不同的服务器,

config可以与shard片部署在同一服务器,也就是说要达到性能最优,至少应当有6台服务器,mongos用3台,config和3组Shard用3台。本文中就以本地Windows7环境为例,

用不同的端口作为伪服务器演示搭建配置过程。MongoBD zip安装包下载地址:

​dl.mongodb.org

注意,集群下不要使用msi安装。本文采用 mongodb-win32-x86_64-2012plus-v4.2-latest.zip

解压之后重命名为mongo,内部目录如下:

MongoDB   windows环境下搭建高可用分片集群示例

在此目录下创建伪服务器目录文件夹:

mongo1(服务器1),mongo2(服务器2),mongo3(服务器3)。如图:

MongoDB   windows环境下搭建高可用分片集群示例

然后在mongo1下分别创建文件夹data(用于存储数据),log(日志文件存放),conf(配置文件存放):

MongoDB   windows环境下搭建高可用分片集群示例

在data下再创建3个文件夹:

MongoDB   windows环境下搭建高可用分片集群示例

在conf下创建三个配置文件(config.conf、mongos.conf、shard1.conf、shard2.conf、shard3.conf):

MongoDB   windows环境下搭建高可用分片集群示例

在log下创建三个日志文件,(config.log、mongos.log、shard1.log、shard2.log、shard3.log),忽略图片中的mongos.diagnostic.data文件夹,这是服务运行时产生的。

MongoDB   windows环境下搭建高可用分片集群示例

好,至此,mong1中的环境准备工作已经结束,将mong1下的所有文件夹拷贝到mongo2和mongo3下。

集群配置编辑:

首先编辑mong1的config的配置文件:config.conf

net:
  port: 27018  #config1的端口,mongo2下的为27028,mongo3下的为27038
  bindIp: 0.0.0.0  #允许连接地址,这里统一设置为允许任何ip连接
systemLog:
  destination: file
  logAppend: true
  path: D:\tool\mongodbmy\mongo\mongo1\log\config.log  #config的日志存储地址,mongo2,mongo3下路径调整即可
storage:
  dbPath: D:\tool\mongodbmy\mongo\mongo1\data\config   #config的数据存储地址,mongo2、mongo3下做相应的调整
  journal:
    enabled: true #数据故障恢复和持久化,肯定是开启
#processManagement:
#  fork: true    #linux下打开此设置,Windows环境下后台启动需要注册服务,
#  pidFilePath: /mongo/config/run/mongod.pid
#副本集名称设置
replication:
  replSetName: configs
#分片集群角色,配置服务器的固定值
sharding:
  clusterRole: configsvr
#这里是集群安全认证配置,首次配置启动集群不打开此配置,先留着,后面再说
#security: 
  #keyFile: D:\tool\mongodbmy\mongo\mongodb-keyfile.file
  #authorization: enabled
View Code

相关文章: