温馨提示×

Ubuntu MongoDB配置有哪些最佳实践

小樊
31
2025-12-10 19:53:05
栏目: 云计算

Ubuntu 上 MongoDB 配置的最佳实践

一 安全加固

  • 启用认证与最小权限:在 /etc/mongod.conf 中开启 security.authorization: enabled,在 admin 库创建高权限管理员(如 rootuserAdminAnyDatabase),并为业务库按需创建仅具 readWrite 等最小权限的用户。连接时通过 –authenticationDatabase admin 指定认证库。
  • 限制网络暴露:默认仅本地访问,设置 net.bindIp: 127.0.0.1;如确需远程,仅放通受控网段或跳板机 IP,避免 bindIp: 0.0.0.0
  • 加密传输:启用 SSL/TLS,配置 net.ssl.mode: requireSSL,提供 PEMKeyFileCAFile,生产环境关闭 sslAllowInvalidCertificates
  • 防火墙与端口治理:使用 ufw/iptables 仅允许白名单来源访问 27017/tcp,并定期审计规则。
  • 系统账户与权限:为 MongoDB 创建专用系统用户(如 mongodb),避免使用 root 运行;按需在 /etc/security/limits.d/ 配置 nofile/nproc 等资源限制。
  • 审计与日志:开启 systemLog.destination: filelogAppend: true,并视合规要求启用审计日志,集中收集与定期审查。

二 性能与存储优化

  • 硬件与文件系统:优先使用 SSD,保证充足 RAM;MongoDB 为内存映射模型,更多内存可显著提升性能。
  • WiredTiger 缓存:在 /etc/mongod.conf 中设置 storage.wiredTiger.engineConfig.cacheSizeGB,通常将可用内存的 70%–80% 分配给缓存(需结合实例上其他进程与系统需求)。
  • 连接与队列:根据业务峰值设置 net.maxIncomingConnections,避免过小导致连接排队、过大引发资源争用。
  • 索引策略:为高频查询路径建立合适索引;使用 explain(“executionStats”) 验证索引命中;定期清理无用索引,必要时重建以降低碎片。
  • 查询优化:避免全表扫描,合理使用 projection 只返回必要字段,分页建议基于范围/游标而非 skip/limit 深翻。
  • 慢查询与监控:开启 operationProfiling 以捕获慢查询,配合 mongostat/mongotop 与第三方监控(如 PMM)持续观测。

三 高可用与备份恢复

  • 部署副本集:对生产环境建议部署 副本集(Replica Set) 以获得数据冗余与自动故障切换,并按需调整副本相关参数与优先级。
  • 定期备份:使用 mongodump/mongorestore 执行定时备份与恢复演练,确保备份可用与恢复时效;重要变更前执行快照备份。
  • 版本与修复:保持 MongoDB 稳定版本,及时应用修复版本与安全补丁。

四 Ubuntu 系统层面的优化

  • 透明大页(THP):禁用 THP 以降低内存管理与页分配抖动,创建 systemd 服务写入 /sys/kernel/mm/transparent_hugepage/enableddefragnever,并设为开机启用。
  • 资源限制:在 /etc/security/limits.d/mongodb.conf 中提升 nofile/nproc(如 64000),防止连接数或线程数受限。
  • 服务与自启:使用 systemctl 管理 mongod 服务,启用开机自启,变更配置后按序 daemon-reloadrestart

五 推荐的 mongod.conf 最小安全模板(按需调整)

systemLog:
  destination: file
  logAppend: true
  path: /var/log/mongodb/mongod.log

storage:
  dbPath: /var/lib/mongodb
  journal:
    enabled: true
  wiredTiger:
    engineConfig:
      cacheSizeGB: 4   # 依据内存与实例共驻进程调整

net:
  port: 27017
  bindIp: 127.0.0.1   # 远程仅放通白名单IP
  ssl:
    mode: requireSSL
    PEMKeyFile: /etc/ssl/mongo.pem
    CAFile: /etc/ssl/ca.pem
    sslAllowInvalidCertificates: false

security:
  authorization: enabled

operationProfiling:
  slowOpThresholdMs: 100
  mode: slowOp

以上模板涵盖认证、本地绑定、TLS 加密与慢查询分析等关键项,可作为上线前的安全基线。

0