docker快速搭建mongodb的分片集群

1.准备

// 创建网络:
docker network create mongo-shard

2.启动Config-Server:

配置服务器(config server),这是MongoDB分片集群中的一部分。

// 启动congfig-server
docker run -d --net mongo-shard --name config-server -p 27019:27019 -v /mongodb/config-server/db:/data/db -v /mongodb/config-server/log:/var/log/mongodb -e mongo_initdb_root_username=root -e mongo_initdb_root_password=root mongo:4.4.10 --configsvr --replSet configrs
// 进入容器内部
docker exec -it config-server bash
// 连接config-server.默认端口20719
mongo --port 27019
// 初始化config-server
rs.initiate({_id: "configrs", configsvr: true, members: [{_id: 0, host: "config-server:27019"}]})
  • docker run: 运行一个新的Docker容器。
  • -d: 在后台运行容器。
  • –net mongo-shard: 指定容器使用名为mongo-shard的自定义网络。
  • –name config-server: 为容器指定一个名称,即config-server。
  • -p 27019:27019: 将容器的27019端口映射到主机的27019端口。
  • -v /mongodb/config-server/db:/data/db: 挂载一个主机上的目>录/mongodb/config-server/db到容器内的/data/db目录,用于持久化数据库数据。
  • -v /mongodb/config-server/log:/var/log/mongodb: 挂载一个主机上的目录/mongodb/config-server/log到容器内的/var/log/mongodb目录,用于持久化MongoDB的日志文件。
  • -e mongo_initdb_root_username=root: 设置环境变量,用于初始化数据库时设置root用户名。
  • -e mongo_initdb_root_password=root: 设置环境变量,用于初始化数据库时设置root用户的密码。
  • mongo:4.4.10: 使用MongoDB 4.4.10版本的Docker镜像。
  • –configsvr: 指定这个MongoDB实例作为配置服务器运行。
  • –replSet configrs: 指定这个配置服务器属于名为configrs的复制集。

3.启动三个Shard Server:

// 启动容器
docker run -d --net mongo-shard --name shard1 -p 27017:27018 -v /mongodb/shard1/db:/data/db -v /mongodb/shard1/log:/var/log/mongodb -e mongo_initdb_root_username=root -e mongo_initdb_root_password=root mongo:4.4.10 --shardsvr --replSet shard1rs
docker run -d --net mongo-shard --name shard2 -p 27018:27018 -v /mongodb/shard2/db:/data/db -v /mongodb/shard2/log:/var/log/mongodb -e mongo_initdb_root_username=root -e mongo_initdb_root_password=root mongo:4.4.10 --shardsvr --replSet shard1rs
docker run -d --net mongo-shard --name shard3 -p 27020:27018 -v /mongodb/shard3/db:/data/db -v /mongodb/shard3/log:/var/log/mongodb -e mongo_initdb_root_username=root -e mongo_initdb_root_password=root mongo:4.4.10 --shardsvr --replSet shard1rs
// 进入容器内部
docker exec -it shard1 bash
// 连接shard server
mongo --port 27018
// 初始化shard集群
rs.initiate({_id: "shard1rs", members: [{_id: 0, host: "shard1:27018"},{_id: 1, host: "shard2:27018"},{_id: 2, host: "shard3:27018"}]})
  • –shardsvr: 指定这个MongoDB实例作为分片服务器运行。
  • –replSet shard1rs: 指定这个分片服务器属于名为shard1rs的复制集。

4.启动一个Router(mongos):

mongos:MongoDB的路由服务。mongos是MongoDB分片集群中的一个组件,用于路由客户端请求到正确的分片

//启动mongos
docker run -d --net mongo-shard --name mongos -p 27021:27017 -v /mongodb/mongos/db:/data/db -v /mongodb/mongos/log:/var/log/mongodb -e mongo_initdb_root_username=root -e mongo_initdb_root_password=root mongo:4.4.10 mongos --configdb configrs/config-server:27019

// 连接到Router,添加Shard:
docker exec -it mongos bash
mongo --port 27017

// 在MongoDB shell中执行:
sh.addShard("shard1rs/shard1:27018")
sh.addShard("shard1rs/shard2:27018")
sh.addShard("shard1rs/shard3:27018")
  • docker run: 运行一个新的Docker容器。
  • -d: 在后台运行容器。
  • –net mongo-shard: 指定容器使用名为mongo-shard的自定义网络。
  • –name mongos: 为容器指定一个名称,即mongos。
  • -p 27021:27017: 将容器的27017端口映射到主机的27021端口。
  • -v /mongodb/mongos/db:/data/db: 挂载一个主机上的目录/mongodb/mongos/db到容器内的/data/db目录,用于持久化数据库数据。
  • -v /mongodb/mongos/log:/var/log/mongodb: 挂载一个主机上的目录/mongodb/mongos/log到容器内的/var/log/mongodb目录,用于持久化MongoDB的日志文件。
  • -e mongo_initdb_root_username=root: 设置环境变量,用于初始化数据库时设置root用户名。
  • -e mongo_initdb_root_password=root: 设置环境变量,用于初始化数据库时设置root用户的密码。
  • mongo:4.4.10: 使用MongoDB 4.4.10版本的Docker镜像。
    mongos: 运行mongos服务。
  • –configdb configrs/config-server:27019: 指定配置数据库的连接字符串,其中configrs是复制集的名称,config-server是配置服务器的地址和端口
  • 请注意,上述步骤是简化版本,实际生产环境可能需要更多的配置和安全性措施。在实际环境中,确保使用适当的身份验证和加密来保护MongoDB实例
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Docker Compose 是一个定义和运行多容器 Docker 应用程序的工具。而MongoDB 分片集群是一种通过将数据分割为多个分片并将其存储在多个服务器上来实现数据共享和负载均衡的数据库架构。 要使用 Docker Compose 创建一个 MongoDB 分片集群,需要进行以下步骤: 1. 定义 Docker Compose 文件:创建一个 YAML 格式的 Docker Compose 文件来描述 MongoDB 分片集群的不同部分和配置。例如,需要定义有关分片服务器、路由器和配置服务器的配置信息。 2. 编写 Dockerfile 文件:为每个组件编写 Dockerfile 文件,其中包括安装 MongoDB 和其他必要的依赖项的步骤。 3. 构建和运行容器:使用 Docker Compose 命令构建和运行容器Docker Compose 将根据 Dockerfile 文件构建容器,然后使用定义的网络配置和其他设置来运行这些容器。 4. 配置分片集群:在配置服务器上运行 MongoDB 的 `mongos` 进程,并向其添加分片服务器。 5. 测试分片集群:通过连接到路由器容器并使用 MongoDB 的客户端工具,如 `mongo` 命令行工具或可视化工具,测试创建的 MongoDB 分片集群是否正常工作。 需要注意的是,在配置 MongoDB 分片集群时,还需要考虑分片键和分片策略。分片键是一个在集合中选择一个字段作为分片依据的字段,而分片策略则确定了如何将文档分布到不同的分片上。 通过使用 Docker Compose 创建 MongoDB 分片集群,可以简化部署和管理分片集群的过程。此外,使用 Docker 可轻松扩展和实现高可用性,可以方便地添加更多的分片服务器和路由器容器来增加数据容量和吞吐量。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值