mongodb容器化部署

文章详细介绍了如何使用DockerCompose进行MongoDB的单节点和副本集部署,包括创建工作目录、配置环境变量、设置数据持久化、端口映射、日志管理以及安全认证。对于副本集,特别强调了奇数个节点以确保选举稳定性,并提供了初始化副本集和配置应用连接的步骤。
摘要由CSDN通过智能技术生成

mongodb容器化部署

1. 单节点

  • 创建工作目录
mkdir -p /data/mongodb/{conf,data,logs}
  • 容器编排

构建docker-compose.yaml

version: '3'
services:
  mongodb-container:
    image: mongo:4.4.18
    container_name: mongodb-container
    command: [--auth]
    environment:
      # 时区上海
      TZ: Asia/Shanghai
      MONGO_INITDB_ROOT_USERNAME: root
      MONGO_INITDB_ROOT_PASSWORD: Gn8_J777sxxn
    volumes:
        - /data/mongodb/data:/data/db
        - /data/mongodb/conf:/data/configdb
        - /data/mongodb/logs:/var/log/mongodb
    ports:
      - 27017:27017
    restart: always
    logging:
      driver: json-file
      options:
        max-size: "100m"
        max-file: "50"
  • 启动服务
cd /data/mongodb
docker-compose -f docker-compose.yaml up -d
  • 验证
# 进入容器
docker exec -it mongodb-container bash
mongo 127.0.0.1:27017/admin -u root -p

2. 副本集

副本集群是一组维护相同数据集的mongod实例。一个副本集包含几个承载数据的节点和一个可选的仲裁节点。在承载数据的节点中,只有一个节点被认为是主节点,其他节点被认为是次节点。

主节点接收所有的写操作,次节点接收主节点的操作应用在自己的数据集上,副本节点只是做一个备份的作用,当主节点出现故障时,会自动选出新的主节点。

本教程描述的是包含三个节点的副本集群搭建,所有节点都没有开启访问控制。

因为集群需要通过选举来确定master节点,为了选举不会出现问题,所以集群成员数量应该总是奇数个。

  • 创建工作目录
# 在所有节点创建工作目录
mkdir -p /data/mongodb/{conf,data,logs}
  • 创建keyfile
cd /data/mongodb/conf
openssl rand -base64 756 > mongodb.key
chmod 400 mongodb.key
# 将mongodb.key分发至所有mongodb宿主机的相同目录
  • 容器编排

docker-compose.yaml

version: '3'
services:
  mongodb:
    image: mongo:4.4.18
    container_name: mongodb
    command: mongod --auth --keyFile /data/configdb/mongodb.key --replSet MongoRs
    environment:
      # 时区上海
      TZ: Asia/Shanghai
      MONGO_INITDB_ROOT_USERNAME: root
      MONGO_INITDB_ROOT_PASSWORD: Gn8_J777sxxn
    volumes:
        - /data/mongodb/data:/data/db
        - /data/mongodb/conf:/data/configdb
        - /data/mongodb/logs:/var/log/mongodb
    ports:
      - 27017:27017
    entrypoint:
      - bash
      - -c
      - |
        chmod 400 /data/configdb/mongodb.key
        chown 999:999 /data/configdb/mongodb.key
        exec docker-entrypoint.sh $$@
    restart: always
  • 启动服务

在每个节点启动服务

cd /data/mongodb
docker-compose -f docker-compose.yaml up -d
  • 配置副本集
# 本次假设需要设定192.168.1.11为主,其余为从
# 登录192.168.10.101上的库(使用客户端命令连接任意一个节点,但这里尽量要连接主节点)
docker exec -it mongodb bash
mongo 192.168.1.11:27017/admin -u root -p

# 添加配置信息
# 这里的_id要与docker-compose中的参数一致,priority指定选举优先级,越高越容易被选举为主,默认为1
> config={_id:"MongoRs",members:[ 
{_id:0,host:"192.168.1.11:27017",priority:10}, 
{_id:1,host:"192.168.1.12:27017",priority:1}, 
{_id:2,host:"192.168.1.12:27017",priority:1}] 
}

# 初始化副本集
> rs.initiate(config)

# 查看副本集配置信息
> rs.conf()

# 查看副本集运行状态:
> rs.status()
  • 在application.yml中配置副本集
spring:
  data:
    mongodb:
      uri: mongodb://root:Gn8_J777sxxn@192.168.1.11:27017,192.168.1.12:27017,192.168.1.13:27017/admin?replicaSet=MongoRs&readPreference=secondaryPreferred&connectTimeoutMS=300000&slaveOk=true
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Winter Liu

别说话,打赏就行了!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值