基于docker容器下mongodb 4.0.0 的Replica Sets+Sharded Cluster集群(1)

本文涉及的产品
容器服务 Serverless 版 ACK Serverless,317元额度 多规格
容器服务 Serverless 版 ACK Serverless,952元额度 多规格
容器镜像服务 ACR,镜像仓库100个 不限时长
简介: 基于docker容器下mongodb 4.0.0 的Replica Sets+Sharded Cluster集群(1)

目标


使用三台物理机做数据库集群
任意一台宕机之后不会影响线上的业务运转 
不会有任何的数据丢失


方案


采用的是Replica Sets+Sharded Cluster的集群
具有高可用,故障转移,分布式存储等特性


image.png


image.png


依上图所示我们此次集群配置如下:
三台物理机,每台物理机拥有完整的分片集群配置,都可独立运行
配置服务器:使用使用3个配置服务器确保元数据完整性。
路由(mongos)进程:使用3个路由进程实现平衡,提高客户端接入性能
3 个分片进程:Shard11,Shard12,Shard13 组成一个副本集,提供Sharding 中 Shard1 的功能。
3 个分片进程:Shard21,Shard22,Shard23 组成一个副本集,提供Sharding 中 Shard2 的功能。


构建一个 mongoDB Sharding Cluster 需要三种角色:shard 服务器(ShardServer)、配置服务器(config Server)、路由进程(Route Process)


  • Shard 服务器


shard 服务器即存储实际数据的分片,
每个 shard 可以是一个 mongod 实例, 
也可以是一组 mongod 实例构成的 Replica Sets.
为了实现每个 Shard 内部的故障 自动转换,
MongoDB 官方建议每个 shard 为一组 Replica Sets.


  • 配置服务器


为了将一个特定的 collection 存储在多个 shard 中,
需要为该 collection 指定 一个 shard key,
决定该条记录属于哪个 chunk,
配置服务器可以存储以下信息, 
每个shard节点的配置信息,
每个chunk的shard key范围,
chunk在各shard 的分布情况,
集群中所有 DB 和 collection 的 sharding 配置信息。


  • 路由(mongos)进程


它是一个前端路由,客户端由此接入,
首先询问配置服务器需要到哪个 shard 上查询或保存记录,
然后连接相应的 shard 执行操作,最后将结果返回给客户端,
客户端只需要将原本发给 mongod 的查询或更新请求原封不动地发给路由进程,
而不必关心所操作的记录存储在哪个shard 上。


实施


目前我在自己电脑上搭建该环境即就一台物理机


先规划下端口分配


mongos1 mongos2 mongos3
10011 10012 10013
config1 config2 config3
10021 10022 10023
share11 share12 share13
10031 10032 10033
share21 share22 share23
10041 10042 10043


文件目录


先创建一个如下的目录结果
mengfaniaodeMBP:third_software mengfanxiao$ tree mongodb/
mongodb/
├── node1
│   ├── config-server1
│   │   ├── backup
│   │   ├── config
│   │   │   └── config.conf
│   │   └── db
│   ├── mongos1
│   │   ├── backup
│   │   ├── config
│   │   │   └── config.conf
│   │   └── db
│   ├── shard11
│   │   ├── backup
│   │   ├── config
│   │   │   └── config.conf
│   │   └── db
│   └── shard21
│       ├── backup
│       ├── config
│       │   └── config.conf
│       └── db
├── node2
│   ├── config-server2
│   │   ├── backup
│   │   ├── config
│   │   │   └── config.conf
│   │   └── db
│   ├── mongos2
│   │   ├── backup
│   │   ├── config
│   │   │   └── config.conf
│   │   └── db
│   ├── shard12
│   │   ├── backup
│   │   ├── config
│   │   │   └── config.conf
│   │   └── db
│   └── shard22
│       ├── backup
│       ├── config
│       │   └── config.conf
│       └── db
└── node3
    ├── config
    ├── config-server3
    │   ├── backup
    │   ├── config
    │   │   └── config.conf
    │   └── db
    ├── db
    ├── mongos3
    │   ├── backup
    │   ├── config
    │   │   └── config.conf
    │   └── db
    ├── shard13
    │   ├── backup
    │   ├── config
    │   │   └── config.conf
    │   └── db
    └── shard23
        ├── backup
        ├── config
        │   └── config.conf
        └── db
如果3台物理机的话 把对应的node1 node2 node3复制过去即可
相关实践学习
MongoDB数据库入门
MongoDB数据库入门实验。
快速掌握 MongoDB 数据库
本课程主要讲解MongoDB数据库的基本知识,包括MongoDB数据库的安装、配置、服务的启动、数据的CRUD操作函数使用、MongoDB索引的使用(唯一索引、地理索引、过期索引、全文索引等)、MapReduce操作实现、用户管理、Java对MongoDB的操作支持(基于2.x驱动与3.x驱动的完全讲解)。 通过学习此课程,读者将具备MongoDB数据库的开发能力,并且能够使用MongoDB进行项目开发。   相关的阿里云产品:云数据库 MongoDB版 云数据库MongoDB版支持ReplicaSet和Sharding两种部署架构,具备安全审计,时间点备份等多项企业能力。在互联网、物联网、游戏、金融等领域被广泛采用。 云数据库MongoDB版(ApsaraDB for MongoDB)完全兼容MongoDB协议,基于飞天分布式系统和高可靠存储引擎,提供多节点高可用架构、弹性扩容、容灾、备份回滚、性能优化等解决方案。 产品详情: https://www.aliyun.com/product/mongodb
相关文章
|
10天前
|
Linux Docker 容器
Docker操作 :容器命令
Docker操作 (四)
160 56
|
1天前
|
Docker 容器
一个docker容器暴露多个端口
一个docker容器暴露多个端口
10 3
|
7天前
|
Kubernetes Cloud Native 持续交付
云原生之旅:Docker容器化与Kubernetes集群管理
【9月更文挑战第33天】在数字化转型的浪潮中,云原生技术如同一艘航船,带领企业乘风破浪。本篇文章将作为你的航海指南,从Docker容器化的基础讲起,直至Kubernetes集群的高级管理,我们将一起探索云原生的奥秘。你将学习到如何封装应用、实现环境隔离,以及如何在Kubernetes集群中部署、监控和扩展你的服务。让我们启航,驶向灵活、可伸缩的云原生未来。
|
3天前
|
安全 Shell Linux
docker进入容器命令
docker进入容器命令
|
13天前
|
Kubernetes Linux 开发者
深入探索Docker容器化技术的奥秘
深入探索Docker容器化技术的奥秘
17 1
|
3天前
|
Linux 应用服务中间件 Shell
docker学习--docker容器镜像常用命令大全(简)
本文档详细介绍了Docker中的镜像命令与容器管理命令。镜像命令部分涵盖了镜像搜索、下载、上传等操作;容器管理命令则包括了容器的创建、启动、停止、删除及日志查看等功能。通过具体示例,帮助用户更好地理解和使用Docker相关命令。
|
3天前
|
Kubernetes 应用服务中间件 nginx
k8s学习--k8s集群使用容器镜像仓库Harbor
本文介绍了在CentOS 7.9环境下部署Harbor容器镜像仓库,并将其集成到Kubernetes集群的过程。环境中包含一台Master节点和两台Node节点,均已部署好K8s集群。首先详细讲述了在Harbor节点上安装Docker和docker-compose,接着通过下载Harbor离线安装包并配置相关参数完成Harbor的部署。随后介绍了如何通过secret和serviceaccount两种方式让Kubernetes集群使用Harbor作为镜像仓库,包括创建secret、配置节点、上传镜像以及创建Pod等步骤。最后验证了Pod能否成功从Harbor拉取镜像运行。
|
10天前
|
存储 关系型数据库 MySQL
Docker操作:容器数据卷
Docker操作 (八)
28 0
|
10天前
|
网络协议 安全 开发者
掌握 Docker 网络:构建复杂的容器通信
在 Docker 容器化环境中,容器间的通信至关重要。本文详细介绍了 Docker 网络的基础知识,包括网络驱动、端口映射和命名等核心概念,并深入探讨了 Bridge、Host、Overlay 和 Macvlan 四种网络类型的特点及应用场景。此外,还提供了创建、连接、查看和删除自定义网络的命令示例,以及高级网络配置方法,如网络命名空间、DNS 解析和安全通信配置,帮助开发者构建更健壮的容器化应用。
|
11天前
|
Cloud Native 持续交付 Docker
深入解析Docker容器化技术及其在生产环境中的应用
深入解析Docker容器化技术及其在生产环境中的应用
18 0