ubuntu

MongoDB Ubuntu版如何进行集群搭建

小樊
34
2025-10-02 00:23:34
栏目: 云计算

MongoDB Ubuntu版集群搭建指南(以副本集为例)

MongoDB的“集群”通常指副本集(Replica Set)(高可用性)或分片集群(Sharded Cluster)(水平扩展)。以下分别介绍两者的搭建步骤:

一、副本集集群搭建(基础高可用)

副本集通过多个节点同步数据,实现故障自动转移,适用于需要高可用的场景。

1. 前提条件
2. 安装MongoDB

在所有节点执行以下命令,添加MongoDB官方源并安装:

# 导入MongoDB公钥
wget -qO - https://www.mongodb.org/static/pgp/server-4.4.asc | sudo apt-key add -
# 添加MongoDB源(以Ubuntu 22.04为例,若用其他版本替换“jammy”)
echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu jammy/mongodb-org/4.4 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-4.4.list
# 更新软件包并安装
sudo apt update
sudo apt install -y mongodb-org
3. 配置MongoDB副本集

编辑每个节点的MongoDB配置文件(/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          # 副本集名称(所有节点必须一致)

保存后重启MongoDB服务:

sudo systemctl restart mongod
sudo systemctl enable mongod  # 设置开机自启
4. 初始化副本集

连接到任意一个节点的MongoDB Shell(如节点1的27017端口),执行初始化命令:

mongo --host <节点1_IP> --port 27017

在Shell中输入以下命令(将<节点1_IP><节点2_IP><节点3_IP>替换为实际IP):

rs.initiate({
  _id: "rs0",
  members: [
    { _id: 0, host: "<节点1_IP>:27017" },
    { _id: 1, host: "<节点2_IP>:27017" },
    { _id: 2, host: "<节点3_IP>:27017" }
  ]
})

初始化成功后,会返回{ "ok" : 1 }

5. 验证副本集状态

在Shell中执行以下命令,查看节点角色(PRIMARY/SECONDARY):

rs.status()

正常情况下,会显示3个节点,其中1个为PRIMARY(主节点,处理写请求),2个为SECONDARY(从节点,同步主节点数据)。

二、分片集群搭建(水平扩展)

分片集群将数据分散到多个分片(Shard)上,解决单节点数据量过大的问题,适用于大规模数据存储。

1. 前提条件
2. 配置配置服务器(Config Server)

配置服务器以副本集形式运行,确保元数据高可用。

3. 配置分片服务器(Shard Server)

每个分片也是一个副本集(推荐),以节点1的分片为例:

重复上述步骤,配置其他分片服务器(如shard2ReplSet)。

4. 配置路由服务器(Mongos)

Mongos负责将请求路由到对应的分片,无需数据存储。

5. 添加分片到集群

连接到Mongos Shell:

mongo --port 27017

添加分片(以shard1ReplSet为例):

sh.addShard("shard1ReplSet/<节点1_IP>:27018,<节点2_IP>:27018")

重复上述命令,添加其他分片。

6. 启用数据库和集合分片
7. 验证分片状态

在Mongos Shell中执行以下命令,查看集群状态:

sh.status()

正常情况下,会显示配置服务器、分片服务器及分片信息。

注意事项

以上步骤覆盖了MongoDB Ubuntu版集群搭建的核心流程,可根据实际需求调整节点数量和配置参数。

0
看了该问题的人还看了