创建目录

在每台机器上操作此步骤

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

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. springmvc框架(Spring SpringMVC, Hibernate整合)

    直接干货 model 考虑给用户展示什么.关注支撑业务的信息构成.构建成模型. control 调用业务逻辑产生合适的数据以及传递数据给视图用于呈献: view怎样对数据进行布局,以一种优美的方式展示 ...

  2. 何时覆盖hashCode()和equals()方法

    The theory (for the language lawyers and the mathematically inclined): equals() (javadoc) must defin ...

  3. mzy,struts学习(三):action中获得servlet中三域一参的三种方法

    package com.mzy.servlet; import java.util.Arrays; import java.util.Map; import javax.servlet.Servlet ...

  4. 算法入门 - 链表的实现及应用(Java版本)

    之前我们学习了动态数组,虽然比原始数组的功能强大了不少,但还不是完全纯动态的(基于静态数组实现的).这回要讲的链表则是正儿八经的动态结构,是一种非常灵活的数据结构. 链表的基本结构 链表由一系列单一的 ...

  5. MySQL5.7.24 安装

    官网地址 https://dev.mysql.com/downloads/mysql/ 1. 安装依赖 yum install -y cmake make gcc gcc-c++ libaio ncu ...

  6. .Net Core 中的选项Options

    .NetCore的配置选项建议结合在一起学习,不了解.NetCore 配置Configuration的同学可以看下我的上一篇文章 [.Net Core配置Configuration源码研究] 由代码开 ...

  7. RHCA-openstack学习部署笔记-CL210

    笔记说明:目前考试是基于RHELOSP13(32G)来进行环境部署,引入了容器,而学习是基于RHELOSP6来安装部署的,基于Openstack. 讨论:openstack.虚拟化和云计算的关系以及区 ...

  8. Python入门学习之:10分钟1500访问量

    看效果: 不扯没用的,直接上代码: # author : sunzd # date : 2019/9/01 # position : beijing from fake_useragent impor ...

  9. java web 项目中web.xml 详解

    web.xml详述: web.xml 是每个Java web 项目的必备文件,又叫做部署描述符,Servlet规范中定义的,是web应用的配置文件. 概念: .部署描述符文件就像所有XML文件一样,必 ...

  10. PHP中环境变量的操作

    在 PHP 中,我们可以通过 phpinfo() 查看到当前系统中的环境变量信息(Environment).在代码中,我们也可以通过两个函数,查看和修改相应的环境变量信息. getenv() 获取环境 ...