docker搭建mongodb集群

本文涉及的产品
云数据库 MongoDB,通用型 2核4GB
简介: docker搭建mongodb集群

详细链接https://cloud.tencent.com/developer/article/1509149

docker pull mongo:4.0.0

MongoDB集群创建独立的docker网桥

#创建容器间公用的网络
docker network create --subnet=10.1.1.0/24 mongodb0
#查看docker 下边的所有网络情况
docker network ls
#查看某一个网络的具体情况
docker network inspect ef6 【容器id】
#创建本地的 挂载 路径
mkdir -p /adcs/mongodb/configsvr
mkdir -p /adcs/mongodb/shard1
mkdir -p /adcs/mongodb/shard2
mkdir -p /adcs/mongodb/shard3
mkdir -p /adcs/mongodb/mongos
docker run -d --name=cfg_1 --network=mongodb0 --ip=10.1.1.2 -v /adcs/mongodb/configsvr:/etc/mongodb mongo:4.0.0 -f /etc/mongodb/mongod.conf
docker run -d --name=cfg_2 --network=mongodb0 --ip=10.1.1.3 -v /adcs/mongodb/configsvr:/etc/mongodb mongo:4.0.0 -f /etc/mongodb/mongod.conf
docker run -d --name=cfg_3 --network=mongodb0 --ip=10.1.1.4 -v /adcs/mongodb/configsvr:/etc/mongodb mongo:4.0.0 -f /etc/mongodb/mongod.conf
docker run -p 60301:27017 -v /adcs/mongodb/data/db:/data/db --name singal_mongodb -d mongo
在上面的命令中,几个命令参数的详细解释如下:
-p 指定容器的端口映射,mongodb 默认端口为 27017
-v 为设置容器的挂载目录,这里是将即本机中的目录挂载到容器中的/data/db中,作为 mongodb 的存储目录
–name 为设置该容器的名称
-d 设置容器以守护进程方式运行
mongodb container.jpeg
version: '3.1'
services:
  mongodb1:
    image: mongo
    restart: always
    container_name: mongo1
    volumes:
      - ./data/db/mongo1:/data/db
      - ./mongodb.key:/data/mongodb.key
    ports:
      - 60401:27017
    environment:
      MONGO_INITDB_ROOT_USERNAME: ${MONGO_INITDB_ROOT_USERNAME}
      MONGO_INITDB_ROOT_PASSWORD: ${MONGO_INITDB_ROOT_PASSWORD}
    networks:
      - mongoNet
    command: mongod --replSet mongos --keyFile /data/mongodb.key
    entrypoint:
      - bash
      - -c
      - |
        chmod 400 /data/mongodb.key
        chown 999:999 /data/mongodb.key
        exec docker-entrypoint.sh $$@
  mongodb2:
    image: mongo
    restart: always
    container_name: mongo2
    volumes:
      - ./data/db/mongo2:/data/db
      - ./mongodb.key:/data/mongodb.key
    ports:
      - 60402:27017
    environment:
      MONGO_INITDB_ROOT_USERNAME: ${MONGO_INITDB_ROOT_USERNAME}
      MONGO_INITDB_ROOT_PASSWORD: ${MONGO_INITDB_ROOT_PASSWORD}
    networks:
      - mongoNet
    command: mongod --replSet mongos --keyFile /data/mongodb.key
    entrypoint:
      - bash
      - -c
      - |
        chmod 400 /data/mongodb.key
        chown 999:999 /data/mongodb.key
        exec docker-entrypoint.sh $$@
  mongodb3:
    image: mongo
    restart: always
    container_name: mongo3
    volumes:
      - ./data/db/mongo3:/data/db
      - ./mongodb.key:/data/mongodb.key
    ports:
      - 60403:27017
    environment:
      MONGO_INITDB_ROOT_USERNAME: ${MONGO_INITDB_ROOT_USERNAME}
      MONGO_INITDB_ROOT_PASSWORD: ${MONGO_INITDB_ROOT_PASSWORD}
    networks:
      - mongoNet
    command: mongod --replSet mongos --keyFile /data/mongodb.key
    entrypoint:
      - bash
      - -c
      - |
        chmod 400 /data/mongodb.key
        chown 999:999 /data/mongodb.key
        exec docker-entrypoint.sh $$@
networks:
  mongoNet:
    driver: bridge
#切换到 docker-compose.yml 所在的目录
cd /adcs/mongo2
#启动 mongo 集群
docker-compose up -d
#进入节点1
docker exec -it mongo1 /bin/bash
#进入mongo 的 命令行端口
mongo
失败,因为没有输入正确的密码
root@e0ff2180d0e4:/# mongo
MongoDB shell version v4.2.1
connecting to: mongodb://127.0.0.1:27017/?compressors=disabled&gssapiServiceName=mongodb
Implicit session: session { "id" : UUID("69ca0576-1364-48a0-8e91-fb3d871d30fc") }
MongoDB server version: 4.2.1
Welcome to the MongoDB shell.
For interactive help, type "help".
For more comprehensive documentation, see
        http://docs.mongodb.org/
Questions? Try the support group
        http://groups.google.com/group/mongodb-user
> rs.status()
{
        "ok" : 0,
        "errmsg" : "command replSetGetStatus requires authentication",
        "code" : 13,
        "codeName" : "Unauthorized"
}

mongo -u root -p admin

root@e0ff2180d0e4:/# mongo -u root -p admin
MongoDB shell version v4.2.1
connecting to: mongodb://127.0.0.1:27017/?compressors=disabled&gssapiServiceName=mongodb
Implicit session: session { "id" : UUID("14b5b96e-852d-4a68-89e7-d7a824174040") }
MongoDB server version: 4.2.1
Server has startup warnings: 
2019-11-18T06:13:46.970+0000 I  STORAGE  [initandlisten] 
2019-11-18T06:13:46.970+0000 I  STORAGE  [initandlisten] ** WARNING: Using the XFS filesystem is strongly recommended with the WiredTiger storage engine
2019-11-18T06:13:46.970+0000 I  STORAGE  [initandlisten] **          See http://dochub.mongodb.org/core/prodnotes-filesystem
2019-11-18T06:13:58.122+0000 I  CONTROL  [initandlisten] 
2019-11-18T06:13:58.122+0000 I  CONTROL  [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/enabled is 'always'.
2019-11-18T06:13:58.122+0000 I  CONTROL  [initandlisten] **        We suggest setting it to 'never'
2019-11-18T06:13:58.122+0000 I  CONTROL  [initandlisten] 
2019-11-18T06:13:58.122+0000 I  CONTROL  [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/defrag is 'always'.
2019-11-18T06:13:58.122+0000 I  CONTROL  [initandlisten] **        We suggest setting it to 'never'
2019-11-18T06:13:58.122+0000 I  CONTROL  [initandlisten] 
---
Enable MongoDB's free cloud-based monitoring service, which will then receive and display
metrics about your deployment (disk utilization, CPU, operation statistics, etc).
The monitoring data will be available on a MongoDB website with a unique URL accessible to you
and anyone you share the URL with. MongoDB may use this information to make product
improvements and to suggest MongoDB products and deployment options to you.
To enable free monitoring, run the following command: db.enableFreeMonitoring()
To permanently disable this reminder, run the following command: db.disableFreeMonitoring()
---
#查看状态
rs.status()
{
        "ok" : 0,
        "errmsg" : "no replset config has been received",
        "code" : 94,
        "codeName" : "NotYetInitialized"
}
rs.initiate({
_id: “mongos”,
members: [
{ _id : 0, host : “192.168.1.111:27017” },
{ _id : 1, host : “192.168.1.111:27018” },
{ _id : 2, host : “192.168.1.111:27019” }
]
});

配置成功

rs.initiate({
     _id: "mongos",
     members: [
         { _id : 0, host : "122.51.70.155:60401" },
         { _id : 1, host : "122.51.70.155:60402" },
         { _id : 2, host : "122.51.70.155:60403" }
     ]
 });
{ "ok" : 1 }
相关实践学习
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
相关文章
|
1天前
|
NoSQL MongoDB Docker
windows下基于docker安装mongodb
windows下基于docker安装mongodb
6 1
|
8天前
|
监控 Cloud Native 持续交付
实现容器集群轻松部署:Docker Swarm 集群管理解析
实现容器集群轻松部署:Docker Swarm 集群管理解析
|
8天前
|
Docker 容器
docker 运行 elasticsearch + kibana + head 集群
docker 运行 elasticsearch + kibana + head 集群
|
11天前
|
存储 负载均衡 NoSQL
MongoDB的架构设计基于三种集群模式
【6月更文挑战第5天】MongoDB的架构设计基于三种集群模式
15 3
|
17天前
|
Java 大数据 流计算
使用Docker快速部署Flink分布式集群
使用Docker快速部署Flink分布式集群
139 0
|
29天前
|
Docker 容器
docker部署omni_usdt 0.8.0版本私有链集群环境
docker部署omni_usdt 0.8.0版本私有链集群环境
|
1月前
|
监控 Docker 容器
【Docker 专栏】Docker Swarm 集群的扩展与缩容策略
【5月更文挑战第8天】本文探讨了Docker Swarm集群的扩展与缩容策略。集群扩展可提高性能、增强可用性和适应业务发展,可通过手动或自动方式实现。缩容则需考虑业务需求、资源利用率和节点状态,可手动或按策略执行。关键步骤包括添加/移除节点及任务迁移。注意数据同步、监控评估和测试验证。案例分析和总结强调了灵活管理对保持集群最佳状态的重要性。
【Docker 专栏】Docker Swarm 集群的扩展与缩容策略
|
1月前
|
NoSQL Unix MongoDB
【docker 】docker-compose 部署mongoDB
【docker 】docker-compose 部署mongoDB
32 1
|
1月前
|
NoSQL MongoDB 数据库
docker部署mongoDB
docker部署mongoDB
29 0
|
1月前
|
NoSQL 网络协议 MongoDB
docker安装mongodb(单点)图文详解
该文档提供了一个快速搭建MongoDB环境的指南,适用于开发和学习,但不适用于生产。主要步骤包括:1) 使用Docker创建数据卷`mongo_data_db`和`mongo_data_configdb`。2) 拉取`mongo`镜像并运行名为`mymongo`的容器,映射端口并挂载数据卷。3) 初始化管理员账号,创建具有`root`权限的用户`admin`,密码为`adminpwd`。4) 防火墙开放端口27017。最后,提到了使用第三方客户端进行连接。