温馨提示×

MongoDB在Debian上的集群搭建步骤是什么

小樊
53
2025-06-12 00:24:20
栏目: 云计算

在Debian上搭建MongoDB集群可以分为以下几个步骤:

  1. 安装MongoDB

    • 更新系统软件包:
      sudo apt update && sudo apt upgrade -y 
    • 导入MongoDB官方GPG密钥:
      wget -qO - https://www.mongodb.org/static/pgp/server-6.0.asc | sudo apt-key add - 
    • 创建MongoDB列表文件:
      echo "deb [ archamd64,arm64 ] https://repo.mongodb.org/apt/debian bullseye/mongodb-org/6.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-6.0.list 
    • 更新APT包数据库:
      sudo apt update 
    • 安装MongoDB:
      sudo apt install -y mongodb-org 
  2. 配置MongoDB实例

    • 在每个节点上创建存放数据、配置文件、日志的目录:
      sudo mkdir -p /var/lib/mongodb sudo mkdir -p /var/log/mongodb 
    • 编辑MongoDB配置文件 /etc/mongod.conf,配置必要的参数,例如:
      net: port: 27017 bindIp: 0.0.0.0 replication: replSetName: "rs0" storage: dbPath: /var/lib/mongodb systemLog: destination: file logAppend: true path: /var/log/mongodb/mongod.log 
    • 启动MongoDB服务并设置为开机自启动:
      sudo systemctl start mongod sudo systemctl enable mongod 
  3. 创建并配置副本集

    • 连接到其中一个MongoDB节点的shell:
      mongo --host node1_ip --port 27017 
    • 初始化副本集:
      rs.initiate({ _id: "rs0", members: [ { _id: 0, host: "node1_ip:27017" }, { _id: 1, host: "node2_ip:27017" }, { _id: 2, host: "node3_ip:27017" } ] }) 
    • 在其他节点上添加到副本集:
      rs.add("node4_ip:27017") rs.add("node5_ip:27017") 
  4. 配置分片集群

    • 在每个分片服务器上创建数据目录:
      sudo mkdir -p /data/db 
    • 初始化分片副本集:
      mongo --host shard-server1:27017 rs.initiate({ _id: "shard1", members: [ { _id: 0, host: "shard-server1:27017" }, { _id: 1, host: "shard-server2:27017" }, { _id: 2, host: "shard-server3:27017" } ] }) 
    • 配置配置服务器副本集:
      mongo --host config-server1:27017 rs.initiate({ _id: "configReplSet", configsvr: true, members: [ { _id: 0, host: "config-server1:27017" }, { _id: 1, host: "config-server2:27017" }, { _id: 2, host: "config-server3:27017" } ] }) 
    • 启动mongos路由器:
      mongo --host mongos-host:27017 sh.addShard("shard1/shard-server1:27017,shard-server2:27017,shard-server3:27017") sh.addConfigServer("config-server1:27017,config-server2:27017,config-server3:27017") 
  5. 验证集群状态

    • 使用以下命令检查集群状态:
      sh.status() 

0