docker搭建mongodb集群

本文涉及的产品
云数据库 MongoDB,独享型 2核8GB
推荐场景:
构建全方位客户视图
简介: 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 }
相关文章
|
20天前
|
NoSQL 算法 Redis
【Docker】(3)学习Docker中 镜像与容器数据卷、映射关系!手把手带你安装 MySql主从同步 和 Redis三主三从集群!并且进行主从切换与扩容操作,还有分析 哈希分区 等知识点!
Union文件系统(UnionFS)是一种**分层、轻量级并且高性能的文件系统**,它支持对文件系统的修改作为一次提交来一层层的叠加,同时可以将不同目录挂载到同一个虚拟文件系统下(unite several directories into a single virtual filesystem) Union 文件系统是 Docker 镜像的基础。 镜像可以通过分层来进行继承,基于基础镜像(没有父镜像),可以制作各种具体的应用镜像。
181 5
|
5月前
|
Prometheus 监控 Cloud Native
除了Prometheus,还有哪些工具可以监控Docker Swarm集群的资源使用情况?
除了Prometheus,还有哪些工具可以监控Docker Swarm集群的资源使用情况?
470 79
|
8月前
|
消息中间件 监控 RocketMQ
Docker部署RocketMQ5.2.0集群
本文详细介绍了如何使用Docker和Docker Compose部署RocketMQ 5.2.0集群。通过创建配置文件、启动集群和验证容器状态,您可以快速搭建起一个RocketMQ集群环境。希望本文能够帮助您更好地理解和应用RocketMQ,提高消息中间件的部署和管理效率。
1146 91
|
网络安全 Docker 容器
|
网络安全 Docker 容器
|
网络安全 数据安全/隐私保护 Docker
|
运维 监控 数据安全/隐私保护
管理 Docker Swarm 集群注意事项
【10月更文挑战第7天】
148 3
|
负载均衡 监控 安全
如何管理 Docker Swarm 集群和节点
【10月更文挑战第7天】
225 3
|
8月前
|
NoSQL MongoDB 数据库
使用 docker 快速搭建开发环境的 mongodb 服务
本指南介绍如何使用 Docker 和 Docker Compose 部署 MongoDB 和 Mongo Express。首先,通过 Docker 命令分别启动 MongoDB(镜像 `mongo:7.0.14`)和 Mongo Express(镜像 `mongo-express:1.0.2-20-alpine3.19`),并配置环境变量确保两者能正确连接。接着,提供了一个 `docker-compose.yaml` 文件示例,包含 MongoDB 数据卷、健康检查及服务依赖配置,简化多容器管理。
1328 2

热门文章

最新文章