使用docker-compose 搭建mongo单节点与副本集

这篇具有很好参考价值的文章主要介绍了使用docker-compose 搭建mongo单节点与副本集。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

使用docker-compose 搭建mongo单节点与副本集

注:确认已经已经关闭防火墙和selinux和已安装docker

1、单节点安装

1.1 安装docker-compose

1.安装docker-cpmpose
curl -L https://github.com/docker/compose/releases/download/1.23.1/docker-compose-uname -s-uname -m > /usr/local/bin/docker-compose

chmod +x/usr/local/bin/docker-compose

或者去直接下载安装包 https://github.com/docker/compose/releases 


1.2 创建安装yml

mkdir -p /data/mongodb
vim /data/mongodb/mongo.yml

version: '3'
services:
    mongo:
        image: mongo
        container_name: mongodb
        ports:
            - 27017:27017
        volumes:
            - /data/mongodb/data/db:/data/db
            - /data/mongodb/configdb:/data/configdb
            - /data/mongodb/backup:/data/backup
        command:
            ['--auth']
        tty:
            true

1.3 启动mongodb脚本

vim /data/mongo/start_mongodb.sh

docker-compose -f mongo.yml up -d
# 延迟登录,解决可能出现的连接失败问题
sleep 3
# 进入docker容器,以admin用户身份进入mongo
docker exec -it mongodb mongo admin

1.4 mongo常用命令

常用命令使用文档: https://www.runoob.com/mongodb/mongodb-tutorial.html


# 创建用户
db.createUser({user:'zhd',pwd:'123456',roles:[{role:'root',db:'admin'}]})
# 验证用户
db.auth('zhd','123456')
# 创建/切换数据库
use t_zhd
# 创建集合
db.createCollection('zhd')
# 查看集合
show tables
# 插入文档
db.hcy.insert({"zhd":"123"})
# 查询文档
db.hcy.find()
# 查看数据库
show dbs

2、MongoDB副本集集群

2.1.1 生成keyfile

 mkdir /data/mongodb/{mongo-master,mongo-slave1,mongo-slave2} -pv
 cd /data/mongodb/
# 400权限是要保证安全性,否则mongod启动会报错
 openssl rand -base64 756 > mongodb.key
 chmod 400 mongodb.key


 cp mongodb.key /data/mongodb/mongo-master/
 cp mongodb.key /data/mongodb/mongo-slave1/
 cp mongodb.key /data/mongodb/mongo-slave2/

2.1.2 生成yml文件

vim /data/mongodb/mongodb.yml文章来源地址https://www.toymoban.com/news/detail-813700.html

version: "3"

services:
  #主节点
  mongodb1:
    image: mongo
    container_name: mongo-master
    restart: always
    ports:
      - 27017:27017
    environment:
      - MONGO_INITDB_ROOT_USERNAME=root
      - MONGO_INITDB_ROOT_PASSWORD=mongodb@evescn
    command: mongod --replSet rs0 --keyFile /mongodb.key
    volumes:
      - /etc/localtime:/etc/localtime
      - /data/mongodb/mongo-master/data:/data/db
      - /data/mongodb/mongo-master/configdb:/data/configdb
      - /data/mongodb/mongo-master/mongodb.key:/mongodb.key
    networks:
      - mongoNet
    entrypoint:
      - bash
      - -c
      - |
        chmod 400 /mongodb.key
        chown 999:999 /mongodb.key
        exec docker-entrypoint.sh $$@
  # 副节点
  mongodb2:
    image: mongo
    container_name: mongo-slave1
    restart: always
    ports:
      - 27018:27017
    environment:
      - MONGO_INITDB_ROOT_USERNAME=root
      - MONGO_INITDB_ROOT_PASSWORD=mongodb@evescn
    command: mongod --replSet rs0 --keyFile /mongodb.key
    volumes:
      - /etc/localtime:/etc/localtime
      - /data/mongodb/mongo-slave1/data:/data/db
      - /data/mongodb/mongo-slave1/configdb:/data/configdb
      - /data/mongodb/mongo-slave1/mongodb.key:/mongodb.key
    networks:
      - mongoNet
    entrypoint:
      - bash
      - -c
      - |
        chmod 400 /mongodb.key
        chown 999:999 /mongodb.key
        exec docker-entrypoint.sh $$@
  # 副节点
  mongodb3:
    image: mongo
    container_name: mongo-slave2
    restart: always
    ports:
      - 27019:27017
    environment:
      - MONGO_INITDB_ROOT_USERNAME=root
      - MONGO_INITDB_ROOT_PASSWORD=mongodb@evescn
    command: mongod --replSet rs0 --keyFile /mongodb.key
    volumes:
      - /etc/localtime:/etc/localtime
      - /data/mongodb/mongo-slave2/data:/data/db
      - /data/mongodb/mongo-slave2/configdb:/data/configdb
      - /data/mongodb/mongo-slave2/mongodb.key:/mongodb.key
    networks:
      - mongoNet
    entrypoint:
      - bash
      - -c
      - |
        chmod 400 /mongodb.key
        chown 999:999 /mongodb.key
        exec docker-entrypoint.sh $$@
networks:
  mongoNet:
    driver: bridge

2.1.3 启动和停止服务

docker-compose -f /data/mongodb/mongodb.yml up -d  #启动服务
docker-compose -f /data/mongodb/mongodb.yml down   #停止服务

2.2配置集群

2.2.1 登录容器

docker exec -it mongo-master mongo  #进入容器
# 认证
> use admin
> db.auth('root', 'mongodb@evescn')  #账户密码是配置文件配置的

2.2.2 初始化集群

2.2.2.1添加配置文件
> config={_id:"rs0",members:[ 
{_id:0,host:"192.168.2.11:27017"}, 
{_id:1,host:"192.168.2.11:27018"}, 
{_id:2,host:"192.168.2.11:27019"}] 
}


#rs0 为集群名称,可以任意
#ip填写自己对应的ip
2.2.2.2初始化副本集mongodb-cluster集群
> rs.initiate(config)
2.2.2.5 查看副本集配置信息和运行状态
## 查看副本集配置信息
> rs.conf()

## 查看副本集运行状态:
> rs.status()
............

"members" : [
		{
			"_id" : 0,
			"name" : "192.168.2.11:27017",
			"health" : 1,
			"state" : 1,
			"stateStr" : "PRIMARY",
			"uptime" : 316,
			"optime" : {
				"ts" : Timestamp(1680589697, 1),
				"t" : NumberLong(1)
			},
			"optimeDate" : ISODate("2023-04-04T06:28:17Z"),
			"lastAppliedWallTime" : ISODate("2023-04-04T06:28:17.929Z"),
			"lastDurableWallTime" : ISODate("2023-04-04T06:28:17.929Z"),
			"syncSourceHost" : "",
			"syncSourceId" : -1,
			"infoMessage" : "",
			"electionTime" : Timestamp(1680589607, 1),
			"electionDate" : ISODate("2023-04-04T06:26:47Z"),
			"configVersion" : 1,
			"configTerm" : 1,
			"self" : true,
			"lastHeartbeatMessage" : ""
		},
		{
			"_id" : 1,
			"name" : "192.168.2.11:27018",
			"health" : 1,
			"state" : 2,
			"stateStr" : "SECONDARY",
			"uptime" : 102,
			"optime" : {
				"ts" : Timestamp(1680589697, 1),
				"t" : NumberLong(1)
			},
			"optimeDurable" : {
				"ts" : Timestamp(1680589697, 1),
				"t" : NumberLong(1)
			},
			"optimeDate" : ISODate("2023-04-04T06:28:17Z"),
			"optimeDurableDate" : ISODate("2023-04-04T06:28:17Z"),
			"lastAppliedWallTime" : ISODate("2023-04-04T06:28:17.929Z"),
			"lastDurableWallTime" : ISODate("2023-04-04T06:28:17.929Z"),
			"lastHeartbeat" : ISODate("2023-04-04T06:28:19.957Z"),
			"lastHeartbeatRecv" : ISODate("2023-04-04T06:28:18.991Z"),
			"pingMs" : NumberLong(0),
			"lastHeartbeatMessage" : "",
			"syncSourceHost" : "192.168.2.11:27017",
			"syncSourceId" : 0,
			"infoMessage" : "",
			"configVersion" : 1,
			"configTerm" : 1
		},
		{
			"_id" : 2,
			"name" : "192.168.2.11:27019",
			"health" : 1,
			"state" : 2,
			"stateStr" : "SECONDARY",
			"uptime" : 102,
			"optime" : {
				"ts" : Timestamp(1680589697, 1),
				"t" : NumberLong(1)
			},
.................

到了这里,关于使用docker-compose 搭建mongo单节点与副本集的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 使用docker-compose搭建mysql主从

    目录 一、docker-compose和主从的简介 1、docker-compose 2、mysql主从 3、为什么要使用docke-compose? 二、部署mysql主从集群 1、mysql-master主库 2、mysql-slave从库 三、安装docker-compose 1、上传文件 2、添加可执行权限 3、创建并编辑docker-compose.yml文件 4、运行docker-composeysql.yml 四、配置mysql主

    2024年02月07日
    浏览(39)
  • 使用Docker-Compose搭建Redis集群

    3主+3从 由于仅用于测试,故我这里只用1台服务器进行模拟 redis列表 在server上创建一个目录用于存放redis集群部署文件。这里我放的路径为/root/redis-cluster 在/opt/docker/redis-cluster目录下创建redis-1,redis-2,redis-3,redis-4,redis-5,redis-6文件夹 注意:port值不能都为6379,根据上面redis列表设

    2024年02月15日
    浏览(41)
  • minio文件服务器-docker docker-compose 搭建部署以及使用大全

    下载官网 简介 docker-compose 单机版安装 拉取镜像运行容器 docker-compose 搭建 minio 分布式对象存储 部署 官方推荐 docker-compose.yaml :下载地址 vim docker-compose.yml 接着创建 config目录 执行启动命令,看到各个节点 healthy 状态即成功 浏览器访问任意节点 web console ,进行简单配置,配

    2023年04月10日
    浏览(60)
  • 如何通过docker-compose部署单节点ES

    一、概述 Linux系统搭建单节点ES的方式有很多种,其中通过docker-compose进行安装最为方便。 二、准备 1、配置虚拟机 1.1、设置IP 将虚拟机IP设置为192.168.1.100; 1.2、设置内存 将虚拟机内存设置为4G,内存太小可能导致ES无法正常运行; 1.3、修改limits.conf limits.conf文件可以设置用

    2024年02月15日
    浏览(54)
  • 用docker-compose部署Rabbitmq三节点集群部署方案

    主机名 IP node1 10.4.2.10 node2 10.4.2.59 node3 10.4.2.134 (1) 在/root目录下先创建一个rabitmq目录用于存放文件 mkdir  rabitmq (2)修改主机名和域名解析hosts文件 (1)修改主机名 hostnamectl set-hostname  node1    hostnamectl set-hostname  node2 hostnamectl set-hostname  node3 node1  node2   node3 分别对应

    2024年02月04日
    浏览(55)
  • 【保姆级教程】:docker搭建MongoDB三节点副本集

    欢迎关注公众号:天天说编程 你的关注是我最大的动力! 容器可以理解为一个进程,镜像是把环境,组件等都配置好,运行成容器的,容器里面运行服务,也可以说是一个进程。镜像是模板,镜像是实例。 一个镜像可以创建多个实例。也就是多个容器,容器之间相互独立。

    2024年02月03日
    浏览(46)
  • docker-compose搭建redis服务

    2024年02月14日
    浏览(48)
  • Docker-compose详解和LNMP搭建实战

    目录  一、Docker-compose简介 1.前言 2.概述 二、Docker-compose安装 安装源获取 安装包下载 三、YAML文件格式及编写注意事项 1.简介 2.使用方法 四、Docker Compose 常用命令 五、Docker Compose 配置常用字段 六、Docker-compose搭建LNMP实战         我们知道使用一个Dockerfile模板文件可以定

    2024年02月12日
    浏览(46)
  • docker环境下mongo副本集的部署及异常修复

    最近更换了办公地点。部署在本地docker环境里的mongo数据库不能使用了。原因是本地的ip地址变更。以前的mongo副本集的配置需要更新。处理完后,索性重新记录一下mongo副本集在docker中的部署流程。 我们先了解一下什么是事务,事务是一组对数据库执行的操作,这些操作作为

    2024年01月18日
    浏览(54)
  • docker-compose搭建prometheus+grafana+钉钉告警

    前言: 本文将介绍使用docker-compose部署搭建promtheus监控容器、主机、服务等相关状态; 配合granfana面板构建监控大屏; 由于grafana的报警不是很友好,使用dingtalk,配合altermanager,实现钉钉报警。 docker环境搭建不再介绍,网上已经一大堆。  首先介绍一下需要部署的组件:

    2024年02月16日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包