mongo 分布式集群 docker版示例

本文介绍了如何使用Docker搭建MongoDB的分布式集群,包括副本集和分片的设置。通过Docker容器创建了一个简单的分片集群,详细讲解了分片操作、配置服务器和路由的角色。同时提到了备份和监控的重要性和方法。
摘要由CSDN通过智能技术生成

mongo 分布式 docker版示例

本章介绍的mongo指令,主要是管理员用的。包括一些分布式的内容。对于开发者来说,不管副本集还是分片,都是透明的,无需关注。

副本集replica set

## 创建一个副本集,端口10000,名字myrs,数据存放./data
mongod --port 10000 --dbpath ./data --replSet myrs
      # 访问这个实例,并初始化
      rs.initiate()
      # 添加其他实例到副本集
      rs.add($HOST_NAME:$PORT)
      # 查看副本集信息
      rs.conf()

分片

当单台服务器满足不了mongodb的性能要求(内存、磁盘读写)时,我们考虑将数据分布到多台服务器。
当客户端访问我们的门户时,通过算法,找到存储数据的服务器;通过路由访问到这个分片,返回数据。

一个分片集群需要具备以下角色:

  1. Shard:分片,存储整个库中的数据,由算法决定某条数据该分配到哪个分片。
  2. Config Server:配置服务器,储存所有分片的元数据,我使用的4.0版本,要求配置服务器必须是副本集,并建议有3个实例
  3. mongos(Router):路由,所有分片的访问入口,主要起到路由分发合并的作用。对开发来说,这层是可见的。路由需要指定配置服务器、并维护分片。

docker建立一个简单分片集群

因为我本机没装mongodb,所以通过建几个容器来实现一个分片集群。如果使用多台物理机实现集群,道理也是一样的。

mongodb镜像准备 docker pull mongo:4.0
mongos镜像,自己做一个Dockerfile

FROM mongo:4.0
MAINTAINER it_laowu
EXPOSE 27017
ENTRYPOINT ["usr/bin/mongos"]

编译 Docker build -t it_laowu/mongos:4.0 .

开始执行命令:

# docker network
docker network create -d bridge --subnet 172.18.0.0/24 --gateway 172.18.0.1 my_net

# 三个shard,必须加上 --shardsvr ,否则mongos拒绝处理
sudo docker run -d --network my_net --name  sh1 mongo:4.0 --shardsvr --port 27017 &&\
sudo docker run -d --network my_net --name  sh2 mongo:
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值