阅读量:27
Linux下MongoDB集群搭建步骤(以副本集为例)
一、准备工作
- 环境要求:确保所有节点(服务器)已安装Linux系统(如Ubuntu/CentOS),并配置好静态IP地址;节点间网络互通(关闭防火墙或开放MongoDB默认端口27017)。
- 安装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
- Ubuntu/Debian:
二、配置MongoDB实例(每个节点)
- 创建数据与日志目录:为MongoDB实例创建专用目录(以端口27017为例)。
sudo mkdir -p /var/lib/mongodb/{data,log} sudo chown -R mongodb:mongodb /var/lib/mongodb # 授权MongoDB用户 - 修改配置文件:编辑
/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 # 副本集名称(所有节点必须一致) - 启动MongoDB服务:在每个节点上启动服务并设置开机自启。
sudo systemctl start mongod sudo systemctl enable mongod sudo systemctl status mongod # 检查服务状态(确保为"active (running)")
三、初始化副本集
- 连接任意节点:使用
mongo命令连接其中一个节点(如node1的27017端口)。mongo --host--port 27017 - 初始化副本集:在MongoDB shell中执行初始化命令(替换为实际节点IP)。
rs.initiate({ _id: "rs0", // 副本集名称(与配置文件一致) members: [ { _id: 0, host: ":27017" }, { _id: 1, host: ":27017" }, { _id: 2, host: ":27017" } ] }) - 验证副本集状态:执行以下命令查看节点角色(PRIMARY/SECONDARY)。
rs.status()- 若输出中显示
"stateStr": "PRIMARY",说明初始化成功,其中一个节点成为主节点,其余为从节点。
- 若输出中显示
四、测试高可用性(可选)
- 模拟主节点故障:停止主节点的MongoDB服务。
sudo systemctl stop mongod # 在主节点上执行 - 检查新主节点:在其他节点上连接MongoDB,查看副本集状态。
mongo --host--port 27017 rs.status() - 此时应有一个从节点自动提升为新的主节点(
"stateStr": "PRIMARY"),验证了高可用性。
- 此时应有一个从节点自动提升为新的主节点(
五、可选:扩展副本集节点
若需添加新节点,重复二、配置MongoDB实例步骤(使用相同副本集名称rs0),然后在任意节点上执行:
rs.add(":27017" ) // 添加新节点
rs.status() # 验证新节点状态(应为SECONDARY)
注意事项:
- 副本集至少需要3个节点(奇数个),以保证选举机制正常运行。
- 生产环境中建议开启认证(
security.authorization: enabled)和加密(net.ssl.mode: requireSSL),提升安全性。 - 若需搭建分片集群(水平扩展),需额外配置配置服务器(configsvr)、分片服务器(shardsvr)和路由服务器(mongos),步骤更复杂,建议参考MongoDB官方文档。