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 ...
随机推荐
- MySQL基础——常用命令
一.连接MySQL 1.启动mysql首先在打开cmd窗口,输入mysql -uroot -p ,然后空格进入MySQL控制台,MySQL的提示符是: mysql>. mysql -uroot ...
- python--接口自动化经常用到的pytest框架
pytest常用的方法和原理 1.pytest的原理 pytest插件基于pluggy模块:pluggy有三个重要概念:HookspecMarker(用来定义hook函数),HookimplMarke ...
- Qt中QOpengl的QMatrix4x4矩阵作用原理以及使用方法
1.矩阵具有坐标变换的作用,例如:左乘一个旋转矩阵,实现点的坐标旋转,左乘一个平移矩阵实现,点的平移 2.一个点可以同时串联相乘几个变换矩阵,实现坐标连续变换,根据左乘规则,右边矩阵先作用于点,作用顺 ...
- HashSet的存储原理
HashSet的底层用哈希散列表来存储对象(默认长度为16的数组),假如: Set set=new HashSet(); set.add(obj); 内部存储过程为:定义h=obj.hashCode, ...
- Apache Hudi内核之文件标记机制深入解析
1. 摘要 Hudi 支持在写入时自动清理未成功提交的数据.Apache Hudi 在写入时引入标记机制来有效跟踪写入存储的数据文件. 在本博客中,我们将深入探讨现有直接标记文件机制的设计,并解释了其 ...
- Sentry Web 前端监控 - 最佳实践(官方教程)
系列 1 分钟快速使用 Docker 上手最新版 Sentry-CLI - 创建版本 快速使用 Docker 上手 Sentry-CLI - 30 秒上手 Source Maps Sentry For ...
- go语言游戏服务端开发(一)——架构
五邑隐侠,本名关健昌,12年游戏生涯. 本教程以Go语言为例. 网络游戏程序分为客户端和服务端.客户端负责图形渲染.交互和一些简单校验处理,服务端负责业务逻辑处理.数据存储. 我们开发一个游戏de ...
- 将dict.define转化成dict.txt
在使用捷通智能灵云外呼系统V6.1时.需要大量使用到模式码,也就是正则表达式.而老版本365还是使用场景文件. 当要将老版本改编成新版本的时候,需要需要将dict.define文件中的一行行的词条用& ...
- Java Web实现登录验证码(Servlet+jsp)
1.生成验证码图片(Servlet) import java.awt.Color; import java.awt.Font; import java.awt.Graphics2D; import j ...
- PHP中的垃圾回收相关函数
之前我们已经学习过 PHP 中的引用计数以及垃圾回收机制的概念.这些内容非常偏理论,也是非常常见的面试内容.而今天介绍的则是具体的关于垃圾回收的一些功能函数.关于之前的两篇介绍文章,大家可以到文章底部 ...