docker-compose 搭建mongo集群
创建目录
在每台机器上操作此步骤
一.在编写容器文件之前的注意事项:
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集群的更多相关文章
- 从零开始学习docker之在docker中搭建redis(集群)
docker搭建redis集群 docker-compose是以多容器的方式启动,非常适合用来启动集群 一.环境准备 云环境:CentOS 7.6 64位 二.安装docker-compose #需要 ...
- Docker:搭建RabbitMQ集群
RabbitMQ原理介绍(一) RabbitMQ安装使用(二) RabbitMQ添加新用户并支持远程访问(三) RabbitMQ管理命令rabbitmqctl详解(四) RabbitMQ两种集群模式配 ...
- Docker中搭建zookeeper集群
1.获取官方镜像 从dockerhub获取官方的zookeeper镜像: docker pull zookeeper 2.了解镜像内容 拉取完镜像后,通过 docker inspect zookeep ...
- docker下搭建fastfds集群版
搭建过程参考 作者 https://me.csdn.net/feng_qi_1984 的课程视频 声明:集群版是在我之前写的单机版基础之上进行搭建的,我将安装了fastfds单机版的docker打包成 ...
- 用 Docker 快速搭建 Kafka 集群
开源Linux 一个执着于技术的公众号 版本 •JDK 14•Zookeeper•Kafka 安装 Zookeeper 和 Kafka Kafka 依赖 Zookeeper,所以我们需要在安装 Kaf ...
- docker上搭建consul集群全流程
consul简介: consul是提供服务发现.简单配置管理.分区部署的服务注册发现解决方案.主要特性:服务发现\健康检查\基于Key-Value的配置\支持TLS安全通讯\支持多数据中心部署 con ...
- 在centos7使用docker下搭建elasticsearch集群
一 .docker的安装 https://www.cnblogs.com/ghostdot/p/12410242.html 二.创建相关映射文件 cd /home/ mkdir node cd nod ...
- 基于docker快速搭建hbase集群
一.概述 HBase是一个分布式的.面向列的开源数据库,该技术来源于 Fay Chang 所撰写的Google论文"Bigtable:一个结构化数据的分布式存储系统".就像Bigt ...
- Docker+nginx搭建tomcat集群
1.环境准备: a.宿主机CentOS7 b.连接工具FinalShell c.镜像nginx1.20.1,tomcat (镜像拉取:docker pull 镜像名称) 2.创建nginx文件夹,to ...
随机推荐
- MongoDB学习笔记二- Mongoose
MongoDB学习笔记二 Mongoose Mongoose 简介 之前我们都是通过shell来完成对数据库的各种操作, 在开发中大部分时候我们都需要通过程序来完成对数据库的操作 而Mongoose就 ...
- 刷题-力扣-50. Pow(x, n)
50. Pow(x, n) 题目链接 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/powx-n/ 著作权归领扣网络所有.商业转载请联系官方授 ...
- python进阶(20) 正则表达式的超详细使用
正则表达式 正则表达式(Regular Expression,在代码中常简写为regex. regexp.RE 或re)是预先定义好的一个"规则字符率",通过这个"规 ...
- tree命令出现乱码
alias tree='tree --charset ASCII'就可以了
- 痞子衡嵌入式:MCUXpresso IDE下SDK工程在Build配置上与IAR,MDK差异
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是MCUXpresso IDE下SDK工程在Build配置上与IAR,MDK差异. 恩智浦 SW 团队每个季度都会公布 SDK.Tool ...
- Hadoop及Hbase部署
原文转自:https://www.cnblogs.com/itzgr/p/10233932.html作者:木二 目录 一 环境准备 1.1 相关环境 1.2 网络环境 二 基础环境配置 2.1 配置相 ...
- 三.Go微服务--令牌桶实现原理
1. 前言 在上一篇文章 Go微服务: 令牌桶 当中简单的介绍了令牌桶实现的原理,然后利用 /x/time/rate 这个库 10 行代码写了一个基于 ip 的 gin 限流中间件,那这个功能是怎么实 ...
- Linux从头学10:三级跳过程详解-从 bootloader 到 操作系统,再到应用程序
作 者:道哥,10+年的嵌入式开发老兵. 公众号:[IOT物联网小镇],专注于:C/C++.Linux操作系统.应用程序设计.物联网.单片机和嵌入式开发等领域. 公众号回复[书籍],获取 Linux. ...
- 2021年哪个低代码平台更值得关注?T媒体盘点国内主流低代码厂商
2020年圣诞前夜,国内知名创投科技媒体T媒体旗下的T研究发布了2020中国低代码平台指数测评报告.报告除了对国内低代码行业现状进行总结外,还对主流低代码厂商的市场渗透和曝光进行测评. 报告认为,低代 ...
- QT之静态函数发送信号
一.简介 由于博主本人是初学者对QT的机制不了解,所以遇到了一个比较大的坑,特此记录一下.我遇到的问题是无法在静态函数中向另外一个类发送信号.解决办法:先将信号发送给同类中的普通函数,然后在从普通函数 ...