• 【运维日常】mongodb 集群生产实践


      本站以分享各种运维经验和运维所需要的技能为主

    《python零基础入门》:python零基础入门学习

    《python运维脚本》: python运维脚本实践

    shell》:shell学习

    《terraform》持续更新中:terraform_Aws学习零基础入门到最佳实战

    《k8》暂未更新

    docker学习》暂未更新

    《ceph学习》ceph日常问题解决分享

    《日志收集》ELK+各种中间件

    《运维日常》运维日常

    《linux》运维面试100问

    部署过程

    在 MongoDB 中,可以通过以下步骤来部署一个集群:

    1. 安装 MongoDB:首先,需要在每个节点上安装 MongoDB 数据库软件。可以从 MongoDB 官方网站下载适用于操作系统的安装程序,并按照官方文档提供的说明进行安装。

    2. 规划架构:在部署集群之前,需要规划集群的架构和拓扑结构。MongoDB 支持多种集群架构,包括副本集(Replica Set)和分片集群(Sharded Cluster)。副本集用于提供数据冗余和高可用性,而分片集群用于处理大规模数据和负载。

       - 副本集:副本集包含多个节点,其中一个是主节点(Primary),其他节点是从节点(Secondary)。主节点负责处理所有写操作,从节点复制主节点的数据并可用于读操作。可以使用 `rs.initiate()` 命令初始化一个副本集。

       - 分片集群:分片集群由多个分片(Shard)组成,每个分片存储集群的一部分数据。还需要配置一个或多个配置服务器(Config Server)来管理元数据和分片信息。可以使用 `sh.addShard()` 命令将分片添加到集群中。

    3. 配置节点:根据集群架构的选择,配置每个节点的角色和相关参数。

       - 副本集:在每个节点上配置副本集的成员角色,包括主节点、从节点和仲裁节点(Arbiter)。可以使用 `rs.add()` 命令将节点添加到副本集中,并使用 `rs.conf()` 命令进行配置。

       - 分片集群:在每个节点上配置分片集群的角色,包括分片、配置服务器和路由器(Router)。可以使用 `sh.addShard()` 命令将节点添加为分片,并使用 `sh.addShard()` 命令配置分片集群。

    4. 启动集群:在每个节点上启动 MongoDB 服务,并确保节点之间可以相互通信。可以使用启动脚本或命令来启动 MongoDB 服务。

    5. 验证集群:一旦集群启动,可以使用 MongoDB 提供的命令和工具来验证集群的状态和功能。例如,可以使用 `rs.status()` 命令来检查副本集的状态,或使用 `sh.status()` 命令来检查分片集群的状态。

    以上是一个基本的 MongoDB 集群部署过程的概述。根据具体需求和复杂性,可能需要参考 MongoDB 的官方文档并进行更详细的配置和调整。此外,建议在生产环境中进行充分的测试和规划,并根据需求考虑安全性、性能调优和监控等方面的配置。

    最佳实践

    在 MongoDB 中,可以使用配置文件来指定 MongoDB 实例的各种设置。下面是配置文件的基本内容和启动集群的步骤:

    1. 创建配置文件:首先,创建一个文本文件,并将其命名为 mongod.conf(或其他自定义名称)。该文件将包含 MongoDB 实例的配置选项。

    2. 配置文件内容:打开配置文件,并根据需要添加或修改以下配置选项:

      • storage.dbPath:指定数据文件存储的路径。
      • systemLog.path:指定日志文件的路径。
      • net.bindIp:指定 MongoDB 监听的 IP 地址。
      • net.port:指定 MongoDB 监听的端口号。
      • replication.replSetName:对于副本集,指定副本集的名称。
      • sharding.clusterRole:对于分片集群,指定节点的角色,如 configsvrshardsvr 或 mongos
      • sharding.configDB:对于分片集群,指定配置服务器的连接字符串。

      还有其他许多配置选项,可以根据具体需求进行设置。可以参考 MongoDB 的官方文档,以获取更详细的配置选项和说明。

    3. 保存配置文件:保存配置文件,并确保文件名为 mongod.conf

    4. 启动集群:使用以下命令启动 MongoDB 集群:

      mongod --config /path/to/mongod.conf
      

      将 /path/to/mongod.conf 替换为实际的配置文件路径。

      对于分片集群,还需要启动配置服务器和路由器。可以使用以下命令启动配置服务器:

      mongod --configsvr --config /path/to/mongod.conf
      

      使用以下命令启动路由器(mongos):

      mongos --configdb <configdb_connection_string>
      

      将  替换为实际的配置服务器连接字符串。

      启动集群后,每个节点将根据配置文件的设置运行 MongoDB 实例,并开始与其他节点通信和同步数据。

    请注意,以上步骤仅为基本的配置和启动集群过程。在实际情况中,可能需要根据需求进行更详细的配置和调整。建议参考 MongoDB 的官方文档,并在生产环境中进行充分的测试和规划。

    配置案例-副本集群配置:

    1. # mongod.conf
    2. # for documentation of all options, see:
    3. # http://docs.mongodb.org/manual/reference/configuration-options/
    4. # where to write logging data.
    5. systemLog:
    6. destination: file
    7. logAppend: true
    8. path: /home/mongod/mongo-28100/production/log/mongod.log
    9. storage:
    10. dbPath: /home/mongod/mongo-28100/production/data
    11. ##journal配置
    12. journal:
    13. enabled: true
    14. ##是否一个库一个文件夹
    15. directoryPerDB: true
    16. ##数据引擎
    17. engine: wiredTiger
    18. ##WT引擎配置
    19. wiredTiger:
    20. engineConfig:
    21. ##WT最大使用cache(根据服务器实际情况调节)
    22. cacheSizeGB: 2
    23. ##是否将索引也按数据库名单独存储
    24. directoryForIndexes: true
    25. ##表压缩配置
    26. collectionConfig:
    27. blockCompressor: zlib
    28. ##索引配置
    29. indexConfig:
    30. prefixCompression: true
    31. # how the process runs
    32. processManagement:
    33. fork: true # fork and run in background
    34. pidFilePath: /home/mongod/mongo-28100/production/mongod.pid # location of pidfile
    35. timeZoneInfo: /usr/share/zoneinfo
    36. # network interfaces
    37. net:
    38. port: 28888
    39. bindIp: x.x.x.x
    40. #security:
    41. #operationProfiling:
    42. replication:
    43. oplogSizeMB: 50
    44. replSetName: bi
    45. #sharding:
    46. ## Enterprise-Only Options
    47. #auditLog:
    48. #snmp:

  • 相关阅读:
    宝塔控制面板登陆不进去_宝塔磁盘已满
    最简单的java工具(JDK+IDEA)安装教程
    POI导入带有合并单元格的excel,demo实例,直接可以运行
    Docker从入门到上手,看这一篇文章就够了!
    OSPF——基本概念3(外部路由)
    【计算机网络】网络层:外部网关协议BGP
    6.26CF模拟赛E:价格最大化题解
    光流法大全
    grafana展示的CPU利用率与实际不符的问题探究
    白炽灯和节能灯哪个更护眼?分享几款护眼的LED灯
  • 原文地址:https://blog.csdn.net/zerotoall/article/details/133674130