在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集群。请根据实际需求调整配置,并参考官方文档保持最佳实践。