MongoDB高可用集群搭建示例
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一个副本集,副本集中会有主节点,从节点,仲裁节点。
组件交互图:
3 集群搭建 环境准备:
mongo1(127.0.0.1) mongo2(127.0.0.1) mongo3(127.0.0.1)
config1(端口:27018) config2(端口:27018) config3(端口:27018)
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安装包下载地址:
Downloads for win32相关文章