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

本文涉及的产品
容器镜像服务 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复制过去即可
相关文章
|
24天前
|
监控 Kubernetes 安全
还没搞懂Docker? Docker容器技术实战指南 ! 从入门到企业级应用 !
蒋星熠Jaxonic,技术探索者,以代码为笔,在二进制星河中书写极客诗篇。专注Docker与容器化实践,分享从入门到企业级应用的深度经验,助力开发者乘风破浪,驶向云原生新世界。
还没搞懂Docker? Docker容器技术实战指南 ! 从入门到企业级应用 !
|
16天前
|
NoSQL 算法 Redis
【Docker】(3)学习Docker中 镜像与容器数据卷、映射关系!手把手带你安装 MySql主从同步 和 Redis三主三从集群!并且进行主从切换与扩容操作,还有分析 哈希分区 等知识点!
Union文件系统(UnionFS)是一种**分层、轻量级并且高性能的文件系统**,它支持对文件系统的修改作为一次提交来一层层的叠加,同时可以将不同目录挂载到同一个虚拟文件系统下(unite several directories into a single virtual filesystem) Union 文件系统是 Docker 镜像的基础。 镜像可以通过分层来进行继承,基于基础镜像(没有父镜像),可以制作各种具体的应用镜像。
164 5
|
17天前
|
监控 Linux 调度
【赵渝强老师】Docker容器的资源管理机制
本文介绍了Linux CGroup技术及其在Docker资源管理中的应用。通过实例演示了如何利用CGroup限制应用程序的CPU、内存和I/O带宽使用,实现系统资源的精细化控制,帮助理解Docker底层资源限制机制。
105 6
kde
|
20天前
|
存储 关系型数据库 MySQL
MySQL Docker 容器化部署全指南
MySQL是一款开源关系型数据库,广泛用于Web及企业应用。Docker容器化部署可解决环境不一致、依赖冲突问题,实现高效、隔离、轻量的MySQL服务运行,支持数据持久化与快速迁移,适用于开发、测试及生产环境。
kde
208 4
|
2月前
|
Kubernetes Docker Python
Docker 与 Kubernetes 容器化部署核心技术及企业级应用实践全方案解析
本文详解Docker与Kubernetes容器化技术,涵盖概念原理、环境搭建、镜像构建、应用部署及监控扩展,助你掌握企业级容器化方案,提升应用开发与运维效率。
557 108
|
3月前
|
存储 监控 测试技术
如何将现有的应用程序迁移到Docker容器中?
如何将现有的应用程序迁移到Docker容器中?
329 57
|
2月前
|
缓存 Ubuntu Docker
Ubuntu环境下删除Docker镜像与容器、配置静态IP地址教程。
如果遇见问题或者想回滚改动, 可以重启系统.
192 16