首页 > 数据库 >MongoDB 部署指南:从 Linux 到 Docker 的全面讲解

MongoDB 部署指南:从 Linux 到 Docker 的全面讲解

时间:2024-10-31 11:48:16浏览次数:3  
标签:副本 Linux MongoDB 配置 分片 服务器 Docker 节点

一、MongoDB 简介

MongoDB 是一种 NoSQL 数据库,以文档模型存储数据,具备高性能、弹性扩展性和分布式架构等特点,非常适用于高并发和大数据量的场景。本文将从 Linux 和 Docker 环境开始讲解,帮助读者在不同环境下顺利部署 MongoDB。

二、在 Linux (CentOS) 上部署 MongoDB

2.1 安装 MongoDB

在 Linux 上安装 MongoDB 主要通过包管理工具 YUM 进行。以下步骤适用于 CentOS 7/8:

  1. 配置 MongoDB YUM 源

    cat <<EOF | sudo tee /etc/yum.repos.d/mongodb-org-6.0.repo
    [mongodb-org-6.0]
    name=MongoDB Repository
    baseurl=https://repo.mongodb.org/yum/redhat/\$releasever/mongodb-org/6.0/x86_64/
    gpgcheck=1
    enabled=1
    gpgkey=https://www.mongodb.org/static/pgp/server-6.0.asc
    EOF
    
  2. 安装 MongoDB

    sudo yum install -y mongodb-org
    
  3. 启动并设置开机自启动

    sudo systemctl start mongod
    sudo systemctl enable mongod
    
  4. 验证安装

    启动后可以使用以下命令检查 MongoDB 服务状态:

    sudo systemctl status mongod
    

    在终端输入 mongo 命令,进入 MongoDB shell,验证是否可以成功连接。

2.2 配置 MongoDB

/etc/mongod.conf 中可以进行基本配置:

  • 数据存储路径

    storage:
      dbPath: /var/lib/mongo
    
  • 网络配置

    修改绑定 IP 地址,允许外部访问:

    net:
      bindIp: 0.0.0.0
      port: 27017
    

完成配置后,重启 MongoDB:

sudo systemctl restart mongod

三、在 Docker 中部署 MongoDB

使用 Docker 部署 MongoDB 可以简化安装流程,并能方便地进行环境隔离。

3.1 拉取 MongoDB 镜像

docker pull mongo:6.0

3.2 启动 MongoDB 容器

通过以下命令启动 MongoDB 容器,挂载数据目录,并设置容器名称和网络端口:

docker run -d --name mongodb \
    -p 27017:27017 \
    -v /mydata/mongo:/data/db \
    -e MONGO_INITDB_ROOT_USERNAME=admin \
    -e MONGO_INITDB_ROOT_PASSWORD=admin123 \
    mongo:6.0

3.3 配置挂载 HTML 数据实时刷新

为了在 Docker 中实时挂载 HTML 等静态文件,可以通过 Docker 的挂载机制来完成:

  1. 创建挂载目录

    mkdir -p /mydata/html 
    
  2. 运行 MongoDB 并挂载 HTML 文件

    docker run -d --name mongodb \
        -p 27017:27017 \
        -v /mydata/html:/usr/share/nginx/html \
        mongo:6.0
    

这样,在 /mydata/html 中的内容会映射到 MongoDB 容器中,可以在更新数据时实时反映。

四、集群环境下的 MongoDB 部署

MongoDB 集群部署适用于高可用场景。主要部署方式包括副本集(Replica Set)和分片(Sharding)。

4.1 副本集(Replica Set)配置

副本集是 MongoDB 内置的高可用方案,通过多个节点实现数据复制,避免单点故障。每个副本集由一个主节点(Primary)和一个或多个从节点(Secondary)组成。

配置步骤:

假设需要搭建一个三节点副本集,其中 mongodb0 为主节点,mongodb1mongodb2 为从节点。

1. 安装 MongoDB 并配置 mongod.conf 文件

在每台服务器上进行 MongoDB 的安装。完成安装后,在每个节点的 mongod.conf 文件中设置副本集名称。

/etc/mongod.conf 中添加以下内容:

# 副本集配置
replication:
  replSetName: "rs0"   # 副本集名称,三台服务器的名称保持一致
2. 启动 MongoDB 实例

在每台服务器上启动 MongoDB 服务:

sudo systemctl start mongod
3. 初始化副本集

进入任意一台 MongoDB 节点(如 mongodb0)的 MongoDB Shell,并初始化副本集。

mongo --host mongodb0.example.net --port 27017

执行以下代码以初始化副本集:

rs.initiate({
  _id: "rs0",   // 副本集名称
  members: [
    { _id: 0, host: "mongodb0.example.net:27017" },  // 主节点
    { _id: 1, host: "mongodb1.example.net:27017" },  // 从节点1
    { _id: 2, host: "mongodb2.example.net:27017" }   // 从节点2
  ]
})
4. 验证副本集配置

执行以下命令,查看副本集状态:

rs.status()

在输出信息中可以看到副本集的各个节点状态,包括主节点和从节点的同步情况。至此,三节点副本集已完成配置,实现了数据冗余和高可用性。


4.2 分片集群(Sharding Cluster)配置

分片集群主要用于解决 MongoDB 在大数据量或高并发环境下的性能瓶颈。分片集群通过将数据拆分成块,并分布在不同的分片节点上,从而实现数据和负载的分布式管理。

分片集群通常包含三种角色:

  1. 路由(Router)节点:客户端连接入口,用于路由请求。
  2. 配置服务器(Config Server):存储分片信息。
  3. 分片服务器(Shard Server):存储数据并执行查询。
配置步骤:

假设我们有三台服务器用于路由节点和配置服务器,另外有三台用于存储分片。

1. 配置和启动配置服务器(Config Server)

在配置服务器上进行以下配置。在 /etc/mongod.conf 文件中指定 configsvr 模式和配置数据存储路径。

# 配置服务器配置
sharding:
  clusterRole: "configsvr"     # 声明该节点为配置服务器

storage:
  dbPath: /var/lib/mongo/config  # 配置数据存储路径

启动配置服务器:

sudo systemctl start mongod
2. 配置和启动分片服务器(Shard Server)

在分片服务器上进行以下配置。在 /etc/mongod.conf 文件中指定 shardsvr 模式和分片数据存储路径。

# 分片服务器配置
sharding:
  clusterRole: "shardsvr"      # 声明该节点为分片服务器

storage:
  dbPath: /var/lib/mongo/shard   # 分片数据存储路径

启动分片服务器:

sudo systemctl start mongod
3. 配置和启动路由节点(Router Node)

路由节点通过 mongos 服务充当客户端的路由器。以下配置需要连接到配置服务器。

mongos --configdb "rs0/mongodb0.example.net:27019,mongodb1.example.net:27019,mongodb2.example.net:27019" --bind_ip_all --port 27017

此命令会启动一个 mongos 实例,连接到上述三个配置服务器,使客户端可以通过 mongos 实例访问分片集群。

4. 启用分片和创建分片集合

使用 mongos 连接 MongoDB Shell,并启用数据库和集合的分片:

sh.enableSharding("myDatabase")   // 启用数据库的分片功能
sh.shardCollection("myDatabase.myCollection", { shardKey: 1 })  // 定义集合的分片键

分片键 shardKey 选择会影响分片分布和性能,应根据查询特点选择合适的字段作为分片键。

5. 验证分片集群配置

可以通过以下命令查看分片状态:

sh.status()

输出的分片信息将显示所有分片、分布在不同节点的数据块、路由节点和配置服务器信息,验证分片集群配置是否正确。

标签:副本,Linux,MongoDB,配置,分片,服务器,Docker,节点
From: https://blog.csdn.net/weixin_39996520/article/details/143373791

相关文章

  • Spring Boot应用MongoDB
    1.添加Maven依赖在SpringBoot项目中,引入spring-boot-starter-data-mongodb依赖:<dependencies><!--MongoDBstarterdependencyforSpringBoot--><dependency><groupId>org.springframework.boot</groupId><......
  • 猫头虎分享:2024最新 Docker 国内可用镜像源仓库地址
    ......
  • “双系统”出炉!瑞芯微RK3562J非对称AMP:Linux+RTOS/裸机
    “非对称AMP”双系统AMP(AsymmetricMulti-Processing),即非对称多处理架构。“非对称AMP”双系统是指多个核心相对独立运行不同的操作系统或裸机应用程序,如Linux+RTOS/裸机,但需一个主核心来控制整个系统以及其它从核心。每个处理器核心相互隔离,拥有属于自己的内存,既可各自独立......
  • Linux安装Python 3.11
    Linux安装python在Linux上安装Python3.11,你可以按照以下步骤进行。这些步骤以CentOS为例,但其他Linux发行版的过程大同小异,可能只需稍作调整。1.检查Python版本首先,打开终端,检查系统上是否已安装Python3.11:python3.11--version#或者python3--version如果系统返回的是......
  • 如何搭建一个网站-linux
    准备工作选择Linux发行版在选择Linux发行版时,我们需要权衡不同的特性和需求。以下是几个常用的选择:发行版特点适用场景Ubuntu用户友好,丰富的软件资源初学者,桌面应用CentOS稳定可靠,长期支持服务器环境Debian稳健,注重安全生产环境Ubuntu以其简洁直观......
  • Docker 如何开启远程访问
    Docker开启远程访问需要确保Docker守护进程(Daemon)配置了适当的监听地址、调整防火墙规则来允许合适的网络访问,并确保了安全性措施,如使用TLS加密。具体步骤包括编辑Docker服务文件、修改启动参数、重新启动服务和设置防火墙规则。首先,要启动Docker的远程访问功能,我们需要修......
  • docker容器安装nacos详解
    ‌Nacos的核心功能‌Nacos是一个动态服务发现、配置管理和服务管理平台,旨在帮助构建云原生应用。它支持服务注册与发现、配置管理、‌服务健康监测等功能,适用于微服务和云原生架构。Nacos提供了友好的‌Web界面和‌API接口,方便用户进行配置管理、服务注册和发现等操作。1.打......
  • 低权 Linux 键盘记录方案
    前言日了几台机器,虽说部分机器有ROOT,可以直接用之前的 一般路过PAM后门/SSH密码记录 39,来替换PAM,用于记录密码。然而问题是,这货上了LDAP,还自己改了改他们的PAM,所以直接替换PAM的方案行不通了。而且有一个跳板机,我们没有低权限,但是当前用户却会用这台机器连接其他目标,使用的......
  • 多线程编程 Linux环境
    进程和线程相同点:都是参与时间片轮转的任务,都有5个状态不同点:线程不能独立存在,只能隶属于创建它的进程进程实际上是线程的容器,任何进程至少包含一个称为主线程的线程,执行main函数所在的执行序列,这个线程是系统为进程自动创建而其余线程则进程通过调用相关函数来创建进......
  • Linux Docker 部署 Elasticsearch (ES) 集群详解教程
    1.安装Docker首先,确保你的Linux系统上已经安装了Docker。如果尚未安装,可以通过以下命令进行安装:sudoyuminstall-yyum-utilssudoyum-config-manager--add-repohttps://download.docker.com/linux/centos/docker-ce.reposudoyuminstalldocker-cedocker-ce......