Docker MongoDB v4.0.0 集群搭建

Docker MongoDB v4.0.0 集群搭建

简单地在Docker环境上搭建一个无认证的MongoDB集群。
本文基于CentOS 7.4,MongoDB版本为4.0.0,Docker版本为17.09.0-ce

1. 本文使用的容器

集群角色 ContainerName IP:port
Config Server cfg_1 10.1.1.2:27019
Config Server cfg_2 10.1.1.3:27019
Config Server cfg_3 10.1.1.4:27019
Shard Server shard1_1 10.1.1.5:27018
Shard Server shard1_2 10.1.1.6:27018
Shard Server shard1_3 10.1.1.7:27018
Shard Server shard2_1 10.1.1.8:27018
Shard Server shard2_2 10.1.1.9:27018
Shard Server shard2_3 10.1.1.10:27018
Shard Server shard3_1 10.1.1.11:27018
Shard Server shard3_2 10.1.1.12:27018
Shard Server shard3_3 10.1.1.13:27018
Mongos mongos_1 10.1.1.14:27020
Mongos mongos_2 10.1.1.15:27020
Mongos mongos_3 10.1.1.16:27020

2. 从Docker Hub上拉取MongoDB镜像

docker pull mongo:4.0.0

3. Docker网络配置

为MongoDB集群创建独立的docker网桥

docker network create --subnet=10.1.1.0/24 mongodb0

4. 准备MongoDB集群配置文件

准备Docker挂载的目录

mkdir -p /home/dmc/configsvr
mkdir -p /home/dmc/shard1
mkdir -p /home/dmc/shard2
mkdir -p /home/dmc/shard3
mkdir -p /home/dmc/mongos
  • Config-Server 配置文件
    路径:/home/dmc/configsvr/mongod.conf
    说明:MongoDB v3.4 之后要求Config-Server也需要组成副本集形式
storage:
  dbPath: /data/db
  journal:
    enabled: true
systemLog:
  destination: file
  logAppend: true
  path: /var/log/mongodb/mongod.log
net:
  bindIp: 127.0.0.1
processManagement:
  timeZoneInfo: /usr/share/zoneinfo
replication:
  replSetName: cfg
sharding:
  clusterRole: configsvr
  • Shard-Server 配置文件
    路径:/home/dmc/shard1/mongod.conf
    说明:此处配置3个分片为shard1,shard2,shard3;每个分片都需要组成副本集。
    shard2,shard3目录下配置文件同名,修改replSetName字段的值分别为’shard2’和’shard3’
storage:
  dbPath: /data/db
  journal:
    enabled: true
systemLog:
  destination: file
  logAppend: true
  path: /var/log/mongodb/mongod.log
net:
  bindIp: 127.0.0.1
processManagement:
  timeZoneInfo: /usr/share/zoneinfo
replication:
  replSetName: shard1
sharding:
  clusterRole: shardsvr
  • Mongos 配置文件
    路径:/home/dmc/mongos/mongos.conf
    说明:mongos不需要存储因此去掉storage字段;可任意配置net.port字段,需要指定processManagement.fork为true以–fork方式启动;sharding.configDB字段用于指定Config-Server集群地址,格式为[replSetName]/[config-server1:port],[config-server2:port],[config-server3:port]…
systemLog:
  destination: file
  logAppend: true
  path: /var/log/mongodb/mongos.log
net:
  port: 27020
  bindIp: 127.0.0.1
processManagement:
  fork: true
  timeZoneInfo: /usr/share/zoneinfo
sharding:
  configDB: cfg/10.1.1.2:27019,10.1.1.3:27019,10.1.1.4:27019

5. 启动Docker容器

  • 启动3个Config-Server容器:
docker run -d -
  • 1
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
要创建一个MongoDB副本集群,你可以使用Docker来运行多个MongoDB容器。下面是一些步骤: 1. 首先,确保你已经安装了DockerDocker Compose。 2. 创建一个新的目录,并在该目录下创建一个名为`docker-compose.yml`的文件。 3. 在`docker-compose.yml`文件中定义三个MongoDB容器,分别命名为`mongo1`、`mongo2`和`mongo3`。你可以使用以下配置作为参考: ``` version: '3' services: mongo1: image: mongo restart: always ports: - 27017:27017 volumes: - ./data/db1:/data/db command: --replSet rs0 mongo2: image: mongo restart: always ports: - 27018:27017 volumes: - ./data/db2:/data/db command: --replSet rs0 mongo3: image: mongo restart: always ports: - 27019:27017 volumes: - ./data/db3:/data/db command: --replSet rs0 ``` 4. 在每个MongoDB容器中,我们使用`--replSet rs0`参数来指定副本集的名称为`rs0`。此外,我们还将每个容器的数据文件夹挂载到主机上的不同目录中,以便数据持久化。 5. 在终端中,切换到包含`docker-compose.yml`文件的目录,并运行以下命令来启动副本集群: ``` docker-compose up -d ``` 这将启动三个MongoDB容器,并将它们连接到一个名为`rs0`的副本集群。 6. 进入其中一个MongoDB容器中,可以使用以下命令: ``` docker exec -it <container_name> bash ``` 在容器内部,使用以下命令来初始化副本集群: ``` mongo rs.initiate() ``` 7. 接下来,你可以添加其他的MongoDB节点到副本集群中。在容器内部,使用以下命令将其他节点添加到副本集群: ``` rs.add("<hostname>:<port>") ``` 其中`<hostname>`是其他MongoDB容器的主机名,`<port>`是该容器上MongoDB实例的端口号。 这样,你就创建了一个基于DockerMongoDB副本集群。你可以通过连接到其中一个容器并使用MongoDB客户端来访问和管理该集群

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值