创建目录

在每台机器上操作此步骤

一.在编写容器文件之前的注意事项:

1.yaml文件的指令前端不能使用tab键只能使用空格
2.storage: 指令的对接只能使用 : 不能使用 = 冒号的后面要跟着一个空格
3.docker-compose.yaml 文件中netwok指定一个网桥 最好不要使用默认的
- 生成网桥的指令:docker network create **** (****:是指网桥的名称)
4.生成容器后查看网桥的容器IP
- docker network inspect **** (****:指容器的name 或 id )
5.根据查看的网桥IP在墙上开放端口
- ufw allow from 172.19.0.0/16 (172.19.0.0/16:容器的IP 和使用的端口)

cd /home/seeyii 当前用户

mkdir mongoCluster 项目文件夹

cd mongoCluster

vi mongod.conf 配置文件

storage:
dbPath: /data/db
journal:
enabled: true
systemLog:
destination: file
logAppend: true
path: /var/log/mongodb/mongod.log

net:
maxIncomingConnections: 10000
replication:
oplogSizeMB: 10240 # security:
# keyFile: /data/mongodb/key.file
# authorization: enabled

vi mongos.conf 路由配置文件

systemLog:
destination: file
logAppend: true
path: /var/log/mongodb/mongos.log

net:
maxIncomingConnections: 10000 # security:
# keyFile: /data/mongodb/key.file

创建目录

vi first_mkdir.sh

mkdir -p /database_po/vol/conf/config
mkdir -p /database_po/vol/conf/db
mkdir -p /database_po/vol/shard1/config
mkdir -p /database_po/vol/shard1/db
mkdir -p /database_po/vol/shard1/backup
mkdir -p /database_po/vol/shard2/config
mkdir -p /database_po/vol/shard2/db
mkdir -p /database_po/vol/shard2/backup
mkdir -p /database_po/vol/mongos/config
mkdir -p /database_po/vol/mongos/db

生成认证文件 root 用户 多台共用一个

openssl rand -base64 741 > key.file
chmod 600 key.file
chown 999 key.file
mv key.file /database/vol

将配置文件放到指定位置

vi second_mv.sh

#!/bin/bash
for item in mongos shard1 shard2 conf
do
if [ $item = 'mongos' ]
then
echo "mongos"
cp mongos.conf /database_po/vol/$item/config/mongos.conf
else
echo "mongod"
cp mongod.conf /database_po/vol/$item/config/mongod.conf
fi
done

docker-compose.yaml 容器编排

将文件放在 mongoCluster目录中

启动 docker-compose up -d (-d :是指后台运行 up 会在当前的目录下自动寻找docker-compose.yaml 文件并执行 -f 可以自定义文件的位置)

添加副本集

配置服务器


连接任意一个节点 mongo --host 192.168.1.125 --port 20021

rs.initiate({
_id: "ms-config-server",
configsvr: true,
members: [
{ _id : 0, host : "192.168.1.125:20021" },
{ _id : 1, host : "192.168.1.126:20021" },
{ _id : 2, host : "192.168.1.127:20021" },
]
});

分片1

连接任意一个节点 mongo --host 192.168.1.125 --port 20031

rs.initiate({
_id: "ms-shard1-server",
members: [
{ _id : 0, host : "192.168.1.125:20031" },
{ _id : 1, host : "192.168.1.126:20031" },
{ _id : 2, host : "192.168.1.127:20031" },
]
});

分片2

连接任意一个节点 mongo --host 192.168.1.125 --port 20041

rs.initiate({
_id: "ms-shard2-server",
members: [
{ _id : 0, host : "192.168.1.125:20041" },
{ _id : 1, host : "192.168.1.126:20041" },
{ _id : 2, host : "192.168.1.127:20041" },
]
});

配置mongos

确保mongos服务起来之后,连接到192.168.1.125:10011执行以下命令添加分片服务器信息

sh.addShard("ms-shard1-server/192.168.1.125:20031,192.168.1.126:20031,192.168.1.127:20031")
sh.addShard("ms-shard2-server/192.168.1.125:20041,192.168.1.126:20041,192.168.1.127:20041")

添加用户认证

  • 连接任意的mongos
  • use admin ​ db.createUser( { user:"root", pwd:"123456", roles:[{role:"root",db:"admin"}] } )
  • 验证是否创建成功
  • db.auth('root','123456')
  • 返回值 1 成功
  • 将配置文件的用户认证全部打开 security``:
  • 重启容器 注意: 保证key.file 权限为 999

标题容器 操作

删除 docker-compose rm

停止 docker-compose stop

重启 docker-compose restart

启动 docker-compose start

docker-compose 文件

docker-compose.yaml

version: '2'
services:
ms_config_server:
image: mongo:3.4
command: mongod -f /etc/mongod/mongod.conf --configsvr --replSet "ms-config-server"
volumes:
- /database_po/vol/key.file:/data/mongodb/key.file
- /database_po/vol/conf/config:/etc/mongod
- /database_po/vol/conf/db:/data/db
ports:
- "20021:27019"
restart:
always
container_name:
ms_config_server
ulimits:
nofile:
soft: 300000
hard: 300000
networks:
- study_net
ms_shard_server1:
image: mongo:3.4
command: mongod -f /etc/mongod/mongod.conf --directoryperdb --shardsvr --replSet "ms-shard1-server" --wiredTigerCacheSizeGB 13
volumes:
- /database_po/vol/key.file:/data/mongodb/key.file
- /database_po/vol/shard1/config:/etc/mongod
- /database_po/vol/shard1/db:/data/db
ports:
- "20031:27018"
restart:
always
container_name:
ms_shard_server1
ulimits:
nofile:
soft: 300000
hard: 300000
networks:
- study_net
ms_shard_server2:
image: mongo:3.4
command: mongod -f /etc/mongod/mongod.conf --directoryperdb --shardsvr --replSet "ms-shard2-server" --wiredTigerCacheSizeGB 13
volumes:
- /database_po/vol/key.file:/data/mongodb/key.file
- /database_po/vol/shard2/config:/etc/mongod
- /database_po/vol/shard2/db:/data/db
ports:
- "20041:27018"
restart:
always
container_name:
ms_shard_server2
ulimits:
nofile:
soft: 300000
hard: 300000
networks:
- study_net
ms_mongos_server:
image: mongo:3.4
command: mongos -f /etc/mongod/mongos.conf --configdb ms-config-server/192.168.1.125:20021,192.168.1.126:20021,192.168.1.127:20021
ports:
- "20011:27017"
volumes:
- /database_po/vol/key.file:/data/mongodb/key.file
- /database_po/vol/mongos/config:/etc/mongod
- /database_po/vol/mongos/db:/data/db
restart:
always
container_name:
ms_mongos_server
ulimits:
nofile:
soft: 300000
hard: 300000
networks:
- study_net networks:
study_net:
external: true

docker-compose 搭建mongo集群的更多相关文章

  1. 从零开始学习docker之在docker中搭建redis(集群)

    docker搭建redis集群 docker-compose是以多容器的方式启动,非常适合用来启动集群 一.环境准备 云环境:CentOS 7.6 64位 二.安装docker-compose #需要 ...

  2. Docker:搭建RabbitMQ集群

    RabbitMQ原理介绍(一) RabbitMQ安装使用(二) RabbitMQ添加新用户并支持远程访问(三) RabbitMQ管理命令rabbitmqctl详解(四) RabbitMQ两种集群模式配 ...

  3. Docker中搭建zookeeper集群

    1.获取官方镜像 从dockerhub获取官方的zookeeper镜像: docker pull zookeeper 2.了解镜像内容 拉取完镜像后,通过 docker inspect zookeep ...

  4. docker下搭建fastfds集群版

    搭建过程参考 作者 https://me.csdn.net/feng_qi_1984 的课程视频 声明:集群版是在我之前写的单机版基础之上进行搭建的,我将安装了fastfds单机版的docker打包成 ...

  5. 用 Docker 快速搭建 Kafka 集群

    开源Linux 一个执着于技术的公众号 版本 •JDK 14•Zookeeper•Kafka 安装 Zookeeper 和 Kafka Kafka 依赖 Zookeeper,所以我们需要在安装 Kaf ...

  6. docker上搭建consul集群全流程

    consul简介: consul是提供服务发现.简单配置管理.分区部署的服务注册发现解决方案.主要特性:服务发现\健康检查\基于Key-Value的配置\支持TLS安全通讯\支持多数据中心部署 con ...

  7. 在centos7使用docker下搭建elasticsearch集群

    一 .docker的安装 https://www.cnblogs.com/ghostdot/p/12410242.html 二.创建相关映射文件 cd /home/ mkdir node cd nod ...

  8. 基于docker快速搭建hbase集群

    一.概述 HBase是一个分布式的.面向列的开源数据库,该技术来源于 Fay Chang 所撰写的Google论文"Bigtable:一个结构化数据的分布式存储系统".就像Bigt ...

  9. Docker+nginx搭建tomcat集群

    1.环境准备: a.宿主机CentOS7 b.连接工具FinalShell c.镜像nginx1.20.1,tomcat (镜像拉取:docker pull 镜像名称) 2.创建nginx文件夹,to ...

随机推荐

  1. -e $request_filename + nginx内置变量

    -e表示只要filename存在,则为真,不管filename是什么类型,当然这里加了!就取反额外的一些-e filename 如果 filename存在,则为真-d filename 如果 file ...

  2. 使用dom4j工具:xml总结

    1.IO流:BufferedReader字符流readLine();截取 不可行!!!2.XML解析:dom4j查:标签:element("name")elements(" ...

  3. 国内Git官网下载windows版本慢的问题,推荐一个国内镜像

    话不多说了,给你们镜像地址: https://npm.taobao.org/mirrors/git-for-windows/ 不用谢.点右边打赏个一毛钱,告诉我你来过        !_!

  4. Ansible基础使用

    原文转自:https://www.cnblogs.com/itzgr/p/10233932.html作者:木二 目录 一 Ansible命令用法 1.1 免密钥 1.2 Ad-Hoc基础命令 1.3 ...

  5. Mybatis笔记(2)

    一.Mybatis的Dao层实现 1.1 代理开发方式介绍 Mapper 接口开发需要遵循以下规范: 1. Mapper.xml文件中的namespace与mapper接口的全限定名相同 2. Map ...

  6. VS Code 1.60 发布!竟然可以自动检测编程语言了!

    北京时间 2021 年 9 月 3 日凌晨,微软正式发布 2021 年 8 月版的 Visual Studio Code.希望您会喜欢此版本中的许多更新与改进,以下是其中的一些亮点: * 自动语言检测 ...

  7. SpringBoot整合定时任务----Scheduled注解实现(一个注解全解决)

    一.使用场景 定时任务在开发中还是比较常见的,比如:定时发送邮件,定时发送信息,定时更新资源,定时更新数据等等... 二.准备工作 在Spring Boot程序中不需要引入其他Maven依赖 (因为s ...

  8. “ShardingCore”是如何针对分表下的分页进行优化的

    分表情况下的分页如何优化 首先还是要给自己的开原框架打个广告 sharding-core 针对efcore 2+版本的分表组件,首先我们来快速回顾下目前市面上分表下针对分页常见的集中解决方案 分表解决 ...

  9. list类型数据的操作指令

    1. 结果是 3 2 1 还可以继续追加如下: 2. 3. 4.删除表头元素(最左侧的元素),并返回该元素 5. 6. 7.删除表尾的元素(最右侧的元素),并返回该元素 8.

  10. 快速模式第二包: quick_inI1_ouR1()

    文章目录 1. 序言 2. quick_inI1_outR1()流程图 3. 快速模式消息②数据包格式 4. 源码分析 4.1 quick_inI1_outR1() 4.2 quick_inI1_ou ...