温馨提示×

Linux下MongoDB集群搭建步骤

小樊
51
2025-11-10 22:15:32
栏目: 云计算

Linux下MongoDB集群搭建步骤(以副本集为例)

一、准备工作

  1. 环境要求:确保所有节点(服务器)已安装Linux系统(如Ubuntu/CentOS),并配置好静态IP地址;节点间网络互通(关闭防火墙或开放MongoDB默认端口27017)。
  2. 安装MongoDB:在所有节点上安装相同版本的MongoDB(推荐使用官方YUM/APT源安装,避免版本冲突)。
    • Ubuntu/Debian
      sudo apt update && sudo apt install -y mongodb-org
      
    • CentOS/RHEL
      sudo vi /etc/yum.repos.d/mongodb-org.repo  # 添加官方repo
      [mongodb-org-6.0]
      name=MongoDB Repository
      baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/6.0/x86_64/
      gpgcheck=1
      enabled=1
      gpgkey=https://www.mongodb.org/static/pgp/server-6.0.asc
      sudo yum install -y mongodb-org
      

二、配置MongoDB实例(每个节点)

  1. 创建数据与日志目录:为MongoDB实例创建专用目录(以端口27017为例)。
    sudo mkdir -p /var/lib/mongodb/{data,log}
    sudo chown -R mongodb:mongodb /var/lib/mongodb  # 授权MongoDB用户
    
  2. 修改配置文件:编辑/etc/mongod.conf,添加/修改以下关键配置(所有节点配置一致):
    storage:
      dbPath: /var/lib/mongodb/data  # 数据存储路径
      journal:
        enabled: true  # 启用日志(确保数据持久化)
    
    systemLog:
      destination: file
      logAppend: true
      path: /var/lib/mongodb/log/mongod.log  # 日志路径
    
    net:
      port: 27017  # 实例端口
      bindIp: 0.0.0.0  # 绑定所有IP(允许远程访问)
    
    replication:
      replSetName: rs0  # 副本集名称(所有节点必须一致)
    
  3. 启动MongoDB服务:在每个节点上启动服务并设置开机自启。
    sudo systemctl start mongod
    sudo systemctl enable mongod
    sudo systemctl status mongod  # 检查服务状态(确保为"active (running)")
    

三、初始化副本集

  1. 连接任意节点:使用mongo命令连接其中一个节点(如node1的27017端口)。
    mongo --host <node1_ip> --port 27017
    
  2. 初始化副本集:在MongoDB 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" }
      ]
    })
    
  3. 验证副本集状态:执行以下命令查看节点角色(PRIMARY/SECONDARY)。
    rs.status()
    
    • 若输出中显示"stateStr": "PRIMARY",说明初始化成功,其中一个节点成为主节点,其余为从节点。

四、测试高可用性(可选)

  1. 模拟主节点故障:停止主节点的MongoDB服务。
    sudo systemctl stop mongod  # 在主节点上执行
    
  2. 检查新主节点:在其他节点上连接MongoDB,查看副本集状态。
    mongo --host <node2_ip> --port 27017
    rs.status()
    
    • 此时应有一个从节点自动提升为新的主节点("stateStr": "PRIMARY"),验证了高可用性。

五、可选:扩展副本集节点

若需添加新节点,重复二、配置MongoDB实例步骤(使用相同副本集名称rs0),然后在任意节点上执行:

rs.add("<new_node_ip>:27017")  // 添加新节点
rs.status()  # 验证新节点状态(应为SECONDARY

注意事项

  • 副本集至少需要3个节点(奇数个),以保证选举机制正常运行。
  • 生产环境中建议开启认证(security.authorization: enabled)和加密(net.ssl.mode: requireSSL),提升安全性。
  • 若需搭建分片集群(水平扩展),需额外配置配置服务器(configsvr)、分片服务器(shardsvr)和路由服务器(mongos),步骤更复杂,建议参考MongoDB官方文档。

0