首页主机资讯MongoDB在Ubuntu上的集群配置方法

MongoDB在Ubuntu上的集群配置方法

时间2025-10-16 23:38:03发布访客分类主机资讯浏览1014
导读:MongoDB在Ubuntu上的集群配置方法 一、准备工作 系统要求:确保所有节点运行Ubuntu 18.04及以上版本,且MongoDB版本一致(建议4.0及以上)。 网络配置:所有节点之间需能互相通信,开放MongoDB默认端口(27...

MongoDB在Ubuntu上的集群配置方法

一、准备工作

  1. 系统要求:确保所有节点运行Ubuntu 18.04及以上版本,且MongoDB版本一致(建议4.0及以上)。
  2. 网络配置:所有节点之间需能互相通信,开放MongoDB默认端口(27017)及配置服务器(27019)、mongos(27017)端口。
  3. 节点信息:收集所有节点的IP地址或DNS主机名(生产环境推荐使用DNS主机名,避免IP变更导致配置失效)。

二、安装MongoDB

在所有节点上执行以下命令安装MongoDB官方版本:

sudo apt update
sudo apt install -y mongodb-org

安装完成后,MongoDB服务会自动启动,可通过systemctl status mongod验证状态。

三、配置副本集(高可用基础)

副本集是MongoDB实现高可用的核心组件,至少需要3个节点(1主2从)。

1. 修改配置文件

编辑每个节点的/etc/mongod.conf,添加/修改以下配置:

storage:
  dbPath: /var/lib/mongodb  # 数据存储路径
  journal:
    enabled: true           # 启用日志(确保数据持久化)

systemLog:
  destination: file
  logAppend: true
  path: /var/log/mongodb/mongod.log  # 日志路径

net:
  port: 27017               # 默认端口
  bindIp: 0.0.0.0           # 绑定所有IP(生产环境建议限制为节点IP)

replication:
  replSetName: rs0          # 副本集名称(所有节点需一致)

2. 重启MongoDB服务

sudo systemctl restart mongod
sudo systemctl enable mongod  # 设置开机自启

3. 初始化副本集

连接到任意一个节点(如节点1)的MongoDB shell:

mongo --host <
    node1_ip>
 --port 27017

在shell中执行初始化命令(替换为实际节点IP/主机名):

rs.initiate({

  _id: "rs0",
  members: [
    {
     _id: 0, host: "<
    node1_ip>
:27017" }
,
    {
     _id: 1, host: "<
    node2_ip>
:27017" }
,
    {
     _id: 2, host: "<
    node3_ip>
:27017" }

  ]
}
)

4. 验证副本集状态

rs.status()

正常情况下,会显示所有节点状态为SECONDARY(从节点)或PRIMARY(主节点)。

四、配置分片集群(大规模数据扩展)

分片集群用于水平扩展数据存储,由配置服务器(存储元数据)、分片服务器(存储实际数据)、mongos(路由请求)三部分组成。

1. 配置配置服务器(3节点)

配置服务器存储集群元数据,必须为副本集。

(1)启动配置服务器

在每个配置服务器节点上执行:

mongod --configsvr --replSet configReplSet --dbpath /data/configdb --port 27019

(2)初始化配置服务器副本集

连接到任意配置服务器节点:

mongo --port 27019

执行初始化命令:

rs.initiate({

  _id: "configReplSet",
  configsvr: true,
  members: [
    {
 _id: 0, host: "cfg1.example.com:27019" }
,
    {
 _id: 1, host: "cfg2.example.com:27019" }
,
    {
 _id: 2, host: "cfg3.example.com:27019" }

  ]
}
)

2. 配置分片服务器(至少1个分片,每个分片为副本集)

(1)启动分片服务器

在每个分片节点上执行(以分片1为例):

mongod --shardsvr --replSet shard1 --dbpath /data/shard1 --port 27018

(2)初始化分片副本集

连接到分片1的节点:

mongo --port 27018

执行初始化命令:

rs.initiate({

  _id: "shard1",
  members: [
    {
 _id: 0, host: "shard1a.example.com:27018" }
,
    {
 _id: 1, host: "shard1b.example.com:27018" }
,
    {
 _id: 2, host: "shard1c.example.com:27018" }

  ]
}
)

重复以上步骤,配置其他分片(如shard2、shard3)。

3. 配置mongos(路由服务器)

mongos是应用程序与分片集群的接口,需指向配置服务器副本集。

(1)启动mongos

在mongos节点上执行:

mongos --configdb configReplSet/cfg1.example.com:27019,cfg2.example.com:27019,cfg3.example.com:27019 --port 27017

4. 添加分片到集群

连接到mongos节点:

mongo --port 27017

添加分片(以shard1为例):

sh.addShard("shard1/shard1a.example.com:27018,shard1b.example.com:27018,shard1c.example.com:27018")

重复以上命令,添加所有分片。

5. 启用分片

(1)启用数据库分片

sh.enableSharding("mydatabase")  // 替换为实际数据库名

(2)对集合分片

sh.shardCollection("mydatabase.mycollection", {
 "shardKey": 1 }
    )  // 替换为实际集合名和分片键

注意:分片键选择至关重要,直接影响分片效率(如使用_iduser_id等高频查询字段)。

五、验证集群状态

  1. 查看副本集状态:连接到任意节点,执行rs.status()
  2. 查看分片集群状态:连接到mongos,执行sh.status(),确认所有分片、配置服务器已加入集群。

六、注意事项

  1. 安全性:生产环境需启用身份验证(如SCRAM或x.509证书),并配置防火墙限制访问。
  2. 备份:定期备份数据(可使用mongodump或MongoDB Ops Manager)。
  3. 监控:使用MongoDB Atlas、Prometheus+Grafana等工具监控集群性能。
  4. 分片键优化:避免选择单调递增的字段(如时间戳)作为分片键,防止数据分布不均。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: MongoDB在Ubuntu上的集群配置方法
本文地址: https://pptw.com/jishu/728555.html
MongoDB在Ubuntu上的数据压缩技巧 Ubuntu MongoDB如何配置防火墙规则

游客 回复需填写必要信息