MongoDB设置

及时获悉最准确和最新硬件建议,请参考MongoDB官方文档

该系统需要一个MongoDB副本集集群,用于实现数据冗余和高可用性。

对于生产部署,强烈建议使用多节点集群,以确保最佳性能和稳定性。

硬件要求

  • CPU:多核处理器

  • 内存:单个节点至少 4GB

  • 硬盘:建议使用SSD硬盘,以获得更好的性能

MongoDB代理只支持安装在64位操作系统中。

安装MongoDB

遵循MongoDB官方安装文档要求,选择合适你操作系统的安装流程。

配置MongoDB副本集

  1. 编辑MongoDB配置文件

sudo vi /etc/mongod.conf
  1. 添加副本集配置

找到replication部分并添加以下代码:

replication:
   replSetName: "rs0"

此过程将指示MongoDB作为指定副本集 (本示例中为rs0 ) 的一部分启动。

  1. 重启MongoDB,以上配置将生效

sudo systemctl restart mongod
  1. 初始化副本集

启动MongoDB shell,并连接到本地端口27017, (localhost - 27017),运行已安装的MongoDB实例。

如果你的MongoDB服务器运行在不同的主机或端口上,可以分别使用--host--port选项进行指定。

mongosh --host localhost --port 27017

然后,在MongoDB shell中运行下方命令:

rs.initiate()
  1. 验证副本集配置

rs.status()

rs.status()的输出将包括以下信息:

  • Set Name (set):副本集名称

  • 成员 (成员):副本集成员列表 (成员阵列),包含hostname (主机名)、state (状态)、health (健康状况)、uptime (运行时间)、last heartbeat message (最后heartbeat消息) 等详细信息。

以下是一个简化示例,用于展示输出结果:

  set: 'rs0',
  members: [
    {
      _id: 0,
      name: '127.0.0.1:27017',
      health: 1,
      state: 1,
      stateStr: 'PRIMARY',
      uptime: 1202009,
      optime: { ts: Timestamp({ t: 1721191458, i: 1 }), t: Long('1') },
      optimeDate: ISODate('2024-07-17T04:44:18.000Z'),
      lastAppliedWallTime: ISODate('2024-07-17T04:44:18.441Z'),
      lastDurableWallTime: ISODate('2024-07-17T04:44:18.441Z'),
      syncSourceHost: '',
      syncSourceId: -1,
      infoMessage: '',
      electionTime: Timestamp({ t: 1719989484, i: 2 }),
      electionDate: ISODate('2024-07-03T06:51:24.000Z'),
      configVersion: 1,
      configTerm: 1,
      self: true,
      lastHeartbeatMessage: ''
    }
  ]

创建MongoDB凭证

服务器稍后将使用这些确切的凭证连接到队列。

启动MongoDB shell,并连接到本地端口27017, (localhost - 27017),运行已安装的MongoDB实例。

如果你的MongoDB服务器运行在不同的主机或端口上,可以分别使用--host--port选项进行指定。

mongosh --host localhost --port 27017

在MongoDB shell中,运行下方命令创建新用户:

use admin
db.createUser({
  user: "<username>",
  pwd: "<password>",
  roles: [ { role: "readWrite", db: "<database>" } ]
})

你可以自定义<username> (用户名)、 <password>(密码)和<database>(数据库名称)。

服务器监控

可通过Prometheus Blackbox Exporter轮询MongoDB服务器的可用性。

MongoDB特定的Prometheus指标也可以通过任何开源Prometheus MongoDB导出器来公开。

最后更新于