在CentOS上搭建MongoDB集群涉及多个步骤,包括安装MongoDB、配置副本集(Replica Set)以及设置高可用性。以下是详细的步骤指南:
首先,确保所有参与构建副本集的节点上都安装了MongoDB,并且配置了相同的MongoDB版本。
# 安装EPEL仓库 sudo yum install epel-release # 安装MongoDB sudo yum install -y mongodb-org 在每个节点上创建一个配置文件,例如 /etc/mongod.conf。以下是一个基本的配置文件示例:
storage: dbPath: /var/lib/mongo journal: enabled: true systemLog: destination: file logAppend: true path: /var/log/mongodb/mongod.log net: port: 27017 bindIp: 0.0.0.0 replication: replSetName: myReplSet 在每个节点上使用 mongod 命令启动MongoDB实例,并指定配置文件:
sudo mongod --config /etc/mongod.conf 连接到任意一个MongoDB实例,然后运行以下命令初始化副本集:
mongo --host <node1_ip> --port 27017 在mongo shell中运行以下命令:
rs.initiate({ _id: "myReplSet", members: [ { _id: 0, host: "<node1_ip>:27017" }, { _id: 1, host: "<node2_ip>:27017" }, { _id: 2, host: "<node3_ip>:27017" } ] }) 将 <node2_ip> 和 <node3_ip> 替换为其他节点的IP地址。这将创建一个名为 myReplSet 的副本集。
在mongo shell中运行以下命令查看副本集状态:
rs.status() 如果一切正常,你应该能看到副本集中每个节点的状态为 SECONDARY 或 PRIMARY。
在每个分片服务器上重复步骤2到5,初始化分片服务器副本集。
配置服务器存储集群的元数据,通常也是一个副本集。启动配置服务器:
mongod --configsvr --replSet configReplSetName --dbpath configDbPath --port configPort 初始化配置服务器副本集:
mongo --port configPort 在mongo shell中执行:
rs.initiate({ _id : "configReplSetName", configsvr : true, members : [ { _id : 0 , host : "configServer1:configPort" }, { _id : 1 , host : "configServer2:configPort" }, { _id : 2 , host : "configServer3:configPort" } ] }) 在每个mongos实例上安装MongoDB,配置mongos以连接到分片服务器和配置服务器,并启用分片:
mongos --configdb configReplSetName/configServer1:configPort,configServer2:configPort,configServer3:configPort --port mongosPort 连接到mongos实例:
mongo --host mongos.example.com 添加分片:
sh.addShard("shardReplSetName/shardServer1:shardPort,shardServer2:shardPort,shardServer3:shardPort") 选择一个数据库并启用分片:
sh.enableSharding("databaseName") 对集合进行分片:
sh.shardCollection("databaseName.collectionName", { "shardKey" : 1 }) 使用以下命令验证分片集群的状态:
sh.status() 使用以下命令验证配置服务器状态:
sh.status("configsvr") 使用MongoDB的监控工具(如 mongostat 和 mongotop)来监控集群的健康状况和性能。定期检查和维护分片服务器、配置服务器和路由服务器。
通过以上步骤,你可以在CentOS上成功搭建一个MongoDB集群。请根据实际需求调整配置,并参考官方文档保持最佳实践。